#html #css-float #css
#HTML #css-float #css
Вопрос:
У меня есть этот html:
<div id="subNav"></div>
<div id="feed"></div>
<div id="feedBar"></div>
Я переместил все эти оставленные разделы. Я устанавливаю ширину #subNav
и #feedBar
, но на #feed
я устанавливаю его минимальную ширину . Он принимает минимальную ширину, даже если окно больше. Есть ли какой-либо способ, которым с помощью floating вы можете заставить минимальную ширину работать? Я пытаюсь создать гибкий макет на странице.
Комментарии:
1. Плавающий элемент уменьшится до размера его содержимого, или
width
,min-width
илиmax-width
(в зависимости от того, что определено).2. @David Есть ли какой-либо способ переопределить это поведение? с помощью javascript?
3. да. Конечно. Однако вам нужно определить, какой вы хотите видеть ширину. С точки зрения экрана или его родительского элемента? Также: можете ли вы определить, что вы подразумеваете под «заставить
min-width
работать»?4. Вы, конечно, могли бы использовать JavaScript, чтобы установить ширину #feed равной ширине окна минус ширины #subNav и #feedBar. Тогда вы также хотели бы установить обработчик изменения размера в окне, чтобы при необходимости повторно установить ширину #feed . Но есть много разных способов подойти к этому, многие из которых не требуют JavaScript. Загуглите «Макет из 3 столбцов с жидким центром» и найдите тот, который имеет смысл для вас и легко интегрируется с тем, что у вас есть на данный момент.
5. @David Что я имею в виду под «заставить
min-width
работать», так это сделать так, чтобы при настройке окна лента заполняла промежуточное пространство. Я хочу, чтобы ширина была не менее 500 пикселей и занимала весь экран. Ширина#subNav
и#feedBar
равны 175px и 250px соответственно.
Ответ №1:
В следующем ответе используется решение на JavaScript в ответ на комментарий @Chromedude (к исходному вопросу):
@David Есть ли какой-либо способ переопределить это поведение? с помощью javascript?
Я уверен, что есть гораздо более простой способ сделать это (конечно, с помощью библиотеки JavaScript), но это лучшее, что я смог придумать в это время утра (в Великобритании):
var feed = document.getElementById('feed');
var width = document.width;
var feedBarWidth = document.getElementById('feedBar').clientWidth;
var subNavWidth = document.getElementById('subNav').clientWidth;
feed.setAttribute('style', 'width: ' (width - (subNavWidth feedBarWidth)) 'px');
Используя jQuery (просто как предложение относительно простоты, предлагаемой библиотекой):
var bodyWidth = $(document).width();
var subNavWidth = $('#subNav').width();
var feedBarWidth = $('#feedBar').width();
$('#feed').css('width', bodyWidth - (subNavWidth feedBarWidth));
Ответ №2:
Используйте сеточную систему, такую как в Foundation 3. При размещении на div
представляющем элемент сетки, min-width
работает просто отлично.
Чтобы заставить min-width
работать без сетки, используйте правило CSS, которое вставляет невидимый псевдоэлемент с желаемой минимальной шириной абзаца.
p:before {
content: "";
width: 10em;
display: block;
overflow: hidden;
}
Более подробная информация находится в источнике, где я узнал об этом.