Ширина равна содержанию
Я испытываю некоторые проблемы со свойством ширины CSS. У меня есть несколько абзацев внутри div. Я хотел бы сделать ширину абзацев равной их содержанию, чтобы их зеленый фон выглядел как метка для текста. То, что я вместо того, чтобы сделать состоит в том, что пункты наследуют ширине узел разд отец, который шире.
#container {
width: 30%;
background-color: grey;
}
#container p {
background-color: green;
}<div id="container">
<p>Sample Text 1</p>
<p>Sample Text 2</p>
<p>Sample Text 3</p>
</div> 13 ответов:
по умолчанию
pтегиblockэлементы, что означает, что они берут 100% от родителяwidth.вы можете изменить их свойство отображения с:
#container p { display:inline-block; }но это ставит элементы бок о бок.
чтобы сохранить каждый элемент на своей собственной линии вы можете использовать:
#container p { clear:both; float:left; }(если вы используете float и должны очистить после плавающих элементов, см. Эту ссылку для различных методов: http://css-tricks.com/all-about-floats/)
демо: http://jsfiddle.net/CvJ3W/5/
Edit
если вы идете на решение с
display:inline-blockно хотите сохранить каждый элемент в одной строке, вы можете просто добавить<br>тег после каждого из них:<div id="container"> <p>Sample Text 1</p><br/> <p>Sample Text 2</p><br/> <p>Sample Text 3</p><br/> </div>новая демонстрация: http://jsfiddle.net/CvJ3W/7/
добавлять
display: inline-block;доpстиль должен взять из него:#container p{ background-color: green; display: inline-block; }
раствор
inline-blockзаставляет вас вставить<br>после каждого элемента.
Решение сfloatзаставляет вас обернуть все элементы с помощью div "clearfix".еще одно элегантное решение-использовать
display: tableдля элементов.С помощью этого решения вам не нужно вставлять разрывы строк вручную (например, с
inline-block), вам не нужна обертка вокруг ваших элементов (например, с поплавками), и вы можете центрировать свой элемент, если вы необходимость.
Set
display:inline-blockа затем настроить поля.скрипка здесь:http://jsfiddle.net/Q2MrC/
вы можете использовать любой из ниже :-
1) дисплей: inline-block:
http://jsbin.com/feneni/edit?html, css, js, выход
раскомментируйте строку
float:left; clear:bothи вы обнаружите, что родительский контейнер рухнул.
2) с помощью display: table
вы можете использовать flex для достижения этой цели:
.container { display: flex; flex-direction: column; align-items: flex-start; }
flex-startавтоматически отрегулирует ширину детей к их содержанию.
при использовании
display: inline-block. Мой div будет заполнять ширину экрана, когда дочерние элементы имеют ширину%родитель. Если кто-то еще ищет решение этой проблемы и не возражает использовать пропорцию экрана вместо родительской пропорции, замените%Сvwдля ширины (ширина окна просмотра), илиvhдля высоты (Высота видового экрана).
Если вы используете
display: flexпо какой-либо причине и необходимости в браузерах, таких как Edge/IE, вы можете вместо этого использовать:дисплей: inline-flex
С поддержкой браузера ~97% для встроенного гибкого трубопровода.
используя
display:inline-block;он будет работать только для правильного предложения с помещения как#container { width: 30%; background-color: grey; overflow:hidden; margin:10px; } #container p{ display:inline-block; background-color: green; }<h5>Correct sentence with spaces </h5> <div id="container"> <p>Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1</p> </div> <h5>No specaes (not working )</h5> <div id="container"> <p>SampleSampleSampleSampleSampleSampleSampleSampleSampleSampleSamplesadasdsadasdasdsa</p> </div>почему бы не использовать
word-wrap: break-word;? это сделано, чтобы позволить длинным словам быть в состоянии сломать и обернуть на следующую строку.#container { width: 30%; background-color: grey; overflow:hidden; margin:10px; } #container p{ word-wrap: break-word; background-color: green; }<h5> Correct sentence with spaces </h5> <div id="container"> <p>Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1 Sample Text 1</p> </div> <h5>No specaes</h5> <div id="container"> <p>SampleSampleSampleSampleSampleSampleSampleSampleSampleSampleSamplesadasdsadasdasdsa</p> </div>
Comments