Почему элементы "встроенного блока" в переполнении div "nowrap"?
следующий код вызывает переполнение # headline #wrapper, и я не понимаю, почему это происходит.
HTML-код:
<div id="wrapper">
<div id="logo">
<img src="/test.png">
</div>
<div id="headline">
<h1>This headline overflows its wrapping div. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</h1>
</div>
</div>
CSS:
#wrapper {
background: #fea;
white-space: nowrap;
width: 50%;
}
#logo {
display: inline-block;
vertical-align: middle;
}
#logo img {
width: 6em;
}
#headline {
display: inline-block;
vertical-align: middle;
white-space: normal;
}
пример кода:http://jsfiddle.net/XjstZ/21/ или http://tinkerbin.com/XvSAEfrK
4 ответов
как следует из названия, встроенные блоки участвуют в встроенном макете, что означает, что они действуют так же, как встроенные элементы и текст. white-space: nowrap
вызывает переполнение текста в элементе, предотвращая его обертывание; то же самое происходит с встроенными блоками. Все очень просто.
тот факт, что #headline
и white-space: normal
не влияет на собственный макет. Элемент white-space
свойство влияет на макет его содержимого, а не на себя, даже если собственный ящик элемента является встроенным уровнем.
вам нужно использовать "overflow: hidden" в элементе оболочки
#wrapper {
background: #fea;
white-space: nowrap;
width: 50%;
overflow: hidden;
}
я обновил ваш образец в jsfiddle http://jsfiddle.net/XjstZ/72/
установка ширины для элемента заголовка устраняет проблему.
#headline {
display: inline-block;
vertical-align: middle;
width: 60%;
}
он реагирует, если и обертка изображения, и изображение имеют свою максимальную ширину.
#logo {
display: inline-block;
vertical-align: middle;
max-width: 35%;
}
#logo img {
width: 6em;
max-width: 100%;
}
этот контент обернуть из-за white-space: normal;
.
на пробел свойство CSS определяет, как обрабатывается пробел внутри элемента. Чтобы заставить слова ломаться внутри себя, используйте overflow-wrap
, word-break
, или дефисы вместо этого.
Если вы хотите ограничить это с #wrapper
чем вы можете ограничить свойство overflow для div.Если вы используете white-space: nowrap;
для div это очистить текст переполнения и показать div в одной строке (строке).
#wrapper {
background: #fea;
width: 50%;
overflow: hidden;
}
#logo {
display: inline-block;
vertical-align: middle;
}
#logo img {
width: 6em;
}
#headline {
display: inline-block;
vertical-align: middle;
}