#html #css
Вопрос:
Я извлек уроки из подобных вопросов , которые min-width
всегда бьют max-width
, что прискорбно, потому что я думаю, что современные веб-сайты в основном требуют обратного.
Мне часто приходится прибегать к медиа-запросам, чтобы решить приведенную ниже проблему, но я надеюсь, что есть элегантное/лучшее решение:
Скажи, что у меня есть div
:
<div>Words on a page. Words on a page. Words on a page. Words on a page.</div>
Я часто хочу, чтобы эта div
ширина была не менее 500 пикселей, если она не превышает 90% ширины экрана. Это может быть достигнуто с помощью:
div {
min-width: 500px;
max-width: 90vw;
}
Теперь проблема с вышеизложенным заключается в том, что он переполняется на мобильных устройствах.
Я сталкиваюсь с этим все время, когда у меня есть список объектов, и говорю, что элементы можно удалить, а затем, если удалить самый широкий элемент, весь дизайн меняется по мере его изменения. Чтобы свести к минимуму этот эффект, я хочу иметь ширину по умолчанию и позволять ей расширяться в редких случаях по мере необходимости.
Комментарии:
1. Похоже, вам нужен «отзывчивый дизайн». Для этого существуют всеобъемлющие, зрелые методы.
2. «Теперь проблема с вышеизложенным в том, что он никогда не расширяется более чем на 500 пикселей». — почему он должен быть с явно указанной шириной 500 пикселей? Похоже, вы действительно хотите
min-width: 500px
туда попасть — и я не понимаю, в чем должна быть проблема с этим? Что он не опускается ниже 500 пикселей, если ширина экрана этого не позволяет? Ну, это проблема, с которой вы столкнулись бы с обоимиwidth
иmin-width
одним и тем же способом, поэтому для меньшего разрешения экрана для этого потребуется запрос мультимедиа, чтобы установить другую (минимальную)ширину в любом случае.3. @CBroe справедливый момент, я обновил его.
4. Я прочитал это немного по-другому. Для меня просто означает «не менее 500 пикселей, но не более 90% ширины экрана»
width: 90vw
. Потому что «по крайней мере 500 пикселей» может означать любую ширину вообще, как только вы добавите свое условие. Это звучит почти так, как будто ты действительно хочешь этогоwidth: 90vw; max-width: *some upper bound*;
.5. Я думаю, что вам нужна фиксированная минимальная ширина, но зависящая от условия (и это условие-минимальная ширина экрана) — и основным инструментом для выражения таких условий являются просто медиа-запросы. Но, возможно, вы можете собрать что-то из min()/max (), что соответствует той же цели …? developer.mozilla.org/en-US/docs/Web/CSS/min()
Ответ №1:
Сделайте это, как показано ниже:
div {
min-width: min(500px, 100%); /* will take less than 500px if there is an overflow */
max-width: 90vw;
border:1px solid;
}
<div>Words on a page. Words on a page. Words on a page. Words on a page.</div>
Комментарии:
1. Боже мой, это идеально, я настроил его
min-width: min(500px, 100%); width: fit-content;
Давным-давно , когда впервые узнал о сетках, я пробовалmin
max
и знакомился с элементами помимо сеток, но не получил никакой радости. Благодаря тому, что я увидел, как вы это сделали, я протолкнулся и обнаружил, что width: fit-контент является виновником. Мой сброс CSS устанавливает все дивы на 100%. Спасибо!!!
Ответ №2:
Вы хотите установить минимальную ширину не более 90% ширины экрана, но если экран достаточно широкий, то 500 пикселей.
Если да, то, может быть, попробуем:
div {
min-width: min(500px, 90vw);
display: inline-block;
background-color: lime;
}
<div>Some text </div>