Как я могу получить следующую структуру без использования таблиц или JavaScript? Белые границы представляют края div и не имеют отношения к вопросу.
Размер области посередине будет меняться, но он будет иметь точные значения пикселей, и вся структура должна масштабироваться в соответствии с этими значениями. Чтобы упростить его, мне нужен способ установить ширину "100% - n px" для верхних, средних и нижних средних элементов.
Я был бы признателен за чистое кросс-браузерное решение, но в случае, если это невозможно, CSS-хаки подойдут.
Вот бонус. Другая структура, с которой я боролся, и в итоге я использую таблицы или JavaScript. Это немного отличается, но вводит новые проблемы. Я в основном использовал его в оконной системе на основе jQuery, но я бы хотел, чтобы макет не использовался в скрипте и управлял размером только одного элемента (среднего).
Ответы:
Вы можете использовать вложенные элементы и отступы, чтобы получить левый и правый край на панели инструментов. Ширина по умолчанию
div
элемента по равнаauto
, что означает, что он использует доступную ширину. Затем вы можете добавить отступ к элементу, и он по-прежнему не выходит за пределы доступной ширины.Вот пример, который вы можете использовать для размещения изображений в виде левого и правого скругленных углов, а также центральное изображение, которое повторяется между ними.
HTML:
CSS:
источник
>
оператора была еще недостаточно хороша, чтобы быть надежной.calc
IE 8 или в текущих версиях Anroid Browser или Opera нет поддержки . caniuse.com/#search=calcНовый способ, с которым я только что наткнулся: css
calc()
:Источник: CSS ширина 100% минус 100px
источник
Хотя ответ Гуффы работает во многих ситуациях, в некоторых случаях вы можете не захотеть, чтобы левая и / или правая части отступа были родительскими для центрального элемента div. В этих случаях вы можете использовать контекст форматирования блока в центре и перемещать div-отступы влево и вправо. Вот код
HTML:
CSS:
Мне кажется, что эта иерархия элементов более естественна по сравнению с вложенными вложенными элементами div и лучше отражает то, что находится на странице. Из-за этого границы, отступы и поля могут быть применены нормально ко всем элементам (то есть: эта «естественность» выходит за рамки стиля и имеет последствия).
Обратите внимание, что это работает только для элементов div и других элементов, которые совместно используют свойство «по умолчанию заполнять 100% ширины». Входные данные, таблицы и, возможно, другие потребуют от вас обернуть их в контейнерный блок и добавить немного больше CSS, чтобы восстановить это качество. Если вам не повезло оказаться в такой ситуации, свяжитесь со мной, и я откопаю css.
jsfiddle здесь: jsfiddle.net/RgdeQ
Наслаждайтесь!
источник
Вы можете использовать макет Flexbox . Вам нужно установить
flex: 1
на элемент, который должен иметь динамическую ширину или высотуflex-direction: row and column
соответственно.Динамическая ширина:
HTML
CSS
Вывод:
Показать фрагмент кода
Динамическая высота:
HTML
CSS
Вывод:
Показать фрагмент кода
источник
Обычный способ сделать это, как обрисовано в общих чертах Guffa, вложенные элементы. Немного грустно, когда нужно добавить дополнительную разметку, чтобы получить нужные вам крючки, но на практике div-обертка здесь или там никому не повредит.
Если вы должны сделать это без дополнительных элементов (например, когда у вас нет контроля над разметкой страницы), вы можете использовать box-size , который имеет довольно приличную, но не полную или простую поддержку браузера. Хотя, скорее, веселее, чем полагаться на сценарии.
источник
Может быть, я тупой, но разве здесь не очевидное решение?
Другой способ, который я понял в chrome, еще проще, но, черт возьми, это хак!
Одно это должно заполнить остальную часть строки горизонтально, как это делают ячейки таблицы. Тем не менее, у вас возникают некоторые странные проблемы, когда он превышает 100% своего родителя, хотя установка ширины в процентное значение исправляет это.
источник
Мы можем добиться этого, используя flex-box очень легко.
Если у нас есть три элемента, такие как Header, MiddleContainer и Footer. И мы хотим задать некоторую фиксированную высоту для верхнего и нижнего колонтитула. тогда мы можем написать так:
Для React / RN (по умолчанию «display» - это flex, а «flexDirection» - как столбец), в веб-CSS необходимо указать контейнер тела или контейнер, содержащий их, как display: «flex», flex-direction: «column». как ниже:
источник
Что, если ваш div оборачивания был равен 100%, и вы использовали заполнение для количества пикселей, то если заполнение # должно быть динамическим, вы можете легко использовать jQuery для изменения количества заполнения, когда ваши события запускаются.
источник
У меня была похожая проблема, когда я хотел, чтобы баннер в верхней части экрана имел одно изображение слева и повторяющееся изображение справа от края экрана. В итоге я решил это так:
CSS:
Ключ был правильным тегом. Я в основном указываю, что я хочу, чтобы это повторялось от 131px слева до 0px справа.
источник
В некоторых контекстах вы можете использовать настройки полей для эффективного указания «100% ширины минус N пикселей». Смотрите принятый ответ на этот вопрос .
источник