float | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS | |
6.0+ | 8.0+ | 1.0+ | 3.5+ | 3.0+ | 1.0+ | 1.0+ | 1.0+ |
Краткая информация
Значение по умолчанию | none |
---|---|
Наследуется | Нет |
Применяется | Ко всем элементам (за исключением абсолютно позиционированных) |
Ссылка на спецификацию | http://www.w3.org/TR/CSS21/visuren.html#propdef-float |
Версии CSS
Описание
Определяет, по какой стороне будет выравниваться элемент, при этом остальные элементы будут обтекать его с других сторон. Когда значение свойства float равно none, элемент выводится на странице как обычно, при этом допускается, что одна строка обтекающего текста может быть на той же линии, что и сам элемент.
Синтаксис
float: left | right | none | inherit
Значения
- left
- Выравнивает элемент по левому краю, а все остальные элементы, вроде текста, обтекают его по правой стороне.
- right
- Выравнивает элемент по правому краю, а все остальные элементы обтекают его по левой стороне.
- none
- Обтекание элемента не задается.
- inherit
- Наследует значение родителя.
Пример
HTML5CSS 2.1IE 9Cr 15Op 11Sa 5Fx 8
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>float</title>
<style>
.layer1 {
float: left; /* Обтекание по правому краю */
background: #fd0; /* Цвет фона */
border: 1px solid black; /* Параметры рамки */
padding: 10px; /* Поля вокруг текста */
margin-right: 20px; /* Отступ справа */
width: 40%; /* Ширина блока */
}
</style>
</head>
<body>
<div>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh
euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.
</div>
<div>
Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel
illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio
dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te
feugat nulla facilisi.
</div>
</body>
</html>
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства float
Объектная модель
[window.]document.getElementById(«elementID»).style.styleFloat
[window.]document.getElementById(«elementID»).style.cssFloat
Браузеры
В браузере Internet Explorer 6 наблюдается ошибка с удвоением значения левого или правого отступа для плавающих элементов, вложенных в родительские элементы. Удваивается тот отступ, который прилегает к стороне родителя. Проблема обычно решается добавлением display: inline для плавающего элемента. Также в этом браузере добавляется отступ 3px (так называемый «трехпиксельный баг») в направлении, заданном значением float.
Internet Explorer до версии 7.0 включительно не поддерживает значение inherit.
Обтекание текстом вокруг блока div (в середине текста), используя css
Как я могу обернуть текст вокруг div? Оставляя div в середине текстового тела, используя css?
Набросок:
text text text text
text text text text
text text text text
text text text text
+-------+ text text
+ + text text
+ div + text text
+ + text text
+-------+ text text
text text text text
text text text text
text text text text
text text text text
NOTE: с точки зрения HTML, div идет перед текстом.
<div></div> [... text...]
css
html
text
css-float Поделиться Источник Igor Parra 30 мая 2012 в 12:48
3 ответа
- Обтекание текстом вокруг блока div с CSS
Я пытаюсь заставить текст обернуться вокруг div в моем XHTML. Мой XHTML выглядит так…. <div id=cont-content> <p>content</p> <p>more content</p> <div id=content-sidebar> BLALALALALLAAL </div> </div> И мой CSS выглядит так… #content-sidebar {…
- обтекание текста вокруг изображения IE
Я немного поискал решение для обертывания текста вокруг изображения и наткнулся на JQSlickWrap. jQuery плагин для обертывания текста вокруг изображений + поддержка IE6 Но это не работает в IE. Есть ли другой способ обернуть текст вокруг изображения? Или это просто невозможно для IE еще?. …..
7
Другие ответы верны в том , что вам нужно будет поместить <div>
(например, div { float: left; margin: 10px 0 10px 10px; }
, однако имейте в виду, что для того, чтобы <div>
появился в середине вашего контента, он должен быть в самом контенте .
При использовании поплавка, подобного этому, вы должны просто помнить, что вы должны вставить <div>
прямо перед содержимым, которое вы хотите обернуть вокруг него. Итак, в этом случае у вас есть абзац текста, вставьте <div>
, а затем еще пару абзацев. Когда вы пустите <div>
, он появится в середине вашего контента.
Поделиться chipcullen 30 мая 2012 в 13:00
3
Вам нужно, чтобы ваш div плавал. Например, вы можете стилизовать div следующим образом:
float:left; margin:10px; //To leave a gap around the div
Поделиться Undefined 30 мая 2012 в 12:56
2
что вам нужно, так это float property
. Попробуйте этот пример ниже:
.youDiv {
float: left;
}
Поделиться Simon Dorociak 30 мая 2012 в 12:54
- Как вставить окружение LaTeX вокруг блока текста в emacs?
Я использую emacs с cdlatex-mode для редактирования файлов LaTeX. Я хотел бы знать, как вставить среду LaTeX вокруг блока текста, который уже написан, так что \begin{} идет перед выделенным текстом, а \end{} идет после выделенного текста. Я пытался использовать функцию cdlatex-environment, но при…
- CSS обтекание текста вокруг изображения
для этого сайта, который я строю, мне нужно отобразить контент определенным образом, у меня есть миниатюра, два скриншота и блок текста около 500 слов.
Мне нужно, чтобы текст был обернут вокруг моего миниатюры и скриншотов. В настоящее время я использую PHP substring , чтобы разбить содержимое…
Похожие вопросы:
Переполнение текста на div с помощью встроенного блока
У меня есть встроенный блок внутри div, который имеет некоторое текстовое содержимое. Текстовое содержимое переполняется, если дисплей настроен на встроенный… http://jsfiddle.net/76d9twoy / HTML…
Обтекание текстом вокруг блока элементов
Вот пример кода <div id=field_one> <p> ndustry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled…
Обтекание текста вокруг рисунка в LaTeX
Обтекание текстом вокруг блока div с CSS
Я пытаюсь заставить текст обернуться вокруг div в моем XHTML. Мой XHTML выглядит так…. <div id=cont-content> <p>content</p> <p>more content</p> <div…
обтекание текста вокруг изображения IE
Я немного поискал решение для обертывания текста вокруг изображения и наткнулся на JQSlickWrap. jQuery плагин для обертывания текста вокруг изображений + поддержка IE6 Но это не работает в IE. Есть…
Как вставить окружение LaTeX вокруг блока текста в emacs?
Я использую emacs с cdlatex-mode для редактирования файлов LaTeX. Я хотел бы знать, как вставить среду LaTeX вокруг блока текста, который уже написан, так что \begin{} идет перед выделенным текстом,…
CSS обтекание текста вокруг изображения
для этого сайта, который я строю, мне нужно отобразить контент определенным образом, у меня есть миниатюра, два скриншота и блок текста около 500 слов. Мне нужно, чтобы текст был обернут вокруг…
Обтекание текстом вокруг изображения в android
Я использую представление списка, чтобы показать изображение и текст, который я хочу показать, как выше изображения, может ли кто-нибудь предложить мне, как обернуть текст вокруг изображения с out…
Прекратить Обтекание текстом вокруг плавали див
Я пытаюсь создать небольшой сетчатый макет. Однако при использовании поплавков текст на самом деле больше, чем плавающий div, и обертывается вокруг него. Есть ли способ остановить обтекание текста…
Как создать круг вокруг текста с помощью css?
В настоящее время мне трудно найти пример того, что я специально ищу. Я пытаюсь создать круг вокруг моего текста, используя CSS. Я нашел примеры круга с текстом внутри, но в данном случае я пытаюсь…
Float — Изучение веб-разработки | MDN
Первоначально используемое для «обтекания» картинок текстом, свойство float
стало одним из наиболее часто используемых инструментов для создания макетов из нескольких столбцов на веб-страницах. С появлением flexbox и grid оно снова используется как задумывалось в начале, о чем подробнее в этой статье.
Предварительные требования: | Базовое знакомство с HTML (изучите Введение в HTML), а также идея о том как работает CSS (изучите Введение в CSS.) |
---|---|
Задача: | Научиться как создавать обтекаемые свойства на веб-страницах и как использовать свойство clear и другие методы очистки обтекаемых элементов. |
Свойство float
вводилось для того, чтобы разработчики могли включать изображение, с обтеканием текста вокруг него слева или справа, как это часто используется в газетах.
Но разработчики быстро осознали, что можно обтекать всё что угодно, не только изображения, поэтому использование float расширилось, например для вёрстки забавных эффектов таких как drop-caps (буквица).
Floats очень часто использовались для создания макетов целых веб-страниц, отображающих несколько колонок информации, обтекаемых так, что колонки располагаются друг за другом (поведение по умолчанию предполагает, что колонки должны располагаются друг за другом, в том же порядке в котором они появляются в источнике).
В этой статье мы сконцентрируемся только на надлежащем использовании floats.
Давайте выясним как использовать floats. Мы начнём с очень простого примера включающего обтекание элемента блоком текста. Вы можете следовать за нами создав новый index.html
файл на вашем компьютере, заполнив его простым шаблоном HTML, и вставив код ниже в подходящее место. В конце раздела вы можете увидеть живой пример того, как должен выглядеть финальный код.
Во-первых, мы начнём с некоторого простого HTML — добавьте следующее в body вашего HTML, удалив всё что там было до этого:
<h2>Simple float example</h2>
<div>Float</div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla luctus aliquam dolor, eu lacinia lorem placerat vulputate. Duis felis orci, pulvinar id metus ut, rutrum luctus orci. Cras porttitor imperdiet nunc, at ultricies tellus laoreet sit amet. </p>
<p>Sed auctor cursus massa at porta. Integer ligula ipsum, tristique sit amet orci vel, viverra egestas ligula. Curabitur vehicula tellus neque, ac ornare ex malesuada et. In vitae convallis lacus. Aliquam erat volutpat. Suspendisse ac imperdiet turpis. Aenean finibus sollicitudin eros pharetra congue. Duis ornare egestas augue ut luctus. Proin blandit quam nec lacus varius commodo et a urna. Ut id ornare felis, eget fermentum sapien.</p>
<p>Nam vulputate diam nec tempor bibendum. Donec luctus augue eget malesuada ultrices. Phasellus turpis est, posuere sit amet dapibus ut, facilisis sed est. Nam id risus quis ante semper consectetur eget aliquam lorem. Vivamus tristique elit dolor, sed pretium metus suscipit vel. Mauris ultricies lectus sed lobortis finibus. Vivamus eu urna eget velit cursus viverra quis vestibulum sem. Aliquam tincidunt eget purus in interdum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
А теперь примените следующий CSS для вашего HTML (используя элемент <style>
или <link>
на отдельный файл .css
— на ваше усмотрение):
body {
width: 90%;
max-width: 900px;
margin: 0 auto;
font: .9em/1.2 Arial, Helvetica, sans-serif
}
.box {
width: 150px;
height: 100px;
border-radius: 5px;
background-color: rgb(207,232,220);
padding: 1em;
}
Если вы сохраните и обновите сейчас, то вы увидите нечто похожее на то, чего ожидаете — блок располагается выше текста, при нормальном потоке. Для того чтобы текст обтекал его вокруг добавьте два свойства к правилу .box
:
.box {
float: left;
margin-right: 15px;
width: 150px;
height: 100px;
border-radius: 5px;
background-color: rgb(207,232,220);
padding: 1em;
}
Если вы сохраните и обновите сейчас, то вы увидите нечто похожее на следующее:
Итак, давайте подумаем над тем, как работает float — элемент с установленным float (элемент <div>
в данном случае) изымается из нормального потока документа и крепится с левой стороны от родительского контейнера (элемент <body>
в данном случае). Любой контент, который следует ниже за обтекаемым элементом в макете при нормальном потоке теперь будет оборачивать его вокруг, заполняя пространство справа от него начиная на той же высоте что и вершина обтекаемого элемента. Там он остановится.
Обтекание контента справа имеет точно такой же эффект, но наоборот — обтекаемый элемент будет прилипать справа, а контент будет оборачивать вокруг слева. Попробуйте изменить значение на right
и замените margin-right
на margin-left
в последнем наборе правил, чтобы увидеть каков результат.
В то время как мы можем добавлять margin к обтекаемому элементу чтобы оттолкнуть текст от него, мы не можем добавлять margin к тексту чтобы отодвинуть его от обтекаемого элемента. так происходит потому, что обтекаемые элементы изъяты из нормального потока, а следующие за ним блоки фактически располагаются за обтекаемым элементом. Вы можете продемонстрировать это, внеся некоторые изменения в ваш пример.
Добавьте класс special
к первому параграфу текста, тот который непосредственно следует за обтекаемым блоком, далее добавьте следующие правила в ваш CSS. Они дадут нашему параграфу цвет фона.
.special {
background-color: rgb(79,185,227);
padding: 10px;
color: #fff;
}
Чтобы эффект был лучше виден, измените margin-right
обтекаемого объекта на margin
, так вы получите пространство вокруг него. Вы сможете увидеть фон параграфа располагающегося прям под обтекаемым блоком, как на примере ниже.
Линейные блоки нашего последующего элемента были сокращены так что текст располагается вокруг обтекаемого объекта, но из-за того, что обтекаемый объект удаляется из нормального потока блок вокруг параграфа все ещё остаётся в полную ширину.
Мы увидели, что обтекаемый объект удалён из нормального потока и что другие элементы будут располагаться за ним, поэтому если мы хотим остановить перемещение следующего элемента нам необходимо очистить его; что достигается при помощи свойства clear
.
Добавьте класс cleared
ко второму параграфу после обтекаемого элемента в ваш HTML из предыдущего примера. Далее добавьте следующий CSS:
.cleared {
clear: left;
}
Вы должны увидеть, что следующий параграф очищает float элемента и больше не появляется рядом с ним. Свойство clear
принимает следующие значения:
left
: очищает объекты, обтекаемые слева.right
: очищает объекты, обтекаемые справа.both
: очищает любые обтекаемые объекты, слева или справа.
Вы теперь знаете, как очистить что-либо следующее за обтекаемым элементом, но давайте посмотрим, что происходит если у вас имеется высокий обтекаемый объект и короткий параграф с блоком, оборачивающим оба элемента. Измените ваш документ так чтоб первый параграф и наш обтекаемый блок были обёрнуты в <div>
с классом wrapper
.
<div>
<div>Float</div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla luctus aliquam dolor, eu lacinia lorem placerat vulputate. </p>
</div>
В вашем CSS добавьте следующее правило для класса .wrapper
и обновите страницу:
.wrapper {
background-color: rgb(79,185,227);
padding: 10px;
color: #fff;
}
В добавок удалите класс .cleared
:
.cleared {
clear: left;
}
Вы увидите, что, точно так же как и в примере где мы устанавливаем цвет фона для параграфа, цвет фона располагается за обтекаемым объектом.
И ещё раз, так происходит потому, что обтекаемый объект изымается из нормального потока. Очистка следующего элемента не помогает с этой проблемой очистки блока, где вы хотите, чтобы нижняя часть блока обернула обтекаемый объект и оборачивающий контент даже если контент короче. Существует три потенциальных способа разобраться с этой проблемой, два из которых работают во всех браузерах, но при этом немного хитры и третий новый способ, который правильно справляется с этой ситуацией.
Clearfix hack
Традиционно эта ситуация решалась с помощью так называемого «clearfix hack». Это включает вставку некоторого сгенерированного контента после блока, содержащего обтекаемый объект и обёрточный контент, а также настройки для очистки обоих.
Добавьте следующий CSS в наш пример:
.wrapper::after {
content: "";
clear: both;
display: block;
}
Теперь перезагрузите страницу и блок должен быть очищенным. По сути, это то же самое, как если бы вы добавили HTML элемент такой как <div>
ниже объекта и установили clear: both
.
Использование overflow
Альтернативный метод — это задать свойство overflow
для обёртки (wrapper) на значение отличное от visible
.
Удалите clearfix CSS который вы добавляли в предыдущей секции и вместо него добавьте overflow: auto
к правилу для обёртки. Блок снова должен быть очищен.
.wrapper {
background-color: rgb(79,185,227);
padding: 10px;
color: #fff;
overflow: auto;
}
Этот пример работает путём создания того, что известно как Блочный Контекст Форматирования (block formatting context (BFC)). Это как мини макет внутри вашей страницы, внутри которого содержится все, следовательно наш обтекаемый элемент находится внутри BFC и фон располагается за обоими элементами. Обычно это будет срабатывать, однако, в определённых случаях вы можете обнаружить нежелательную полосу прокрутки или обрезанные тени из-за непреднамеренный последствий использования overflow.
display: flow-root
Современный способ решения этой проблемы — это использование значения flow-root
свойства display
. Он существует только для создания BFC без использования хака — не будет возникать непреднамеренных последствий, когда вы используете его. Удалите overflow: auto
из вашего правила .wrapper
и добавьте display: flow-root
. Если предположить, что у вас поддерживающий браузер, блок будет очищаться.
.wrapper {
background-color: rgb(79,185,227);
padding: 10px;
color: #fff;
display: flow-root;
}
Вы достигли конца этой статьи, но помните ли вы самую важную информацию? Вы можете найти дополнительные тесты, чтобы убедиться, что вы усвоили эту информацию, прежде чем двигаться дальше — см. Проверка ваших навыков: Floats.
Теперь вы знаете все, что нужно знать о float в современной веб-разработке. См. Статью об устаревших методах макета устаревших методах макета для получения информации о том, как они использовались раньше, что может быть полезно, если вы работаете над старыми проектами.
Как убрать обтекание текстом картинки?
Довольно часто перед верстальщиком ставятся определенные нестандартные задачи. Наша цель – предложить наиболее рациональное и правильное решение. Сегодня речь пойдет об особенностях обтекания текстом изображения.
Постановка задачи
Написание какой-либо статьи для вашего информационного ресурса или блога не редко будет сопровождаться вкраплением по ходу изложения текста картинок. Так как поисковый робот всегда уважал наличие картинок на сайте, да и пользователя больше порадует текст с яркими изображениями. Отсюда вытекает потребность в установке особого способа форматирования, который обеспечит красивое взаимодействие текста и картинки.
Рассмотрим тот случай, когда обтекание текстом не требуется. Причем предлагаю универсальный вариант – при отсутствии картинки текст растягивается на всю ширину блока (не все же Ваши статьи будут сопровождаться иллюстрациями). Ширина блока с текстом строго не фиксирована. Ниже показано, как должен будет выглядеть наш блок.
Правильное решение
Для реализации поставленной задачи создаем два блока: один для картинки, второй – для текста. С учетом того, что под картинкой может располагаться еще какие-либо элементы, для картинки мы создаем отдельный контейнер, в противном случае этого не требуется, можно просто присвоить тегу с изображением необходимый класс.
HTML
<div> <img src="img.png" alt=""/> </div> <div> Текстовый блок </div>
CSS
.image { float: left; /*обтекание */ margin:10px; /*внешний отступ для красоты */ display:inline; /* для IE6, чтоб отступ слева не удвоился */ }
Это стандартное решение для текста, который будет обтекать блок с картинкой. Выглядеть это будет следующим образом:
Вполне логично будет предложить присвоить и тексту свойства плавающего объекта. При не установленных значениях ширин объекта получим такую картину
Чтобы избежать такого эффекта, просто нужно указать значения ширины текстового блока, но это не соответствует условиям нашей задачи.
Следующим неплохим вариантом будет предложение воспользоваться свойством margin-left. Так как для блога, скорее всего, все картинки в данном блоке будут унифицированы по размерам, то решение в принципе не плохое и действенное. Однако это всего лишь частный случай, так как при отсутствии картинки в статье слева будет просто пустая полоса. Это нас не устраивает. Мы же ищем универсальное решение!
А самое правильно решение, как часто бывает, является наипростейшим. Чтобы достичь нужного форматирования текстового блока – необходимо обратиться к свойству overflow со значением hidden. Не забываем про неповторимый Internet Explower. Он как обычно выделывается и требует дополнительного внимания! Чтобы наш старичок нормально отработал добавляем текстовому блоку свойство float (после обращения к свойству overflow определение фиксированной ширины не потребуется).
Таким образом, мы пришли к правильному решению, которое приведет к эффекту, указанному на картинке в подразделе, в котором описывались условия нашей задачи.
CSS
.image { float: left; /*обтекание */ margin:10px; /*внешний отступ для красоты */ display:inline; /* для IE6, чтоб отступ слева не удвоился */ } .text{ overflow:hidden; float:left; }
Недостатки метода и альтернатива
Несмотря на простоту и универсальность метода, заключающегося в применении оverflow:hidden, есть один недостаток. Свойство перестанет выполнять свои функции, если в текстовой части будут использоваться выпадающие элементы.
В этом случае потребуется альтернатива для настройки нужного форматирования. Эта методика будет основываться на функционале комбинации display:table-cell;. Это решение такое же действенное, но слегка уступает в простоте первому способу. При обращению к этому методу также необходима установка layout для работы в среде Internet Explower
CSS
.img { float: left; /* задаем обтекание */ margin:10px; /* отступ для красоты */ display:inline; /* для IE6, чтоб отступ слева не удвоился */ } .text{ display:table-cell; zoom:1; /* Осторожно! Строка невалидна */ }
И это решение обладает своими особенностями, которые нужно учитывать при верстке. Если текстовая часть будет достаточно короткой, то следующий блок будет выводится справа от блока с классом text. Чтобы этого избежать необходимо текстовый блок и картинку заключить в отдельный контейнер.
В каких браузерах работает?
6.0+ | 5.0+ | 9.5+ | 4.0+ | 3.0+ | — | — |
Оценок: 5 (средняя 5 из 5)
- 9680 просмотров
Понравилась статья? Расскажите о ней друзьям:
Курсы по CSS (в открытом доступе)
Уровень сложности:
Средний
Еще интересное
Обтекание в HTML и CSS
CSS float позволяет делать HTML меню, размещать блоки, выравнивать изображения
Если вы не очень хорошо понимаете как работает обтекание в HTML и CSS (свойство float), то эта заметка поможет сориентироваться. Свойство CSS float часто применяется для расположения двух и более блоков в одну линию. Верхняя часть этих блоков находится на одном уровне, нижняя — в зависимости от высоты блоков. Сами блоки «плывут» влево (float:left) или вправо (float:right). Есть еще значение none, оно отключает обтекание (работу float) для конкретного элемента с float: none
Свойство используется и при выравнивании изображений.
Обтекание картинки текстом
Особенности обтеканий в CSS
«Побочный» эффект возникает, если выравненное по любой стороне изображение имеет большой размер и находится в нижней части блока, в котором выравнивается. При этом последующие блочные элементы также могут вступить во взаимодействие.
Еще одна особенность — потеря высоты родительским элементом. Когда высота родительского блока определяется содержимым, а внутри есть плавающие элементы, то родительский «забыват» высоту внутренних (они уплыли!). Результатом становится схлопнутый бордюр родительского HTML-элемента
Отмена обтекания в HTML и CSS clear
Избежать выше описанных проблем можно указав за плавающими элементами блочный элемент со CSS-свойством clear. Это свойство отменяет последствия плавания для элементов, которые идут за плавающим. Это может блок div, или другой элемент или псевдоэлемент со значением clear:left (другие значенияclear: right или clear: both), если мы хотим отменить эффект от элемента плывущего влево.
Отмена обтекания выполняется CSS-свойством clear
Горизонтальное меню
горизонтальное меню
При помощи обтекания можно создать горизонтальное меню. Для этого нужно применить float:left к элементам li. В этом случае элементы принимают горизонтальное положение, остается только вставить ссылки. Это не единственный способ, подобное меню также можно быть создано через идущих подряд нескольких гиперссылок, при помощи свойства display:inline-block или display:table и другими.
Подробней узнать об обтекании в CSS можно узнать на странице документации CSS-float. На той же странице подробно описывается боксовая модель CSS.
Свойство float. Обтекание элементов | w3.org.ua
Float — самое страшное свойство для новичка в HTML. Именно потому, что c float не умеют работать. Float переводится как «всплытие». Из доступных значений этого свойства можно выбрать:
float: left; float: right; float: none; float: inherit;
float: left; float: right; float: none; float: inherit; |
Давайте посмотрим, что происходит с элементами, когда к ним применяется свойство float:
- Элемент «сплывает» и прижимается к левому (если float: left) или правому (float: right) краю родительского элемента или элемента которому тоже задано значение float
- Если элемент из-за ширины родительского блока не может встать в один ряд с другим элементом, он будет сдвинут вниз до того момента пока ему не хватит места
- Другие блочные элементы для которых значение float не задано ведут себя так, как будто элемента с float нет на странице (элемент «сплыл»). Строки «знают» что элемент всплыл и обтекают его
- Ширина блока, для которого задано значение float — определяется по содержимому.
Рассмотрим пример. Удалите комментарий у свойства float: left внутри CSS. Посмотрите на результат.
See the Pen float by Alex (@Asmodey) on CodePen.
Замените float:left на float: right.
Свойство float удобен для обеспечения обтекания картинок текстом. Рассмотрите пример:
See the Pen float by Alex (@Asmodey) on CodePen.
Добавьте комментарий в строку CSS файла к свойству float: left. Просмотрите как изменится верстка страницы. Замените float: left на float:right.
«Схлопывание» родительского элемента при наличии у вложенных элементов свойства float
Пусть внутрь элемента one помещен элемент two. По-умолчанию, высота one растянется по содержимому. Как только мы к элементу two применим свойство float, он всплывает, и родительский элемент one не будет знать что two существует. Если содержимого у two нет, то его высота равна нулю. Такое поведение называется «схлопывание». Чтобы предотвратить схлопывание родителя ему задают либо свойство min-height — минимальная высота, либо применяют способ: добавляют еще один блок, для которого задают свойство:
<div></div>
<div></div> |
Данный блок не виден на странице, но свойство clear:both снимает обтекание элементов и растягивает родителя на высоту содержимого.
Снимите комментарий свойству float:left в CSS. Посмотрите как ведет себя родительский элемент:
See the Pen float by Alex (@Asmodey) on CodePen.
Рассмотрите пример с применением clear: both
See the Pen float: clear both by Alex (@Asmodey) on CodePen.
Итак вы ознакомились с основными свойствами float. Давайте применим знания на практике.
Смотрите статью — как прижать футер к нижней части сайта: 2 простых способа.
CSS — Работа с плавающими элементами
Плавающий элемент — это блочный элемент, у которого установлено CSS свойство float
со значением left
или right
. Располагается плавающий элемент следующим образом: он открепляется от своего текущего места (текущее место — это место, которое занимал бы блочный элемент, если он был бы не плавающим) и располагается по вертикали (верхняя граница плавающего элемента выравнивается по верхней границе текущей строки) и горизонтали (в зависимости от значения свойства float
плавающий элемент будет прикрепляться насколько возможно к левому или правому краю родительского элемента). Остальное содержимое, расположенное после плавающего элемента в этом контейнере обтекает этот плавающий элемент с противоположной стороны. Место, которое он занимал бы, если бы не был плавающим, не закрепляется за ним, и его место будет занимать элементы контейнера, расположенные после плавающего элемента. Также необходимо учитывать то, что высота плавающего блока не влияет на высоту блока контейнера, в которую он помещён.
Например: высота контейнера, в который помещён только плавающий блок будет равна 0.
Рассмотрим расположение плавающих блоков на примере. Для начала создадим 3 блока с разным фоном и разместим их в контейнере, который имеет высоту 350px и внутренние отступы с каждой стороны (padding
) по 20px. По умолчанию блочные элементы будут занимать всю ширину контейнера, и располагаться один под другим.
<div> <div></div> <div></div> <div></div> </div>
Теперь с помощью свойства float
изменим 2 блок на плавающий и установим ему ширину равную 120px. Задание ширины для плавающих блоков является обязательным условием. После изменения блочный элемент 3 стал обтекать плавающий блок с противоположной стороны.
<div> <div></div> <div></div> <div></div> </div>
Теперь изменим высоту блочного элемента 3 и заметим, что после обтекания плавающего элемента блочный элемент 3 выравнивается по левому краю.
<div> <div></div> <div></div> <div></div> </div>
Теперь и 1 блок сделаем плавающим, дополнительно установив ему ширину 120px и высоту 150px. 2 плавающий блок (красный) будет стремиться прикрепиться насколько возможно к левому краю родительского элемента, но 1 блок ему будет мешать, следовательно, он прикрепиться к правому краю 1 блока.
<div> <div></div> <div></div> <div></div> </div>
Примечание: Когда плавающим элементам не будет хватать ширины контейнера, они будут перемещаться вниз.
Способы отмены обтекания
Плавающие блоки очень часто применяются при вёрстке веб-страниц. Однако бывают ситуации и довольно часто, когда необходимо отменить блоку обтекание с одной или с двух сторон. Существует несколько способов как это сделать:
- С помощью CSS свойства
clear
, которое имеет значениеleft
(отменяет обтекание с левого края элемента),right
(отменяет обтекание с правого края) илиboth
(отменяет обтекание элемента одновременно с левого и правого краёв). В зависимости от ситуации это свойство можно применить непосредственно к блоку или создать пустой блокdiv
со свойствомclear
и соответствующим значением. Например:<div></div>
— этот блок не обтекает плавающий элемент с левого и правого краёв.<div> <div></div> <div></div> <div></div> </div>
- С помощью CSS свойства
overflow
со значениемauto
илиhidden
. Принцип заключается в том, что плавающие элементы помещаются в контейнерdiv
, которому добавляется свойствоoverflow
. Но будьте осторожны со свойствомoverflow
и просчитайте возможные размеры плавающих элементов.<div> <div> <div></div> <div></div> </div> <div></div> </div>
- С помощью псевдоэлемента
:after
. Данный способ заключается в добавление невидимого блока, который отменяет обтекание.<style type="text/css"> .clearfix:after { content : "."; <!-- Выводит точку --> visibility : hidden; <!-- прячем точку --> display : block; <!-- Элемент является блочным --> height : 0; <!-- Высота блока равна 0 --> clear : both; <!-- Отменяем обтекание --> } </style> ... <div> <div> <div></div> <div></div> </div> <div></div> </div>
Изменение высоты контейнера, содержащего плавающий блок
Как мы уже отмечали выше то, что на высоту контейнера не оказывает ни какое влияние высота плавающих блоков. Давайте рассмотрим способы, с помощью которых мы заставим растянуться контейнер на высоту дочернего плавающего блока.- С помощью свойства
clear
. Для этого необходимо поместить пустой контейнер с этим свойством после плавающего блока.<div> <div></div> <div></div> </div>
- С помощью свойства
overflow
. Для этого необходимо создать контейнер и поместить в него плавающие блоки. Затем добавить к контейнеру стиль со свойствомoverflow
, которому задать значениеhidden
илиauto
.<div> <div></div> </div>
html — Как предотвратить обертывание встроенных блоков div?
html — Как предотвратить обертывание встроенных блоков div? — Переполнение стекаПрисоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 70к раз
jsFiddle демонстрация
Я хочу, чтобы для div
s было:
- Оберните их содержимое.
- Оставаться в исходной связанной строке, по существу, без переноса.
Обычно столы складываются друг под другом, когда они не могут оставаться на экране. Я бы предпочел, чтобы они были скрыты за кадром.
Я пробовал добавить overflow: hidden;
к основному стилю макета. Я не хочу фиксировать ширину для каждого div
. Он должен соответствовать содержимому.
.layout {
-moz-border-radius: 15 пикселей;
радиус границы: 15 пикселей;
вертикальное выравнивание: сверху;
дисплей: встроенный блок;
}
.layoutbacking {
-moz-border-radius: 15 пикселей;
радиус границы: 15 пикселей;
отступ: 5 пикселей;
маржа: 5 пикселей;
фон: #CCCCCC;
}
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
данные 1
данные 2
данные 3
данные 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
двойной звуковой сигнал 4,0101212 золотых знаков2525 серебряных знаков3535 бронзовых знаков
Создан 21 янв.
Макловинг 1,19011 золотых знаков1111 серебряных знаков3030 бронзовых знаков
Добавить пробелов: nowrap;
к вашему .объявление стиля layout
.
Это сделает именно то, что вам нужно: предотвратит упаковку div.
Смотрите
jsFiddle демонстрация
или запустите следующий фрагмент кода в полноэкранном режиме и измените его размер:
.layout {
белое пространство: nowrap; / * это помогает * /
переполнение: скрыто; / * это предотвращает переполнение серых div * /
вертикальное выравнивание: сверху;
радиус границы: 15 пикселей;
дисплей: встроенный блок;
}
.layoutbacking {
радиус границы: 15 пикселей;
фон: #CCCCCC;
отступ: 5 пикселей;
маржа: 5 пикселей;
}
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
данные 1
данные 2
данные 3
данные 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
<таблица>
заголовок 1
заголовок 2
заголовок 3
заголовок 4
данные 1
данные 2
данные 3
данные 4
Создан 21 янв.
Андреа Лигиос 46.7k2424 золотых знака104104 серебряных знака208208 бронзовых знаков
0 Это остановит перенос текста и оставит его встроенным.
.leftContent {float: left; }
.rightContent {переполнение: скрыто; }
Джош Хабдас 6,64922 золотых знака5454 серебряных знака5656 бронзовых знаков
Создан 05 июл.
Далли SDally S 58977 серебряных знаков1111 бронзовых знаков
0 Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками HTML css layout или задайте свой вопрос.
lang-html
Stack Overflow лучше всего работает с включенным JavaScript Ваша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Принимать все файлы cookie
Настроить параметры
пробелов | CSS-уловки
Свойство white-space управляет обработкой текста в элементе, к которому оно применяется.Допустим, у вас есть HTML , ровно , вот так:
Вы видите кучу слов.
Вы задали стиль div для ширины 100 пикселей. При разумном размере шрифта это слишком много текста для 100 пикселей. Без каких-либо действий, значение по умолчанию для белого пространства
равно , нормальное
, и текст будет переноситься. См. Пример ниже или следуйте за демонстрацией дома.
div {
/ * Это значение по умолчанию, вам не нужно
явно объявить это, если не переопределить
другое заявление * /
пробел: нормальный;
}
Если вы хотите предотвратить перенос текста, вы можете применить white-space: nowrap;
Обратите внимание, что в примере кода HTML в верхней части этой статьи на самом деле есть два разрыва строки, один перед строкой текста и один после, что позволяет тексту располагаться на отдельной строке (в коде).Когда текст отображается в браузере, эти разрывы строк выглядят так, как будто они удалены. Также удалены лишние пробелы в строке перед первой буквой. Если мы хотим заставить браузер отображать эти разрывы строк и лишние символы пробела, мы можем использовать white-space: pre;
Он называется pre
, потому что поведение такое, как если бы вы заключили текст в теги
(которые по умолчанию обрабатывают пробелы и разрывы строк таким образом).Пробелы учитываются точно так же, как и в HTML, и текст не переносится до тех пор, пока в коде не появится разрыв строки. Это особенно полезно при буквальном отображении кода, который с эстетической точки зрения выигрывает от некоторого форматирования (а какое-то время абсолютно критично, как в языках, зависящих от пробелов!)
Возможно, вам нравится, как pre
учитывает пробелы и разрывы, но вам нужно, чтобы текст переносился, а не вырывался из родительского контейнера. Вот что такое white-space: pre-wrap;
для:
Наконец, white-space: pre-line;
прерывает строки в коде, но лишние пробелы по-прежнему удаляются.
Интересно, что последний перенос строки не соблюдается. Согласно спецификации CSS 2.1: «Строки разрываются на сохраненных символах новой строки и по мере необходимости для заполнения строчных полей». так что, возможно, это имеет смысл.
Вот таблица для понимания поведения всех различных значений:
Новые строки Пробелы и табуляторы Перенос текста нормальный Свернуть Свернуть Обертка до Заповедник Заповедник Без упаковки nowrap Свернуть Свернуть Без упаковки предварительная упаковка Заповедник Заповедник Обертка предварительная линия Заповедник Свернуть Обертка
В CSS3 свойство white-space
буквально следует за этой диаграммой и сопоставляет свойства с text-space-collapse
и text-wrap
соответственно.
Дополнительная информация
Поддержка браузера
Немного сложнее, чем обычная таблица поддержки, поскольку каждое значение имеет разные уровни поддержки:
Браузер Версия Опора Internet Explorer 5,5 нормальный | nowrap
6,0 нормальный | предварительно | nowrap
8+ нормальный | предварительно | nowrap | предварительная упаковка | предварительная линия
Firefox (Gecko) 1.0 (1,0) нормальный | предварительно | nowrap | -moz-предварительная упаковка
3,0 (1,9) нормальный | предварительно | nowrap | предварительная упаковка | -moz-предварительная упаковка
3,5 (1,9.1) нормальный | предварительно | nowrap | предварительная упаковка | предварительная линия
Opera 4,0 нормальный | предварительно | nowrap
8,0 нормальный | предварительно | nowrap | предварительная упаковка
9.5 нормальный | предварительно | nowrap | предварительная упаковка | предварительная линия
Safari (WebKit) 1,0 (85) нормальный | предварительно | nowrap
3,0 (522) нормальный | предварительно | nowrap | предварительная упаковка | предварительная линия
CSS свойство flex-wrap
Пример
При необходимости оберните гибкие предметы:
div {
дисплей: гибкий;
flex-wrap: пленка;
}
Попробуй сам »
Определение и использование
Свойство flex-wrap
указывает, должны ли гибкие элементы обертываться или нет.
Примечание: Если элементы не являются гибкими, свойство flex-wrap
не действует.
Значение по умолчанию: nowrap Унаследовано: № Анимация: нет. Прочитать про animatable Версия: CSS3 Синтаксис JavaScript: объект .style.flexWrap = «nowrap»
Попытайся
Поддержка браузера
Числа в таблице указывают первую версию браузера, полностью поддерживающую свойство.
Числа, за которыми следует -webkit- или -moz-, указывают первую версию, которая работала с префиксом.
Имущество гибкая пленка 29,0
21,0 -webkit- 11.0 28,0
18,0 -моз- 9,0
6,1 -webkit- 17,0
Синтаксис CSS
Flex-wrap: nowrap | wrap | wrap-reverse | начальный | наследование;
Значения свойств
Значение Описание Играй nowrap Значение по умолчанию. Указывает, что гибкие элементы не будут переноситься Играй » обертка Указывает, что гибкие элементы будут при необходимости обернуты Играй » обертка-реверс Указывает, что гибкие элементы будут упаковываться, если необходимо, в обратном порядке. Играй » начальный Устанавливает для этого свойства значение по умолчанию.Читать о начальная Играй » унаследовать Наследует это свойство от своего родительского элемента. Читать про наследство
Связанные страницы
Учебное пособие по CSS: CSS Flexible Box
Ссылка CSS: свойство flex
Ссылка CSS: свойство flex-flow
Ссылка CSS: свойство flex-direction
Ссылка CSS: свойство flex-basic
Ссылка CSS: свойство flex-grow
Ссылка CSS: свойство flex-shrink
Ссылка на HTML DOM: свойство flexWrap
Как предотвратить разрывы строк с помощью CSS
Введение
Разработчики обычно любят переносить текст на веб-страницу.Обтекание тем или иным образом ограничивает текст и предотвращает проблемы с дизайном. Перенос текста также может предотвратить горизонтальную прокрутку. Но бывают случаи, когда вы хотите, чтобы блоки текста оставались на одной строке независимо от длины. Вы можете предотвратить разрывы строк и перенос текста для определенных элементов, используя свойство CSS white-space
.
В этом уроке вы стилизуете один и тот же блок текста четырьмя разными способами, сначала с разрывами строки, а затем три раза без разрывов строк:
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр.Индийский лосось Mul mora cisco masu, петушиная акула-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь Сакраменто, двустворчатый гигантский данио.
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная акула-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь Сакраменто, двустворчатый гигантский данио.
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, двустворчатый гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная акула-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь Сакраменто, двустворчатый гигантский данио.
Это предоставит вам несколько вариантов переноса или отсутствия переноса текста.
Предварительные требования
Для выполнения этого урока вам потребуется:
Шаг 1. Предотвращение и принудительное разрывы строк в CSS
На этом шаге вы создадите таблицу стилей с тремя разными классами.Каждый из них будет обрабатывать разрывы строк по-разному: первый будет разбивать текст по умолчанию, а второй и третий заставят текст не создавать новую строку и разрыв.
Сначала создайте и откройте новый файл с именем main.css
, используя nano
или ваш предпочтительный редактор:
Добавьте следующий контент, который представит три класса CSS, которые используют несколько свойств, включая пробел
:
./main.css
.sammy-wrap {
радиус границы: 6 пикселей;
цвет фона: aliceblue;
граница: 2 пикселя серого цвета;
максимальная ширина: 70%;
заполнение: 1em;
нижнее поле: .4em;
}
.sammy-nowrap-1 {
радиус границы: 6 пикселей;
цвет фона: aliceblue;
граница: 2 пикселя серого цвета;
максимальная ширина: 70%;
заполнение: 1em;
нижнее поле: .4em;
белое пространство: nowrap;
}
.sammy-nowrap-2 {
радиус границы: 6 пикселей;
цвет фона: голубой;
граница: 2 пикселя серого цвета;
максимальная ширина: 70%;
заполнение: 1em;
нижнее поле:.4em;
белое пространство: nowrap;
переполнение: скрыто;
переполнение текста: многоточие;
}
Ваш первый класс — .sammy-wrap
. Он определяет шесть общих свойств CSS, включая border-radius
, background-color
, border max-width
, padding
и margin-bottom
. Этот класс создаст визуальный блок, но не определяет никаких специальных свойств оболочки. Это означает, что он будет разрывать строки по умолчанию.
Ваш второй класс — .Самми-Новарап-1
. Он определяет тот же блок, что и .sammy-wrap
, но теперь вы добавляете другое свойство: white-space
. Свойство white-space
имеет множество параметров, каждый из которых определяет, как обрабатывать пустое пространство внутри данного элемента. Здесь вы установили white-space
на nowrap
, что предотвратит все разрывы строк.
Ваш третий класс — .sammy-nowrap-2
. Он добавляет пробелов
и два дополнительных свойства: переполнение
и переполнение текста
.Свойство переполнения
обрабатывает прокручиваемое переполнение
, которое происходит, когда содержимое внутри элемента выходит за границы этого элемента. Свойство overflow
может сделать это содержимое прокручиваемым, видимым или скрытым. Вы устанавливаете overflow
на hidden
, а затем используете свойство text-overflow
, чтобы добавить еще больше настроек. переполнение текста
может помочь вам сигнализировать пользователю, что дополнительный текст остается скрытым. Вы установили для него значение , многоточие
, так что теперь ваша линия не будет ни разрываться, ни выходить за пределы рамки.CSS скроет переполнение и сигнализирует о скрытом содержимом с помощью ...
.
Сохраните и закройте файл.
Теперь, когда у вас есть таблица стилей, вы готовы создать короткий HTML-файл с образцом текста. Затем вы загрузите веб-страницу в браузер и изучите, как CSS может предотвратить разрывы строк.
Шаг 2 — Создание файла HTML
Определив классы CSS, вы можете применить их к образцу текста.
Создайте и откройте файл с именем index.html
в предпочитаемом вами редакторе. Обязательно поместите его в ту же папку, что и main.css
:
.
Добавьте следующий контент, который свяжет main.css
как вашу таблицу стилей
, а затем примените ваши классы к образцу текстового блока:
./index.html
Как предотвратить разрыв строки с помощью CSS
Медузафишская полосатая киллифиш, каторжник, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыбная рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, Sacramento, двустворчатый гигантский данио.
Медузафишский полосатый киллиф, каторжник, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, двустворчатый гигантский данио Сакраменто.
Медузафишский полосатый киллиф, каторжник, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыбная рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, Sacramento, двустворчатый гигантский данио.
<Р> Medusafish & NBSP; ленточный & NBSP; Killifish & NBSP; арестант & NBSP; собачка & NBSP; сайра & NBSP; threadsail & NBSP; белуха & NBSP;. Осетровые рыбы & NBSP; Индийские & NBSP; мул & NBSP; мор & NBSP; сиг & NBSP; Мас & NBSP; лосось, & NBSP; roosterfish & NBSP; реквием & NBSP; акулы & NBSP; Нос & NBSP; lancetfish & NBSP; луфаря & NBSP; красный & NBSP ; луциан & nbsp; Sacramento & nbsp; двустворчатый & nbsp; гигантский & nbsp; данио.
Вы назначили свой стандартный стиль обтекания первому текстовому блоку, стиль nowrap
второму и nowrap
, который является скрытым
с многоточием
третьему. Вы назначили sammy-wrap
четвертому образцу, но вы переопределяете обертку по умолчанию, вставляя неразрывные пробелы ( & nbsp;
) непосредственно в HTML. Если вам нужно предотвратить перенос строки как разовую ситуацию, неразрывные пробелы могут обеспечить быстрое решение.
Откройте index.html
в веб-браузере и просмотрите свои результаты. Ваши четыре текстовых блока будут выглядеть так:
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, двустворчатый гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, двустворчатый гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, рыба-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, двустворчатый гигантский данио Сакраменто.
Медузафиш-полосатая морская собачка, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная акула-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь Сакраменто, двустворчатый гигантский данио.
Вы успешно настроили свои свойства CSS, чтобы предотвратить или разрешить разрывы строк в четырех различных вариантах.
Заключение
В этом руководстве вы использовали CSS для предотвращения разрывов строк в блоке текста. Вы стилизовали текст внутри поля, а затем добавили свойство white-space
, чтобы переопределить перенос текста по умолчанию. Чтобы узнать больше об обработке переноса текста и пробелов, рассмотрите возможность изучения всего свойства CSS white-space
.
Перенос текста и встроенные псевдоэлементы
Хотя вы можете добиться этого, добавив встроенный SVG, в этом случае гораздо проще просто использовать псевдоэлемент и оставить его в домене таблицы стилей, так как:
- Вам не нужно менять разметку, что особенно важно, если вы используете CMS.Последнее, чем вы хотите заниматься, — это анализировать HTML с помощью регулярного выражения.
- Нет дублирования SVG, что предпочтительнее, поскольку оно (потенциально) будет повторяться много раз на странице.
Остается добавить фоновое изображение к псевдоэлементу.
Проблема
Моим первым побуждением было сделать элемент inline-block
:
a [href * = "//"]: not ([href * = "jayfreestone.com"]) {
&:после {
содержание: '';
дисплей: встроенный блок;
ширина: 1em;
высота: 1em;
background-image: url ('external.svg ');
}
}
Однако это не гарантирует, что значок будет отображаться в той же строке, что и остальной текст, создавая неудобные разрывы:
Добавление белого пространства: nowrap;
к ссылке работает, но приводит к тому, что вся ссылка не переносится, создавая свой собственный набор неудобных разрывов и значительно увеличивая вероятность переполнения.
Редактирование разметки
Самое простое решение — заключить последнее слово и добавить к нему :: после
:
a [href * = "//"]: not ([href * = "jayfreestone.com"])> span {
белое пространство: nowrap;
&:после {
}
}
Однако в ту секунду, когда мы закончим изменение разметки, мы окажемся в той же ситуации, которой пытались избежать. Если бы мы пошли по этому пути, мы бы, вероятно, захотели просто перенести логику для внешних ссылок в шаблон:
Это было бы по крайней мере более надежным и явным, чем предыдущий вариант, однако мы пошли ва-банк на изменение разметки.
Использование отступов и полей
Один из вариантов — оставить HTML как есть и использовать отступы и отрицательные поля для предотвращения переноса:
a [href * = "//"]: not ([href * = "jayfreestone.com "]) {
--icon-offset: 2em;
padding-right: var (- смещение значка);
&,
&:после {
дисплей: встроенный блок;
}
&:после {
маржа слева: calc (var (- смещение значка) * -1);
}
}
На первый взгляд это отлично работает, но оно становится жертвой той же проблемы, что и решение nowrap
: создание ссылки inline-block
помешает ее правильному переносу. Текст внутри него будет перенесен, но не рядом с текстом за пределами :
Сохранение в рабочем состоянии
Если нам не нужно явно указывать высоту
для :: после
, мы можем полностью избежать inline-block
:
a [href * = "//"]: not ([href * = "jayfreestone.com "]) {
&:после {
содержание: '';
фоновое изображение: url ('external.svg');
}
}
По умолчанию отображение элемента будет встроенным
, что делает его элементом привязки к тексту. Пока в разметке нет пробела между последним словом и закрывающим тегом, :: после
будет оцениваться как часть предыдущего слова :
Следовательно, это отлично работает:
И это не так, поскольку между открывающим и закрывающим тегами создаются дополнительные текстовые узлы (пробелы):
Это та же проблема, которая преследовала inline-block
grid: отступы и пробелы в разметке оцениваются как текстовые узлы на элементах неблочного уровня.
По этой же причине форматирование HTML Prettier является правильным, несмотря на то, что оно некрасиво:
<а
href = "http: // test.местный"
> <диапазон
> Тест span
> a
>
Учитывая, что мне не нужна была гибкость inline-block
, я выбрал последний вариант, просто оставив элемент inline
, что означает, что он всегда прикреплен к последнему слову, и применил вместо него размер с отступом:
a [href * = "//"]: not ([href * = "jayfreestone.com"]) {
&:после {
содержание: '';
маржа слева: var (- s-1);
отступ слева: 1em;
цвет фона: var (- цвет ссылки);
изображение-маска: url ('... ');
размер маски: 1em;
положение маски: центр;
маска-повтор: без повторения;
}
}
Обновление (08.04.2019)
Тим Баумгартен указал, что вышеупомянутый метод маски может быть ошибочным в Safari, что приводит к «просачиванию» фона сверху / снизу из-за высоты строки.
Исправление Тима состоит в том, чтобы объединить две маски вместе: одну, чтобы полностью скрыть цвет фона (с использованием полностью черного градиента), и одну, чтобы «вырезать» дыру в первой (с использованием SVG).Это простое и очень элегантное решение, которое, кажется, хорошо работает во всех протестированных мной браузерах с поддержкой масок.
Выводы
- Не используйте
inline-block
в длинной форме, так как он не будет элегантно обтекать. - Не забывайте, что добавление пробелов внутри
встроенных элементов
фактически создает текстовые узлы, изменяя поведение и внешний вид содержимого. - Псевдоэлементы обрабатываются как непосредственно предшествующие / следующие за их родственными текстовыми узлами, поэтому они будут рассматриваться как часть слова, к которому они прикасаются.
Вы можете найти игровую площадку со всеми вышеперечисленными примерами на CodePen.
Обновление (07.01.2021)
Вы также можете увидеть эту технику в действии на предыдущей итерации этого сайта (с момента написания этой статьи).
← На главную
Перенос текста вокруг изображения
В редакторе Mailchimp вы можете обернуть текст вокруг изображения, чтобы сэкономить место и улучшить свой дизайн. Чтобы обернуть текст вокруг изображения, вы вставляете изображение в блок текстового содержимого и выбираете его выравнивание.
Из этой статьи вы узнаете, как обернуть текст вокруг изображения.
Перед тем как начать
Перед тем, как начать этот процесс, необходимо знать следующее.
- Чтобы ваша кампания отображалась должным образом, используйте небольшие изображения шириной 100–300 пикселей.
- В шаблонах с перетаскиванием можно только обтекать изображение текстом в блоках содержимого «Текст», «Текст в рамке» или «Нижний колонтитул». В пользовательских шаблонах HTML изображение может быть заключено в любой блок содержимого, который включает изображение и текст.
- Не забудьте предварительно просмотреть и протестировать свою рассылку по электронной почте после того, как вы обернули текст вокруг изображения. Некоторые почтовые клиенты, например Outlook, обрабатывают перенос текста иначе, чем другие почтовые клиенты.
Вставить изображение и обернуть текст
Чтобы вставить изображение в текстовый блок и обернуть его текстом, выполните следующие действия.
- В разделе Content в Campaign Builder щелкните Design Email .
- На шаге Design щелкните существующий блок содержимого или перетащите новый блок в макет.
- На панели редактирования щелкните область текста, в которую вы хотите поместить изображение.
- Щелкните значок Content Studio на панели инструментов, чтобы выбрать изображение.
- Чтобы использовать ранее загруженное изображение, щелкните изображение и нажмите Вставить .
- Чтобы использовать файл со своего компьютера, щелкните Загрузить , найдите нужный файл и щелкните Открыть .
- Чтобы использовать изображение, сохраненное в Интернете, щелкните раскрывающееся меню рядом с полем Загрузить и выберите Импортировать с URL-адреса .Введите URL-адрес и щелкните Импорт .
- На экране Edit Image щелкните show image style options.
- Щелкните раскрывающееся меню Align и выберите, где разместить изображение: слева или справа , или по центру текста.
- Введите число в поля Margin , чтобы добавить пробел между изображением и обернутым текстом.
- Нажмите Сохранить и Вставить Изображение .
Если вам нужно внести дополнительные изменения в настройки изображения или поля, дважды щелкните изображение на панели редактирования.
Как предотвратить переход div на следующую строку
Обновлено: 16.11.2019 компанией Computer Hope
HTML
(разделение) — это элемент уровня блока, предназначенный для того, чтобы не отображать рядом с ним какие-либо элементы HTML, если его поведение по умолчанию не изменилось.Ниже приведены все различные методы предотвращения перехода div на следующую строку. Кончик В зависимости от того, почему вы хотите разбить div, также подумайте о теге . Это элемент встроенного уровня, который не переходит на следующую строку, если его поведение по умолчанию не будет изменено.
Примечание Чтобы упростить использование и понимание этих примеров для всех типов пользователей компьютеров, мы используем атрибут style в div. Если вы собираетесь использовать любой из этих примеров на нескольких страницах, мы настоятельно рекомендуем создать кэшируемый файл CSS с настройками стиля в файле.
Ниже мы показываем блоки div разными цветами, чтобы показать, сколько места они занимают в том месте, где находятся на экране.
Поведение
по умолчанию Ниже приведен пример поведения div по умолчанию для блочного элемента Div one , занимающего первую строку содержащего его элемента, за которым следует второй Div two .
Div one
Div 2
HTML код
Div one
Раздел два
Установить размер и встроить
Поскольку они являются блочными элементами, при уменьшении размера Div one , чтобы освободить место для другого div, у вас остается место рядом с Div one и Div two ниже Div one .Чтобы переместить div на следующую строку, оба div должны иметь настройку отображения встроенного блока, как показано ниже.
Div one
Div 2
HTML код
Div one
Раздел два
Создание div с тремя столбцами
Ниже приведены несколько различных примеров div с тремя столбцами. Во-первых, нижеследующие три столбца div следуют той же идее, что и приведенные выше примеры, за исключением того, что они добавляют div.
Div one
Div 2
Div 3
HTML код
Div one
Раздел два
Третий дивизион
Конечно, если вы хотите, чтобы блоки занимали 100% содержащего элемента, это становится немного сложнее.Ниже приведен один пример того, как вы можете создать три div рядом друг с другом, которые занимают 100% элемента. В приведенном ниже примере вместо того, чтобы хранить все div в одной строке с помощью встроенного блока, мы перемещаем левый и правый div.