У меня такая разметка:
<li id="CN2787">
<img class="fav_star" src="images/fav.png">
<span>Text, text and more text</span>
</li>
Я хочу, чтобы, если текст переносится, он не попадает в «столбец» изображения. Я знаю, что могу сделать это с помощью table
(что я и делал), но по этой причине это не работает .
Я безуспешно пробовал следующее:
li span {width: 100px; margin-left: 20px}
.fav_star {width: 20px}
Я тоже пробовал float: right
.
Спасибо.
РЕДАКТИРОВАТЬ: Я хочу, чтобы это выглядело так:
IMG Text starts here and keeps going... and
wrap starts here.
Не так:
IMG Text starts here and keeps going... and
wrap starts in the space left for the image.
white-space: nowrap;
inli span {...}
, но у меня сложилось впечатление, что вы пытаетесь сделать что-то ещеОтветы:
span
Элемент является встроенный элемент, вы не можете изменить его ширину в CSS.Вы можете добавить следующий CSS в свой диапазон, чтобы вы могли изменять его ширину.
display: block;
Другой способ, который обычно имеет больше смысла, - использовать
<p>
элемент в качестве родительского для вашего<span>
.<li id="CN2787"> <img class="fav_star" src="images/fav.png"> <p> <span>Text, text and more text</span> </p> </li>
Поскольку
<p>
этоblock
элемент, вы можете установить его ширину с помощью CSS, ничего не меняя.Но в обоих случаях, поскольку теперь у вас есть блочный элемент, вам нужно будет переместить изображение, чтобы весь текст не располагался ниже изображения.
li p{width: 100px; margin-left: 20px} .fav_star {width: 20px;float:left}
PS Вместо того
float:left
на изображении, вы можете также положитьfloat:right
на ,li p
но в этом случае вам также необходимоtext-align:left
правильно выровнять текст.PSS Если вы выбрали первое решение - не добавлять
<p>
элемент, ваш CSS должен выглядеть так:li span{width: 100px; margin-left: 20px;display:block} .fav_star {width: 20px;float:left}
источник
span
наp
элемент. Тогда как раз эти два , казалось, сделать трюк:li p {margin-left: 40px} .fav_star {float: left}
. Ширина изображения устанавливается самим изображением,p
элемент автоматически является a,block
и я оставил ширину в покое. Спасибо за это.display:block
вы можете использовать a,div
поскольку он для этого (или использовать,p
как вы также предлагаете). Нет необходимости в двойном переносе текста - если вы используете,p
вы можете потерятьspan
.div
в данном случаеp
больше смысла.span
Для меня потеря в тривиальной ситуации зависит от того, как вы размещаете свой контент.<span>
в<p>
колдовство прямо из Хогварца! Красиво работает!Очень простой ответ на эту проблему, которая, кажется, улавливает множество людей:
<img src="url-to-image"> <p>Nullam id dolor id nibh ultricies vehicula ut id elit.</p> img { float: left; } p { overflow: hidden; }
См. Пример: http://jsfiddle.net/vandigroup/upKGe/132/
источник
span
(случай OP).display: block
Потребовалось бы дляspan
. Но, сохраняя это, я согласен, что это гораздо более элегантное решение. Если кому-то интересно, в чем заключается магияoverflow: hidden
, см. Мой ответ ниже.Для тех, кому нужна дополнительная информация, вот небольшая статья, объясняющая, почему это
overflow: hidden
работает. Это связано с так называемым контекстом форматирования блока . Это часть спецификации W3C (т. Е. Не взлом), и в основном это область, занятая элементом с потоком блочного типа.Каждый раз, когда он применяется,
overflow: hidden
создается новый контекст форматирования блока. Но это не единственное свойство, способное вызвать такое поведение. Цитата из презентации Фионы Чан из Sydney Web Apps Group:источник
Если вы хотите,
margin-left
чтобыspan
элемент работал над элементом, вам нужно его сделатьdisplay: inline-block
илиdisplay:block
тоже.источник
vertical-align: top;
на изображении.настройка
display:flex
текста у меня сработала.источник
overflow:auto
. Я уверен, что это работает не во всех ситуациях, но и у меня это сработало.Оберните div вокруг изображения и диапазона и добавьте в CSS следующее:
HTML
<li id="CN2787"> <div><img class="fav_star" src="images/fav.png"></div> <div><span>Text, text and more text</span></div> </li>
CSS
#CN2787 > div { display: inline-block; vertical-align: top; } #CN2787 > div:first-of-type { width: 35%; } #CN2787 > div:last-of-type { width: 65%; }
МЕНЬШЕ
#CN2787 { > div { display: inline-block; vertical-align: top; } > div:first-of-type { width: 35%; } > div:last-of-type { width: 65%; } }
источник