#css
#css
Вопрос:
У меня есть следующая скрипка: https://jsfiddle.net/n2fole00/x200bfjs /
Как вы можете видеть, если текст панели не превышает размер страницы, панели идеально подходят пропорционально друг другу, иначе возникает нежелательный эффект несоответствия высоты панелей или текст вытекает из панелей. Присвоение панелям свойства min-height устраняет выделение текста, но не устраняет несоответствие высоты столбцов.
Любой совет? Спасибо.
HTML
<div class="hm-left">
<div class="cafe hm-panel">
<h1>Cafe</h1>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit...
</p>
</div>
<div class="restaurant hm-panel">
<h1>Restaurant</h1>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit...
</p>
</div>
</div>
<div class="hm-right">
<div class="services hm-panel"><h1>Services</h1>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit...
</p>
</div>
</div>
CSS
body, html {
width: 100%;
height: 100%;
margin:0;
color: white;
}
.hm-panel {
padding: 15px;
}
.hm-left {
width: 50%;
height: 100%;
float:left;
}
.hm-right {
width: 50%;
height: 100%;
float:right;
}
.cafe {
background-color: #6B8E23;
height: 50%;
}
.restaurant {
background-color: brown;
height: 50%;
}
.services {
background-color: #FF8C00;
height: 100%;
}
Ответ №1:
Я добавил box-sizing: border-box
также overflow-y: auto;
к каждому из ваших контейнеров, чтобы получить точные размеры для поля, а также сохранить текст видимым внутри контейнера.
Вот скрипка:
https://jsfiddle.net/x200bfjs/2/
Обновить:
Чтобы сохранить overflow: auto
на уровне страницы, мне пришлось изменить структуру html. Я поместил все в контейнер и дал ему оранжевый фон для служб. Надеюсь, это не проблема. Вот скрипка:
Комментарии:
1. Спасибо за пример. Это было хорошее решение, но я не пояснил, что переполнение должно быть только на уровне страницы (не на уровне панели).
2. Посмотрите мое обновление, которое даст вам то, что вы ищете.
3. Еще раз, это была хорошая работа, но я понятия не имею, какой будет длина текста, поэтому, если текст служб превышает высоту двух других панелей, оранжевый фон отображается с левой стороны.
4. О, ты все же подал мне отличную идею. С небольшим JS я могу изменить фон в зависимости от того, какая сторона выше…
if ($('.hm-left').height() < $('.hm-right').height()) { $("body").css("background-color","brown"); } else { $("body").css("background-color","#FF8C00"); }
Если кто-то не подключится к решению, не основанному на скриптах, я отмечу ваш ответ как решение.5. потрясающе, рад, что он хотя бы указал вам правильное направление!
Ответ №2:
У меня все еще были некоторые проблемы с моим ответом на предложение Джейка Зейца, но у меня есть следующее, которое, похоже, работает для всех разных сценариев — например, содержимое панелей меньше высоты документа, и то же самое, когда оно больше.
Решение состояло в том, чтобы немного изменить CSS с помощью некоторых min-height
свойств, а также манипулировать столбцами hm-left
и hm-right
, чтобы они соответствовали высоте документа с помощью jQuery.
CSS
body, html {
width: 100%;
min-height: 100%;
margin:0;
color: white;
}
.hm-left {
width: 50%;
min-height: 100%;
float:left;
}
.hm-right {
width: 50%;
min-height: 100%;
float:right;
}
.cafe {
background-color: #6B8E23;
height: 50%;
}
.restaurant {
background-color: brown;
height: 50%;
}
.services {
background-color: #FF8C00;
height: 100%;
}
jQuery
var doc_height = $(document).height();
$(".hm-left").css("height", doc_height "px");
$(".hm-right").css("height", doc_height "px");