Содержание

display none css как отменить

На чтение 6 мин. Просмотров 73 Опубликовано

Свойства HTML display и visibility используются, чтобы вывести или скрыть HTML-элементы . Но тогда какая между ними разница? Чтобы понять это, посмотрите на приведенный ниже рисунок, здесь я использовал три элемента div :


Мы используем три элемента div , которые показаны в разделе 1 ( с левой стороны ). Изначально все элементы div выводятся без применения свойств display или visibility .

Посмотреть онлайн демо-версию и код

Во второй части рисунка отображаются только div 1 и div 3 . Для div 2 задано visibility: hidden , но мы все равно видим пространство, которое занимает этот элемент.

Посмотреть онлайн демо-версию и код

В третьем разделе также отображаются только div 1 и div 3 , в то время как div 2 скрыт с помощью свойства HTML display none .

Можно увидеть разницу: div 3 смещается вверх и для div 2 больше не отводится пространство.

Посмотреть онлайн демо-версию и код

Синтаксис свойства CSS visibility

Вот, как использовать свойство CSS visibility :

Значение по умолчанию для свойства CSS visibility — visible . Также можно использовать:

Данное значение используется в HTML-таблицах .

Синтаксис свойства CSS display

Это позволяет скрыть элемент, для которого задано значение данного свойства. Именно его я применил для раздела 3 в приведенном выше примере.

Свойство HTML display также используется, чтобы изменить поведение строчных или блочных элементов:

Этот код задает для блочного элемента поведение строчного. Например, div представляет собой блочный элемент. Применив к нему display: inline , мы задаем для него поведение строчного элемента:

Значение block делает противоположное. Например, элемент span является строчным. Если мы применим к нему display: block , он будет вести себя как блочный элемент.

Пример применения свойства display для отображения / скрытия меню

Я использовал элемент div , который содержит маркированный список

    , элементы списка и гиперссылки. Ссылки представляют собой пункты меню.

Для разработки этого меню использовался ряд других свойств CSS . Свойство display изначально задано не было. Это означает, что меню будет отображаться.

При клике по ссылке скрыть меню для события клика используется код JQuery , чтобы применить свойство display: none к родительскому элементу div :


Посмотреть онлайн демо-версию и код

Если после этого вы нажмете на ссылку показать меню, код jQuery добавит значение display: initial . Это сделает меню видимым, а ссылки сместятся вниз.

Демо-версия меню с использованием свойства visibility

Я использую тот же пример, что и выше, но на этот раз применю свойство CSS visibility , чтобы показать и скрыть меню. Разница заключается в используемом коде jQuery :

При нажатии на ссылку скрыть меню, меню скрывается. При клике по ссылке показать меню, добавляется свойство visibility: visible , и меню снова отображается:


Посмотреть онлайн демо-версию и код

В этом примере можно увидеть разницу. Когда нажимается ссылка скрыть меню, меню исчезает. При клике по ссылке показать меню, оно вновь становится видимым. Но ссылки при этом остаются на своих местах и не смещаются ( в отличие от HTML display ).

Пример использования свойства CSS visibility для HTML-таблицы

В следующем примере мы создадим HTML-таблицу с помощью фреймворка Bootstrap . Таблица содержит пять строк, которые первоначально отображаются. На данном этапе таблица выглядит следующим образом:


Посмотреть онлайн демо-версию и код

Для строк таблицы использованы разные классы, чтобы задать их стили. Например, danger , active , warning и т.д. Строки таблицы пронумерованы от 1 до 5 ( первый столбец слева ).

Теперь я использую свойство visibility для второй строки, чтобы скрыть ее. Это делается следующим образом:

Таким образом значение collapse также используется для элементов таблицы. Оно применяется для удаления строки, при этом структура таблицы не изменяется. Посмотрите на приведенный ниже рисунок и на код демо-версии:


Посмотреть онлайн демо-версию и код

Вторая строка не видна, но структура таблицы остается неизменной. Если вы используете значение collapse для любых других элементов, оно будет работать, как значение hidden .

Применение свойства CSS display к таблице

Теперь тот же самый пример, за исключением того, что я буду использовать свойство HTML display , чтобы скрыть строку в таблице:


Посмотреть онлайн демо-версию и код

Вторая строка исчезла, а третья строка перемещается вверх, чтобы занять ее место.

Использование display для строчных элементов

Свойство CSS display также используется для изменения поведения строчных и блочных элементов.

Напомню, что блочные элементы занимают все доступное им пространство и начинаются с новой строки. Например, абзацы или блоки div — это блочные элементы.

Строчные элементы занимают только необходимое для отображения пространство и не начинаются с новой строки. В качестве примеров строчных элементов можно привести span , тег ссылки и т.д.

Свойство HTML display позволяет изменять поведение строчных и блочных элементов.

Чтобы изменить поведение блочного элемента на поведение строчного:

Чтобы изменить поведение строчного элемента на поведение блочного:

В следующем примере поведение элемента span изменяется на поведение блочного элемента. А поведение абзаца с помощью свойства CSS display изменяется на поведение строчного элемента.

Чтобы понять, в чем заключается разница, сначала посмотрите на приведенный ниже рисунок и исходный код, в котором свойство HTML display еще не применено:


Посмотреть онлайн демо-версию и код

На странице демо-версии отображен родительский div , а внутри него span и абзац. Изначально их поведение является стандартным для этих элементов:

  • Родительский div очерчен черной рамкой и занимает всю доступную ширину;
  • span очерчен синей рамкой, внутри div он занимает только необходимое для отображения пространство и начинается с той же самой строки;
  • Абзац, который очерчен красной рамкой, также занимает все доступное пространство и начинается с новой строки.

Теперь с помощью HTML display block я изменю поведение span на поведение блочного элемента, а поведение абзаца на поведение строчного. Родительский div остается без изменений. Смотрите результат и демо-версию:


Посмотреть онлайн демо-версию и код

span начинается с новой строки и границы абзаца заканчивается там, где заканчивается его текст. Он не занимает всю доступную ширину, как div или span .

Данная публикация представляет собой перевод статьи « CSS display and visibility: 6 examples to show/hide HTML elements » , подготовленной дружной командой проекта Интернет-технологии.ру

Сделаю минимальный пример:

Вопрос именно про display: none , поэтому способы прозрачности и нулевой высоты взамен данного свойства не предлагать. Анимация конечно же может содержать в себе opacity , height , width , transform и прочие стили. При помощи JS, особенно с помощью jQuery, это тоже без труда реализуется, но, вопрос именно по CSS.

Если таковых нет, поделитесь, что используете и почему? Например, при сокрытии и отображении подробной информаци или обрезки текста.

Нужно на живом сайте убрать все display: none так как их много в ручную это делать лень. И для отладки придется делать это не 1 раз.

Может есть расширение для хрома какоенибудь для работы с скриптами знаю есть для работы с CSS Stylish

Или было что то подобное для контакта при удалении множества друзей прописывали код прямо в браузер на нужной странице

Отключить «display: none;» в CSS3/ Susy



поэтому я работаю с susy2 и Susy-breakpoints. Теперь у меня есть проблема, что кнопка должна отображаться на всех точках останова, кроме самой маленькой.

Моя компания использует подход mobile-first, который означает, что сначала стилизуется самая маленькая точка останова, а все остальные точки останова основаны на этой первой точке.

Поскольку мне нужно скрыть кнопку на самой маленькой точке останова, я использовал display: none на ней, но я не могу найти способ снова показать кнопку на больших точках останова.

Теперь мой вопрос заключается в том, Могу ли я избавиться от ‘display: none’ любым способом или есть какой-то другой способ скрыть и показать содержимое?

Я не могу просто использовать ‘visibility: hidden’, так как остальные элементы должны двигаться вверх и занимать это пространство.

Кроме того, просто установка свойства ‘display’ в другое значение не работает для меня, даже с !important .

Вот мой текущий код для скрытой кнопки:
HTML:

<div>
  <a href="${item/link}">Weiterlesen</a>
</div>

И CSS:

.button{
  display: none;
}

И для той части, где мне нужно включить его снова:
CSS:

.button{
  display: block !important;
  border: 1px solid #67717D;
  border-radius: 3px;
  height: 40px;
  margin: auto 10px 20px 10px;
  text-align: center;
}
html css hide display susy
Поделиться Источник SophisticOtter     01 августа 2018 в 08:23

2 ответа


  • CSS3 переходов + display none + prevent overscroll

    Поэтому, если вы еще не знакомы, переходы CSS3 не анимируют display: none , поскольку они полностью удаляют целевой элемент из DOM. Итак, вот моя проблема. У меня есть боковая панель с большими всплывающими дивами,которые появляются при наведении курсора. К сожалению, поскольку я могу переходить…

  • Использование Susy с компасом-какие файлы должны быть установлены?

    Я пытаюсь использовать Сюзи в качестве элемента сетки в проекте http://susy.oddbird.net / К вашему сведению я также использую следующие библиотеки Компас Assetic Symfony (2.x) Ubuntu (10.4) Когда я пытаюсь импортировать susy в свой файл sass @import compass/reset @import compass/css3 @import susy…



1

Используйте правило CSS @media (вы можете изменить точку останова самостоятельно)

При первом создании мобильного телефона всегда ставьте стиль мобильного телефона (самый маленький экран) в верхней части файла css. Затем используйте min-width при добавлении стиля для больших экранов, это лучший способ создания мобильных приложений.

.button{
  display: none;
  border: 1px solid #67717D;
  border-radius: 3px;
  height: 40px;
  margin: auto 10px 20px 10px;
  text-align: center;
}

@media screen and (min-width: 480px) {
    .button{
      display: block;
    }
}
<div>
  <a href="#">Weiterlesen</a>
</div>

Поделиться Dennis     01 августа 2018 в 08:36



0

Использовать media-query

Узнайте здесь: https://www.w3schools.com/css/ css3_mediaqueries_ex.asp \

Для примера(в размере экрана, который меньше 600px , он скроет):

@media screen and (min-width: 600px) {
     .button{
      display: block !important;
      border: 1px solid #67717D;
      border-radius: 3px;
      height: 40px;
      margin: auto 10px 20px 10px;
      text-align: center;
      }
    }
. button{
  display: none;
}
<div>
  <a href="${item/link}">Weiterlesen</a>
</div>

Обратите внимание!

чтобы использовать media-query , вы должны поместить этот meta в тег head :

<meta name="viewport" content="width=device-width, initial-scale=1">

Поделиться לבני מלכה     01 августа 2018 в 08:34


Похожие вопросы:


Susy gallery разбивает высоту для отображения таблицы и ячейки таблицы

Я пытаюсь получить столбцы одинаковой высоты в моей адаптивной сетке, используя gallery mixin для SUSY. Для этого я установил контейнер display: table и столбец display: table-cell. Это работает для…


Использование susy с Jekyll

Можно ли использовать Susy с Jekyll? Если да, то как? Я попробовал добавить ‘susy’ в свой Gemfile и bundle install ‘ ing, а затем добавить susy в свой массив gems в config. yml : // _config.yml ……


В чем разница между susy-breakpoint и susy-media?

Единственное отличие, по-видимому, заключается в том, что вы можете передать новую сетку в качестве второго аргумента susy-breakpoint . Почему бы просто не использовать susy-breakpoint и не оставить…


CSS3 переходов + display none + prevent overscroll

Поэтому, если вы еще не знакомы, переходы CSS3 не анимируют display: none , поскольку они полностью удаляют целевой элемент из DOM. Итак, вот моя проблема. У меня есть боковая панель с большими…


Использование Susy с компасом-какие файлы должны быть установлены?

Я пытаюсь использовать Сюзи в качестве элемента сетки в проекте http://susy.oddbird.net / К вашему сведению я также использую следующие библиотеки Компас Assetic Symfony (2.x) Ubuntu (10.4) Когда я…


Отключить переходы css3 в Flexslider?

Кто-нибудь знает, как отключить переходы CSS3 в Flexslider v2? Мне сказали, что вы можете отключить их, но я не вижу, как это сделать. В настоящее время переходы, возможно, вызывают столкновения с…


Как сбросить контейнер Susy?

Каков наилучший метод сброса контейнера Susy grid? У меня есть сетка с парой контейнеров друг под другом, вот так: +——————+ | [container] | | [container] | | [container] | | |…


Горизонтальный список с сеткой Susy

Я хочу построить android-подобную основную навигацию, которая вписывается в сетку Susy. Это выглядит так: Код идет сюда: HTML: <div class=container> <nav> <ul…


CSS3 + ‘display’ ошибка переключения в Chrome?

В течение нескольких месяцев я использовал селектор CSS3+, чтобы применить CSS к определенным элементам. Вот демонстрация моего использования: http://jsfiddle.net/HB5Bz/2 / В IE и более старых…


::after vs :after псевдо-элемент в SUSY 2.0

В SUSY v1.x, писать: .content { @include container; } составлен по состоянию .content { max-width: 100%; margin-left: auto; margin-right: auto; } . content:after { content: ; display: block; clear:…

Ещё четыре способа скрыть и показать элементы при помощи HTML и CSS — CSS-LIVE

Перевод статьи Four More Ways To Hide & Show Elements with HTML and CSS с сайта demosthenes.info, c разрешения автора — Дадли Стори.

Приквел к этой статье – «Четыре способа заставить элементы исчезнуть (и появиться) при помощи CSS» – был сосредоточен на классических техниках для скрытия элементов на странице; на этот раз используются методы, которые работают в современных браузерах, с некоторыми ограничениями для IE. Используется разметка, которая похожа на разметку из предыдущего примера:

<figure id="oymyakon">
<img src="nastya.jpeg" alt>
<figcaption>Nastya, photographed by Sean Archer</figcaption>
</figure> <p>Located deep in Siberia, the village of Oymyakon holds the title of the coldest permanently inhabited place on Earth, tied with Verkhoyansk. 
<p>From December to February, the weather in the tiny village (population 500) plummets to -50°F (-45C), with a record low of -90°F (-68C) registered in 1933. At those temperatures, a naked human left outside would freeze to death in under a minute…

CSS будет таким:

body {
color: #fff;
background: url(px.png) #333;
line-height: 1.4;
font-size: 1.1rem;
}
figure#oymyakon {
float: right; width: 50%;
font-size: 0;
}
figure#oymyakon img {
width: 100%; height: auto;
box-shadow: 0 0 12px rgba(0,0,0,.3);
}
figure#oymyakon figcaption {
text-align: center;
font-size: 1rem;
font-style: italic;
margin-top: 1rem;
}

В этой статье я применяю разные техники для скрытия элемента <figure>: можно протестировать эти методы в интерактивном примере в начале оригинальной статьи или перейдя по этой ссылке на CodePen.

Масштабирование элемента в 0

figure#oymyakon { transform: scale(0); }

Очевидно, если вы делаете что-то бесконечно маленьким, это «что-то» в итоге исчезнет. Стоит отменить, что изначальная область элемента сохранится, потому что действие трансформации по сути похоже на поведение элемента с position: relative;

Возврат значения scale в значение  1  заставит элемент появиться снова; этот переход также может быть анимирован.

Минусы: Поддерживается во всех современных браузерах, но только начиная с IE9+. Нельзя применять к строчным элементам. Для старых версий браузеров требуются префиксы.

HTML5-атрибут hidden

<figure id="oymyakon" hidden>

Хотя визуально он действует так же, как  display: none, этот элемент фиксирует состояние элемента

При установке элементу, hidden указывает, что элемент еще не имеет или уже не имеет непосредственного отношения к текущему состоянию страницы.

Атрибут hidden уже используется для таких HTML5-элементов, как details. В отличие от других описанных здесь методов, атрибут  hidden скрывает элемент от любых способов представления, включая печать, мобильные и скринридеры. Поддерживается всеми современными браузерами, за исключениями одного.

Минусы: Всё ещё не поддерживается в IE, хотя это легко решается в CSS при помощи селектора по атрибуту:

[hidden] { display: none; }

Нулевой height и overflow:hidden

figure#oymyakon { height: 0; overflow: hidden; }

Традиционное решение. Фактически «схлопывает» элемент по вертикали и делает его невидимым; работает при условии, что у элемента нет видимой границы. Стоит отметить, что некоторое пространство на странице для скрытого элемента, вероятно, будет «забронировано»: несмотря на то, что у элемента нет высоты, у него всё ещё есть ширина и, возможно, поле, которые могут продолжать влиять на макет страницы.

Минусы: Не применяется к строчным элементам. Значение height не может быть анимировано, хотя max-height может.

Фильтр размытия

figure#oymyakon { filter: blur(100px); }

Новейший подход, который вообще не будет работать в IE (по крайней мере на данный момент). И всё же  blur  – интересный вариант, который стоит рассмотреть на будущее.. Достаточное размытие делает элемент полностью невидимым, а при уменьшении значения blur до 0 элемент снова оказывается «в фокусе»

Соображения:

  • размытие небольшого текста работает лучше чем изображения
  • Размытые изображения могут  добавить оставшейся части страницы оттенок цвета, в зависимости от их относительного размера и значения blur .
  • Чем выше значение  blur, тем  больше требуется вычислительных циклов для его достижения; достаточно высокие значения могут существенно загрузить графический процессор, что делает эту технику нецелесообразной для мобильных устройств на данный момент.
  • Поддерживается только в последней версии Firefox (35 версия – прим. перев.) (хотя есть возможность использовать SVG в качестве запасного варианта)
  • Всё ещё требует браузерных префиксов для Chrome и Safari.
  • Как уже было указано, не будет работать ни в каких версиях IE.

С этими и другими методами, рассмотренными в прошлой статье, у вас есть полный набор инструментов для создания элементов, которые появляются и исчезают на странице. Важно понимать, что не существует единственной «правильной» или «лучшей» техники: бывает лишь наиболее подходящий инструмент для конкретной задачи. Это относится и к JavaScript, у которого есть собственные методы для добавления и удаления элементов в DOM.

P.S. Это тоже может быть интересно:

pointer-events — CSS | MDN

CSS свойство pointer-events позволяет контролировать события, при которых элемент может стать объектом события мыши.  Если это свойство не задано, то к содержимому SVG будут применяться характеристики значения visiblePainted.

Вдобавок к указанию того, что элемент не является объектом события мыши, значение none сообщает событию мыши проходить «через» элемент и обращаться к элементу, находящемуся «под» ним.


pointer-events: auto;
pointer-events: none;
pointer-events: visiblePainted; 
pointer-events: visibleFill;    
pointer-events: visibleStroke;  
pointer-events: visible;        
pointer-events: painted;        
pointer-events: fill;           
pointer-events: stroke;         
pointer-events: all;            


pointer-events: inherit;
pointer-events: initial;
pointer-events: unset;

Значения

auto
Элемент ведёт себя так же, как и если бы свойство pointer-events не было задано. В SVG это значение даёт такой же эффект, как и значение visiblePainted.
none
Элемент не может быть целью (target) событий мыши; тем не менее, целью событий мыши могут быть его потомки, если их pointer-events имеет какое-либо другое значение. В этом случае события мыши вызовут ожидаемое срабатывание обработчиков на этом родительском элементе на пути к/от потомк(у)/(а) во время фазы захвата/всплытия.
visiblePainted
Только SVG. Элемент может быть целью события мыши только когда свойство visibility установлено в значение visible и когда курсор мыши находится над внутренней частью (‘fill’) элемента, при этом свойство fill установлено в значение отличное от none, или над периметром элемента (‘stroke’), при этом свойство stroke установлено в значение отличное от none.
visibleFill
Только SVG. Элемент может быть целью события мыши только когда свойство visibility установлено в значение visible и когда курсор мыши находится над внутренней частью (‘fill’) элемента. Значение свойства fill не влияет на обработку события.
visibleStroke
Только SVG. Элемент может быть целью события мыши только когда свойство visibility установлено в значение visible и когда курсор мыши находится над периметром элемента (‘stroke’). Значение свойства stroke не влияет на обработку события.
visible
Только SVG. Элемент может быть целью события мыши только когда свойство visibility установлено в значение visible и когда курсор мыши находится над внутренней частью (‘fill’) или над периметром (‘stroke’) элемента. Значение свойств fill и stroke не влияют на обработку события.
painted
Только SVG. Элемент может быть целью события мыши только когда курсор мыши находится над внутренней частью (‘fill’) элемента, при этом свойство fill установлено в значение отличное от none, или над периметром элемента (‘stroke’), при этом свойство stroke установлено в значение отличное от none. Значение свойства visibility не влияет на обработку события.
fill
Только SVG. Элемент может быть целью события мыши только когда курсор мыши находится над внутренней частью (‘fill’) элемента. Значение свойств visibility и fill не влияют на обработку события.
stroke
Только SVG. Элемент может быть целью события мыши только когда курсор мыши находится над периметром элемента (‘stroke’). Значение свойств visibility и stroke не влияют на обработку события.
all
Только SVG. Элемент может быть целью события мыши только когда курсор мыши находится над внутренней частью (‘fill’) или над периметром (‘stroke’) элемента. Значение свойств visibilityfill и stroke не влияют на обработку события.

Формальный синтаксис

Пример 1


img {
  pointer-events: none;
}

Пример 2

Сделать ссылку на ресурс http://example.com не реагирующей на нажатие(click), наведение(:hover) и т.д.

<ul>
  <li><a href="https://developer.mozilla.org">MDN</a></li>
  <li><a href="http://example.com">example.com</a></li>
</ul>
a[href="http://example.com"] {
  pointer-events: none;
}

Обратите внимание, что предотвращение того, чтобы элемент был объектом событий мыши,  с помощью pointer-events не обязательно означает, что обработчики событий мыши на этом элементе не могут или не будут запускаться. Если у одного из  дочерних элементов есть явные pointer-events, позволяющие этому ребёнку быть объектом событий мыши, тогда любые события, нацеленные на этого дочернего элемента, будут проходить через родителя, когда событие перемещается вдоль родительской цепочки и запускает обработчики событий на родительском объекте. Конечно, любая активность мыши в точке на экране, которая покрывается родителем, но не дочерним, не будет поймана ни ребёнком, ни родителем (он пройдёт через «родительский» на «цели» под ним).

Мы хотели бы предоставить более тонкий контроль (а не только auto и none) в HTML, когда части элемента смогут «поймать» события мыши. Если у вас есть какие-то конкретные вещи, чтобы помочь нам в решении как следует расширить pointer-events для HTML, и которые вы хотели бы сделать с этим свойством, добавьте их в раздел «Использовать случаи» на этой странице вики (не беспокойтесь, мы всё сохраним аккуратно). 

Это расширение для элементов HTML, хоть и присутствует в ранних версиях CSS Basic User Module Interface Level 3, было перенесено на level 4.

BCD tables only load in the browser

В чем разница между display: none и visibility: hidden в CSS?

Порой при разработке веб-страниц иногда требуется «спрятать» конкретные элементы. Вы, конечно, можете просто удалить эти элементы из HTML-разметки. Но это не выход из положения. Чтобы сохранить элемент, но скрыть его, необходимо использовать CSS или HTML hidden.

Два самых распространенных способа скрыть элемент — это свойства CSS «display» и «visibility». На первый взгляд, кажется, что оба свойства делают одно и то же. Но каждое из них имеет свои отличительные особенности, о которых следует знать.

Visibility

При использовании visibility: hidden элемент не отображается в браузере. Но скрытый элемент все еще занимает место в дизайне страницы. Это выглядит так, будто вы сделали элемент невидимым, но он все еще остается на своем месте и занимает пространство.

Если вы размещаете на веб-странице тег DIV и используете CSS, чтобы придать ему размер 100 на 100 пикселей, свойство visibility: hidden делает блок невидимым на экране. Но текст, следующий за ним, будет размещаться таким образом, словно этот блок все еще присутствует на странице.

Я бы использовал hidden HTML input, чтобы сначала спрятать этот элемент, а затем вернуть его обратно при наведении курсора. Это один из примеров использования этого свойства.

Display

В отличие от свойства visibility, при использовании которого элемент остается в потоке документа, display: none полностью убирает элемент из документа. Он больше не занимает места даже несмотря на то, что он еще находится в исходном коде. Элемент действительно удаляется из потока документа. Но если вы неправильно используете это свойство, оно может полностью разрушить страницу!

Я часто использую display: none, когда тестирую веб-страницу. Когда мне нужно ненадолго скрыть какую-либо область страницы, чтобы я смог протестировать другую. Но необходимо помнить, что скрытый элемент нужно вернуть обратно на веб-страницу до того, как она будет добавлена на сайт. Сделать это нужно потому, что элемент, удаленный из потока документа данным методом не виден поисковикам. В прошлом этот способ использовался хакерами, чтобы влиять на рейтинг в поисковых системах. Поэтому элементы hide HTML, которые не отображаются, могут восприниматься Google как негативный сигнал.

Свойство display:none полезно при создании адаптивного сайта, в котором присутствуют элементы, доступные только для одного размера экрана, но не для других.

Также можно использовать display: none, чтобы скрыть элемент, а затем вернуть его обратно при помощи медиа-запросов. Это корректное использование свойства display: none, поскольку вы не пытаетесь скрыть что-либо с целью совершения нарушений.

Пожалуйста, опубликуйте ваши комментарии по текущей теме статьи. За комментарии, подписки, лайки, отклики, дизлайки низкий вам поклон!

Display (block, none, inline) в CSS — задаем тип отображения Html элементов на вебстранице

Обновлено 7 января 2021
  1. Display block и inline — как блочный сделать строчным
  2. Display list-item — создание списков на основе блочных тегов
  3. Display none и inline-block — динамика посредством CSS

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня мы поговорим про довольное важное правило языка стилевой разметки под названием Display. Самые часто используемые его значения вы уже, наверное, встречали в CSS коде: display block, none или inline. В этой статье мы попробует рассмотреть все это подробнее и на примерах.

По сути, оно позволяет задавать и при необходимости менять способы отображения тех или иных элементов Html кода. С помощью него блочные элементы можно будет сделать строчными или даже списком, а также используя display:none можно реализовывать динамику на вебстранице, например, создавать выпадающие меню без использования скриптов на чистом CSS.

Display block и inline — как блочный сделать строчным

Как мы с вами уже узнали из курса по языку Html, на веб страницах формируются элементы с помощью тегов, которые в свою очередь обрабатывает парсер Html используемого вами браузера и отображает их на экране вашего компьютера. То, как будут выглядеть эти элементы (созданные на основе Html тегов), определяется в современной верстке языком стилевой разметки CSS.

Даже если вы никаких специальных стилей не задавали для каких-либо тегов, то они все равно будут отображаться браузером с учетом тех правил, которые были приняты для них по умолчанию. Где же можно посмотреть на эти самые CSS стили по умолчанию для всех Html тегов? Ну, все в том же валидаторе W3C на этой странице. Если прокрутить ее оглавление до конца, то там вы увидите ссылку «Default style sheet for HTML 4», где и будет приведена нужная нам информация.

К чему все это? Я уже неоднократно при описании тех или иных Html тегов акцентировал ваше внимание на том, к какому именно типу относится этот тег — строчный или же блочный. В зависимости от этого мы предполагали наличие определенного поведения у данных элементов — либо они будут стремиться занять все доступное им место по ширине (блочные), либо не будут (строчные).

Но я так и не объяснил откуда берется такое разделение и где можно узнать к какому именно типу относится конкретный тег. Так вот, узнать это как раз можно на упомянутой нами странице спецификации CSS под названием «Default style sheet for HTML 4» и отвечает за все это безобразие специальное правило Display.

Например, там в самом начале перечислены все элементы, которые относятся к блочным и происходит это из-за того, что на них действует правило display:block:

Здесь вы можете увидеть все те же теги абзацев P, заголовков h2-H6, контейнеров Div и других блочных элементов. Если посмотреть на список CSS свойств и допустимых для них значений в валидаторе W3C, то для display мы увидим следующее:

Если не указано другого, то по умолчанию будет использоваться вариант «display:inline» (т.к. именно это значение прописано в столбце «Initial value»), что будет соответствовать формированию строчных элементов. Поэтому в приведенной на странице спецификации «Default style sheet for HTML 4» те теги, которые должны отображаться как строчные (например, span), вообще не описаны или для них не указано значение Дисплей, ибо по умолчанию они и так будут строчными.

Правило Дисплей отвечает за то, как данный элемент надо строить и отображать браузеру. Оно говорит обозревателю, что из себя представляет тег и как его надо показывать. Имеется возможность показывать как элемент строки (display: inline) или как блок (block), показывать как таблицу (table) или как часть таблицы (inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption). Это правило очень важное.

Но то, что задано по умолчанию для тегов, вовсе не является величиной постоянной. При желании или возникшей необходимости вы всегда сможете сделать блочный элемент (для которого по умолчанию браузер использовал display: block) строчным и, соответственно, наоборот.

Давайте рассмотрим простой пример с тремя тэгами, один из которых по умолчанию будет строчным (span), а два других — блочными (h4 и P). Для большей наглядности я залил область отведенную для этих элементов фоном с помощью Background:

<h4> h4 по умолчанию будет отображать браузером как блочный</h4>
<span> Span - типичный пример строчного тега </span>
<p> P - еще один по умолчанию блочный <p>

В результате браузер отобразил все элементы в полном соответствии с их умолчательными значениями правила Display:

Как видите, первый блок h4 (с умолчательным значением block) занимает весь доступный ему размер по горизонтали (равно как и третий элемент P), ну а строчный Span (с умолчательным значением display:inline) занимает по ширине ровно столько места, сколько нужно для размещения заключенного в него контента.

Ну, а теперь давайте из изначально блочного тега h4 сделаем строчный с помощью добавления к нему display inline (я уменьшил текст в первых двух элементах для получения большего эффекта наглядности):

<h4> h4</h4>
<span> Span</span>
<p> P - еще один по умолчанию блочный тэг <p>>

Как вы можете видеть, браузер учел display:inline и теперь элемент заголовка h4 (изначально блочный) уже не занимает все доступное ему по ширине пространство, вследствие чего к нему вплотную оказался прижат следующий за ним строчный тэг Span.

Но прижался он к предыдущему не вплотную, а разделенный пробелом. При бытности заголовка h4 блоком этот пробел не учитывался, но после его перерождения в тег строчный, все стоящие в коде пробельные символы (пробелы, табуляции и переносы строк) были преобразованы в единственный пробел по всем правилам языка гипертекстовой разметки, о которых вы можете почитать по приведенной ссылке.

Точно так же можно из строчного тега Span сделать блочный с помощью добавления display:block:

<h4> h4</h4>
<span> Span</span>
<p> P - еще один по умолчанию блочный Html элемент <p>

И в результате наше наглядное пособие отобразит произошедшую метаморфозу (что это?):

Span стал занимать всю область,доступную ему по ширине в не зависимости от количества контента заключенного в этот тэг.

Display list-item — создание списков на основе блочных тегов

А теперь давайте попробуем с помощью Дисплей сделать ряд блочных тегов элементами списка. С этим нам поможет справиться правило display:list-item. Пусть у нас изначально будут присутствовать несколько абзацев и заголовок:

<h4> h4</h4>
<p> Первый абзац (тег P) <p>
<p> Второй абзац <p>
<p> Третий <p>

Которые будут выглядеть примерно так:

Теперь, если мы добавим ко всем блочным тэгам абзаца CSS правило display:list-item, то браузер сгенерирует для всех этих элементов специальную область для маркера, в которых появятся эти самые маркеры используемые по умолчанию:

<h4> h4</h4>
<p> Первый абзац (тег P) </p>
<p> Второй абзац </p>
<p> Третий </p>

Но в таком виде вы никаких изменений не заметите. Область маркера добавляется перед областью блочного тега и чтобы ее увидеть, нужно каким-либо образом отодвинуть этот блок слева от края контейнера, в котором он живет. Сделать это можно с помощью все того же Margin, а именно прописав для нужных абзацев margin-left:20px (или заключив абзацы, например, в тег цитаты blockquote) и тогда получим следующую картину:

Т.о. мы создали элементы маркированного Html списка без использования тегов LI (получился аналог UL). При желании, для настройки вида используемого маркера вы сможете использовать уже рассмотренное нами ранее CSS правило list style. Можно сделать и обратное, т.е. прописать для тэгов LI свойство display:block и сделать из списка обычные абзацы.

Еще среди возможных значений Display вы можете видеть огромное количество вариантов для задания внешнего вида таблицам и ее составным частям. У каждого элемента таблицы в Html коде проставлено свое значение Дисплей:

Касаться того, что именно они делают, я не буду, ибо вряд ли вам когда-нибудь это понадобится, а тема эта весьма сложна. Кроме того, даже IE 7 не поддерживает все эти значения Дисплей для таблиц, не говоря уже и о более старых версиях этого чудо-браузера.

Display none и inline-block — динамика посредством CSS

Другое дело display: none. Если вы посмотрите на все те же умолчательные стили для Html элементов на странице «Default style sheet for HTML 4», то увидите, что «none» прописано по умолчанию для тега Head:

Что это означает? Это означает то, что если у элемента прописан display: none, то он никак не отображается на вебстранице и никаким образом не участвует в построении этого документа (под него даже не резервируется место).

Именно так и должен вести себя тэг Head, который предназначен исключительно для размещения внутри себя служебных данных (не отображаемых на вебстранице, например, там прописывается путь до иконки favicon.ico и до файла таблиц каскадных стилей с помощью служебных гиперссылок Link) и скриптов.

Так же правило display:none можно использовать, например, для создания выпадающего меню. Помните, когда я рассказывал про селекторы псевдоклассов и псевдоэлементов, то мы упоминали про такой псевдокласс, как hover. С помощью него можно было задать правила, которые бы начинали работать только при наведении курсора мыши на нужный нам Html элемент.

Никто не мешает вам сделать выпадание содержимого списка при наведении на него мышкой (выпадающее меню). В обычной ситуации для выпадающего содержимого списка будет прописано display:none, ну, а с помощью псевдокласса hover можно будет приписать для этого же содержимого display:block и тогда меню будет раскрываться при наведении на него курсора мыши.

Т.о. получается, что значение «none» имеет смысл использовать только для реализации какой-то динамики на вебстранице (видно — невидно), а писать его просто так никакого смысла не имеет, разве что только в случае уже упомянутого чуть выше тега Head, но опять же это значение для него используется браузерами по умолчанию.

Да, есть еще значение display:inline-block, которое позволяет придать какому-то тегу одновременно свойства строчного и блочного элемента. По отношению к внешним и соседним тэгам он будет вести себя как строчный (т.е. рядом с ним могут располагаться и другие строчные элементы), а вот по отношению к вложенным в него тегам он будет вести себя как блочный (т.е. можно будет задавать его размеры как по ширине, так и по высоте, а еще задавать отступы с помощью марджинов и педдингов).

Вообще, «inline-block» — это тема для отдельного разговора, тем более, что он не поддерживается полностью даже IE7. Но при желании вы можете ознакомиться с возможностями этого CSS правила из материалов этой статьи.

Получается, что с помощью правила Display можно в любой момент поменять уже имеющиеся в Html коде элементы на другие (просто изменив способ их отображения на вебстранице), при этом не меняя эти самые теги. Дело в том, что тэгов в коде может быть очень много и менять их все вручную будет затруднительно, а вот с помощью Дисплей это можно будет сделать в несколько кликов через внешний файл таблиц каскадных стилей, что очень удобно.

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Bootstrap 4 — Управление отображением элементов

В этой статье познакомимся с классами фреймворка Bootstrap 4, которые предназначены для адаптивного управления CSS свойством display HTML элементов.

Display-классы Bootstrap

В Bootstrap 4 имеется категория классов, с помощью которых можно не только адаптивно скрывать элементы, но и управлять тем как они должны быть показаны на странице.

Список display-классов Bootstrap 4:

  • d-none
  • d-inline
  • d-inline-block
  • d-block
  • d-table
  • d-table-cell
  • d-flex
  • d-inline-flex

Первый класс (d-none) предназначен для скрытия элемента на странице. Осуществляет это он посредством установки HTML элементу CSS свойства display со значение none.

Остальные классы управляют тем, как элемент должен быть представлен на странице. Класс d-inline представляет элемент строчным (display: inline), d-block – блочным (display: block), d-inline-block — строчно-блочным (display: inline-block), d-table – таблицой (display: table), d-table-cell – ячейкой таблицы (display: table-cell), d-flex – блочным flex-контейнером (display: flex), d-inline-flex — строчным flex-контейнером (display: inline-flex).


Кроме этого фреймворк Bootstrap 4 позволяет управлять CSS свойством display HTML элементов адаптивно. Это означает, что HTML элемент при одной ширине viewport может отображаться одним образом, а при другой – по-другому.

Синтаксис display-класса Bootstrap 4:


d{-breakpoint}-?

В данном классе нужно вместо:

  • breakpoint указать название контрольной точки (sm, md, lg, xl), начиная с которой будет применяться указанное CSS свойство display к HTML элементу (без обозначения — начиная с самых крохотных устройств).
  • ? задать одно из значений: none, inline, inline-block, block, table, table-cell, flex, inline-flex.

Список всех display-классов Bootstrap 4:

  • d-none
  • d-inline
  • d-inline-block
  • d-block
  • d-table
  • d-table-cell
  • d-flex
  • d-inline-flex
  • d-sm-none
  • d-sm-inline
  • d-sm-inline-block
  • d-sm-block
  • d-sm-table
  • d-sm-table-cell
  • d-sm-flex
  • d-sm-inline-flex
  • d-md-none
  • d-md-inline
  • d-md-inline-block
  • d-md-block
  • d-md-table
  • d-md-table-cell
  • d-md-flex
  • d-md-inline-flex
  • d-lg-none
  • d-lg-inline
  • d-lg-inline-block
  • d-lg-block
  • d-lg-table
  • d-lg-table-cell
  • d-lg-flex
  • d-lg-inline-flex
  • d-xl-none
  • d-xl-inline
  • d-xl-inline-block
  • d-xl-block
  • d-xl-table
  • d-xl-table-cell
  • d-xl-flex
  • d-xl-inline-flex

Примеры работы с display-классами

1. Создадим адаптивную разметку, состоящую из 3 секций (L, M и R). Секция L должна отображаться только на контрольной точке xl, а на остальных – скрыта.

Bootstrap 4 — Пример адаптивной разметки блока

<div>
    <div>
        <div>L</div>
        <div>M</div>
        <div>R</div>        
    </div>
</div>

2. Например, скроем некоторый HTML элемент на xs (крохотных устройствах), md и lg. На остальных контрольных точках (sm и xl) данный элемент будем отображать как блочный (display: block).


<div>
    ...
</div>

3. Например, рассмотрим, как можно осуществить скрытия элемента только на устройствах md.


<div>
    ...
</div>

Классы, управляющие видимостью элементов при печати

Во фреймворке Bootstrap 4 имеются классы, с помощью которых можно управлять видимостью элементов при печати.

Первые три класса из этого набора (d-print-block, d-print-inline, d-print-inline-block) предназначены для скрытия элемента в браузере и отображения его только при печати (как block, inline, inline-block).

Четвёртый класс d-print-none выполняет обратное действие, он оставляет элемент видимым в браузере и скрывает его при печати.

Класс в браузере при печати
d-print-block скрыт виден (как display: block)
d-print-inline скрыт виден (как display: inline)
d-print-inline-block скрыт виден (как display: inline-block)
d-print-none виден скрыт

Пример, в котором показано как можно с помощью вышепиведённых классов управлять видимостью элементов при печати:


<!-- элемент виден в браузере, но будет скрыт при печати -->
<nav>...</nav>

<!-- элемент будет отображаться при печати как блочный (в браузере данный элемент скрыт) -->
<div>...</div>

<!-- элемент будет отображаться при печати как строчный (в браузере данный элемент скрыт) -->
<div>...</div>

<!-- элемент будет отображаться при печати как строчно-блочный (в браузере данный элемент скрыт) -->
<div>...</div>

Общие сведения об отображении CSS: None, Block, Inline и Inline-Block | by Cem Eygi

Вы когда-нибудь замечали, что некоторые HTML-теги, такие как

,

,

    , занимают всю ширину пространства и начинаются с новой строки, тогда как другие HTML-теги такие теги, как , или , не нуждаются в новой строке и могут быть размещены рядом?

    Это связано с различным поведением дисплея : Блок или встроенный . Давайте посмотрим на разницу на коротком примере. Без CSS я создаю HTML-шаблон с тегами

    и :

      

    Я абзац


    Я абзац тоже


    Я слово
    Я тоже слово.
    По умолчанию отображать поведение

    и

    Вы видите разницу? Каждый тег

    начинается с новой строки, даже если места достаточно. Span , однако, отображаются рядом.

    Каждый элемент HTML имеет отображаемое значение по умолчанию. — W3

    По умолчанию элементы HTML имеют блочное или встроенное поведение. Элементы, каждый из которых начинается с новой строки (

    тегов в этом примере), называются элементами уровня блока , а остальные ( ), которые можно разместить рядом, являются встроенными элементами . .

    Между блочными и встроенными элементами есть несколько различных характеристик:

    Элементы уровня блока
    • По умолчанию взять полную ширину (100% ширины)
    • Каждый отображается в новой строке
    • Свойства ширины и высоты можно установить
    • Может содержать другие блочные или встроенные элементы

    Поскольку теги

    являются элементами уровня блока, width и height могут быть установлены свойства:

     p {
    height : 100px ;
    ширина : 100 пикселей;
    фон: красный;
    цвет: белый;
    }

    Если бы здесь не была объявлена ​​ширина, то ширина по умолчанию

    была бы 100%.Однако я объявил ширину 100 пикселей, и следующий элемент

    по-прежнему начинается с новой строки:

    Блочные элементы всегда требуют новой строки

    Встроенные элементы

    • Занимают ровно столько места по мере необходимости.
    • Отображаются рядом
    • Не принимают свойства ширины или высоты, а также верхнее и нижнее поле.
    • Может быть родительским для других встроенных элементов

    Мы можем изменить поведение отображения элементов.Итак, давайте изменим поведение отображения тега

    на inline :

     p {
    height: 100px;
    ширина: 100 пикселей;
    фон: красный;
    цвет: белый;
    дисплей: встроенный;
    }

    Поскольку наш тег

    теперь является встроенным элементом, они будут размещены рядом, и свойства ширины и высоты больше не действуют: тег

    как встроенный элемент

    Просмотр полный список HTML-тегов как блочных и встроенных элементов.

    Показать свойство · Bootstrap

    Быстро и быстро переключайте отображаемое значение компонентов и многое другое с помощью наших утилит для отображения. Включает поддержку некоторых из наиболее распространенных значений, а также некоторые дополнительные функции для управления отображением при печати.

    Как это работает

    Измените значение свойства display с помощью наших служебных классов отзывчивого отображения. Мы намеренно поддерживаем только подмножество всех возможных значений для display .Классы можно комбинировать для получения различных эффектов по мере необходимости.

    Обозначение

    Показать служебные классы, которые применяются ко всем точкам останова, от xs до xl , не имеют аббревиатуры точки останова в них. Это потому, что эти классы применяются от min-width: 0; и выше и, следовательно, не связаны медиа-запросами. Однако остальные точки останова содержат аббревиатуру точки останова.

    Таким образом, классы именуются в формате:

    • .d- {value} для xs
    • .d- {breakpoint} - {value} для sm , md , lg и xl .

    Где значение является одним из:

    • нет
    • рядный
    • рядный блок
    • блок
    • стол
    • таблица-ячейка
    • стол-ряд
    • гибкий
    • линейный гибкий

    Медиа-запросы влияют на ширину экрана с заданной точкой останова или больше .Например, .d-lg-none устанавливает display: none; на экранах LG и xl .

    Примеры

      
    d-inline
    d-inline

    d-блок d-блок

       d-блок 
     d-block   

    Скрытие элементов

    Для более быстрой разработки, удобной для мобильных устройств, используйте классы адаптивного отображения для отображения и скрытия элементов по устройствам.Избегайте создания совершенно разных версий одного и того же сайта, вместо этого скройте элемент адаптивно для каждого размера экрана.

    Чтобы скрыть элементы, просто используйте класс .d-none или один из классов .d- {sm, md, lg, xl} -none для любого варианта адаптивного экрана.

    Чтобы отображать элемент только в заданном интервале размеров экрана, вы можете объединить один класс .d - * - none с классом .d - * - * , например .d-none .d-md- block .d-xl-none скроет элемент для всех размеров экрана, кроме средних и больших устройств.

    Размер экрана Класс
    Скрыто на всех .d-нет
    Скрыто только на xs .d-none .d-sm-block
    Скрыто только на sm .d-sm-none .d-md-block
    Скрыто только на мкр. .d-md-none .d-lg-block
    Скрыто только на LG .d-lg-none .d-xl-block
    Скрыто только на XL .d-xl-none
    Виден на всех .d-блок
    Отображается только на xs .d-блок .d-sm-none
    Отображается только на sm .d-none .d-sm-block .d-md-none
    Виден только на мкр. .d-none .d-md-block .d-lg-none
    Отображается только на LG .d-none .d-lg-block .d-xl-none
    Отображается только на xl .d-none .d-xl-block

    скрыть на экранах шире, чем LG

    скрыть на экранах меньше LG

      
    скрыть на экранах шире lg
    скрыть на экранах меньше lg

    Показать в печати

    Измените значение элементов display при печати с помощью наших служебных классов отображения печати.Включает поддержку тех же значений display , что и наши адаптивные утилиты .d- * .

    • .d-print-none
    • .d-print-inline
    • .d-print-inline-block
    • .d-print-block
    • .d-print-table
    • .d-print-table-row
    • .d-print-table-cell
    • .d-print-flex
    • .d-print-inline-flex

    Классы печати и отображения можно комбинировать.

    Только экран (Скрывать только при печати)

    Только печать (Скрыть только на экране)

    Скрыть до большого размера на экране, но всегда показывать на печати

      
    Только экран (Скрывать только при печати)
    Только печать (Скрыть только на экране)
    Скрыть до большого размера на экране, но всегда показывать при печати
    Отображение

    — попутный ветер CSS

    Блок

    Используйте блок для создания элемента уровня блока.

      
    1 2 3
      
    1
    2

    Встроенный блок

    Используйте встроенный блок для создания встроенного элемента уровня блока.

      
    1
    2
    3

    Inline

    Используйте inline для создания встроенного элемента.

      
    1
    2
    3

    Flex

    Используйте flex для создания гибкого контейнера на уровне блоков.

      
    1
    2
    3

    Inline Flex

    Используйте inline-flex для создания встроенного гибкого контейнера.

      
    1
    2
    3

    Сетка

    Используйте сетку для создания контейнера сетки.

      

    Inline Grid

    Используйте inline-grid для создания контейнера встроенной сетки.

      
       1 
       1 
       1 
    
    
       2 
       2 
       2 
      

    Contents

    Используйте content для создания «фантомного» контейнера, дочерние элементы которого действуют как прямые дочерние элементы родительского объекта..

      
    1
    2
    3
    4

    Таблица

    Используйте таблицу , .table-row , .table-cell , .table-caption , .table-column , .table-column- group , .table-header-group , table-row-group и .table-footer-group для создания элементов, которые ведут себя как соответствующие им элементы таблицы.

      
    Ячейка с дополнительным содержимым
    Ячейка 2
    Ячейка 3
    Ячейка 4
    Ячейка с дополнительным содержимым
    Ячейка 6

    Скрытый

    Используйте hidden , чтобы установить для элемента значение display: none и удалить его из макета страницы (сравните с .invisible из документации по видимости).

      
    1
    2
    3

    Отзывчивый

    Чтобы управлять свойством отображения элемента в определенной точке останова, добавьте префикс {screen}: к любому существующему классу служебной программы отображения. Например, используйте md: inline-flex , чтобы применить утилиту inline-flex только при средних размерах экрана и выше.

      

    Дополнительную информацию о функциях адаптивного дизайна Tailwind можно найти в документации по адаптивному дизайну.

    Пользовательская настройка

    Варианты

    По умолчанию для утилит отображения создаются только адаптивные варианты.

    Вы можете контролировать, какие варианты генерируются для утилит отображения, изменив свойство display в разделе options вашего попутного ветра .config.js файл.

    Например, эта конфигурация также будет генерировать варианты наведения и фокусировки:

     
      module.exports = {
        варианты: {
          продлевать: {
            
    + отображение: ['hover', 'focus'],
          }
        }
      }  

    Если вы не планируете использовать утилиты отображения в своем проекте, вы можете полностью отключить их, установив для свойства display значение false в разделе corePlugins вашего файла конфигурации:

     
      модуль.export = {
        corePlugins: {
          
    + display: false,
        }
      }  

    Скрыть или отобразить элементы в HTML с помощью свойства отображения

    < html >

    < head >

    9000 > Javascript title >

    < style type = "text / css" 000

    .круг {

    ширина: 130 пикселей;

    высота: 130 пикселей;

    радиус границы: 50%;

    поплавок: левый;

    правое поле: 50 пикселей;

    }

    . Закругленный {

    ширина: 130 пикселей;

    высота: 130 пикселей;

    Граница-радиус: 25%;

    поплавок: левый;

    правое поле: 50 пикселей;

    }

    .квадрат {

    ширина: 130 пикселей;

    высота: 130 пикселей;

    Граница-радиус: 0%;

    поплавок: левый;

    правое поле: 50 пикселей;

    }

    #circle {

    background-color: # 196F3D;

    }

    # Скругленный {

    background-color: # 5DADE2;

    }

    #square {

    background-color: # 58D68D;

    }

    стиль >

    головной 000 000 000 000 000 000 >

    < div класс = «круг» id = «круг» > >

    < div класс = «с округлением» id = с округлением > >

    < div class = «квадрат» id 9000 4 = "квадрат" > div >

    < скрипт тип = "текст / " текст

    документ.getElementById ("круг"). onclick = function () {

    document.getElementById ("circle"). style.display = "none";

    }

    document.getElementById («округлено»). Onclick = function () {

    "округлые").style.display = "нет";

    }

    document.getElementById («квадрат»). Onclick = function () {

    0003
    "квадрат"). style.display = "нет";

    }

    скрипт >

    3

    000 000 000 000 / html >

    Скрытый контент


    Обзор

    Может потребоваться скрыть содержимое по разным причинам.Иногда требуется предоставить дополнительную информацию пользователям программ чтения с экрана, которые могут не видеть визуальный контекст (где объекты расположены на экране), но дополнительный контент не должен быть виден на экране. Возможно, есть контент, который скрыт от всех, пока не будет нажата кнопка.

    Ожидание

    В большинстве случаев содержимое, которое не отображается на экране, также должно быть скрыто от пользователей клавиатуры и программ чтения с экрана, а содержимое, которое скрыто от пользователей клавиатуры и программ чтения с экрана, не должно отображаться на экране.Скрытый контент не должен включать элементы, на которые можно сфокусироваться. Например, если ссылка не отображается, она не должна получать фокус.

    Пять рекомендуемых методов и примеров использования для сокрытия контента:

    • HTML5 скрытый атрибут : мобильная навигация, которая появляется после нажатия кнопки
    • Свойство CSS display: none : Мобильная навигация, которая появляется после нажатия кнопки
    • CSS свойство видимость: скрыто : панель инструментов, где пространство должно быть зарезервировано, но неактивный элемент недоступен
    • Класс «визуально скрыт» : Альтернативный текст для программ чтения с экрана
    • Атрибут Aria-hidden : добавить на страницу в фоновом режиме при открытии модального диалогового окна

    Затронутые аудитории

    Это касается разных аудиторий, в зависимости от метода, используемого для скрытия контента.Некоторые методы скрывают контент от программ чтения с экрана и других вспомогательных технологий, но оставляют его видимым на экране. Другие делают контент невидимым, но оставляют его доступным для вспомогательных технологий. Третьи скрывают контент от всех.

    Что проверить на

    Убедитесь, что используемый метод соответствует причине скрытия содержимого. Убедитесь, что контент скрыт от нужной аудитории.

    В зависимости от используемого метода контент может быть скрыт от всех или только от определенной части посетителей веб-сайта.Если он скрыт от всех, он не будет виден на экране, а программы чтения с экрана и другие вспомогательные технологии не смогут получить доступ к содержимому.

    Дерево решений

    Выбор подходящего метода зависит от причины скрытия содержимого.

    1. Следует ли скрывать содержимое от всех?
      • Если место на странице должно быть зарезервировано (для макета или по другим причинам), используйте свойство CSS visibility: hidden .
      • Если место в резервировании не требуется, используйте либо встроенный CSS display: none , либо атрибут HTML hidden .
    2. Содержимое предназначено для программ чтения с экрана, но не должно отображаться на экране?
      • Рассмотрите возможность создания «визуально скрытого» класса со свойствами CSS, чтобы сделать содержимое невидимым.
    3. Следует ли скрывать содержимое от программ чтения с экрана, но оставаться видимым (например, веб-страницу за всплывающим окном)?
      • Используйте атрибут aria-hidden .

    Порядок вкладок

    Визуально скрытый CSS-класс похож на плащ-невидимку: все, что находится под плащом, не видно, но все же остается.И с этим можно столкнуться. Контент, скрытый таким образом, не отображается на странице, но все равно будет объявлен программами чтения с экрана. Если с помощью этого метода скрытые элементы, такие как ссылки, будут скрыты, люди, перемещающиеся с помощью клавиатуры, будут попадать по ссылкам, но не смогут увидеть, что это за ссылки.

    Контент, скрытый с помощью aria-hidden , будет виден, но не будет объявлен программами чтения с экрана. Если фокусируемые элементы скрыты с помощью этого метода, пользователи программы чтения с экрана все равно будут попадать на них, но не услышат, что это за элемент.

    Если используется любой из этих методов, фокусируемые элементы должны быть удалены из порядка табуляции. Чтобы удалить элемент из порядка табуляции, установите tabindex на "-1" .

    В следующем примере представлена ​​ссылка, которая скрыта от программ чтения с экрана с помощью aria-hidden и удалена из порядка табуляции с помощью tabindex = "- 1" :

      

    Эти атрибуты могут быть изменены программно, когда ссылка больше не будет скрыта от программ чтения с экрана и снова станет частью порядка табуляции:

      Текст ссылки  

    Примечание:

    Использование aria-hidden = "false" не рекомендуется.Вместо этого вам следует удалить атрибут aria-hidden .

    Дерево доступности

    HTML скрыто , aria-hidden и свойства CSS display: none и visibility: hidden удаляет элементы из дерева доступности. Удаление содержимого из дерева специальных возможностей скрывает его от программ чтения с экрана и других вспомогательных технологий.

    Объектная модель документа (DOM)

    Скрытие содержимого также может повлиять на объектную модель документа (DOM).DOM - это древовидная структура всех элементов веб-страницы. При использовании свойства CSS visibility: hidden пространство на странице, где обычно будет контент, зарезервировано. Это означает, что появится пустое пространство, которое может быть полезно для размещения другого контента на странице. HTML hidden и свойство CSS display: none полностью удаляют содержимое, включая пространство, со страницы. Это может изменить расположение других элементов на странице.

    Дочерние элементы

    Многие методы сокрытия содержимого также применимы к дочерним элементам (то есть к элементам, содержащимся внутри другого элемента). Например, элемент

    может содержать много других вложенных в него элементов:

    Пример заголовка

    Этот абзац и заголовок вложены в элемент div. Абзац и заголовок являются дочерними по отношению к div.

    Оценить скрытое содержимое

    1. Определите причину сокрытия содержимого, в том числе, кто должен и не должен иметь доступ к содержимому.
    2. Используйте приведенную ниже таблицу, чтобы определить, был ли использован правильный метод.

    Способы скрытия контента

    Метод Кто имеет доступ? От кого это спрятано? DOM удар Воздействие на дерево доступности Применяется к дочерним элементам? Пример использования
    HTML скрыто Никто Все Элементы не визуализированы

    Удалено из дерева доступности

    Есть

    Полностью скрыть контент до действий пользователя, например, мобильную навигацию, которая появляется после нажатия кнопки

    дисплей: нет Никто Все Элементы не визуализированы

    Удалено из дерева доступности

    Есть

    Полностью скрыть контент до тех пор, пока пользователь не начнет действовать, например, мобильная навигация, которая появляется после нажатия кнопки

    видимость: скрыта Никто Все Размеры сохраняются

    Удалено из дерева доступности

    Фокусируемые дети недоступны

    Панель инструментов, на которой место должно быть зарезервировано, но неактивный элемент недоступен

    «визуально скрыто» класс

    Пользователи клавиатуры и пользователи программ чтения с экрана

    Визуальных пользователей Контент обработан Нет Есть

    Альтернативный текст; не должно содержать фокусируемых элементов

    aria-hidden = "true" Визуальных пользователей Программы чтения с экрана Нет

    Удалено из дерева доступности

    Есть

    Добавить на страницу в фоновом режиме при открытии диалогового окна, но необходимо удалить ссылки, кнопки и другие интерактивные элементы из порядка табуляции; фокусируемые предметы все еще получают фокус, но не объявляются

    Примечание:

    Будьте осторожны, не используйте aria-hidden для каких-либо элементов, на которые можно сфокусироваться (ссылки, кнопки и другие интерактивные элементы), если вы не удалите эти элементы из порядка табуляции.В противном случае может появиться призрачный предмет, на который можно будет приземлиться с фокусировкой, но вспомогательным технологиям ничего не сообщается.

    Создать визуально скрытый класс

    Есть много способов создать визуально скрытый класс. Набор свойств проекта HTML5 Boilerplate версии 6.1.0 - хорошее место для начала.

    Кромка корпуса

    Шестой метод скрытия содержимого, свойство CSS opacity: 0 обычно не рекомендуется, за исключением очень ограниченного граничного случая, такого как анимация, изменяющая непрозрачность с 0 на 1.При непрозрачности 0 дочерние элементы, на которые можно сфокусироваться, такие как ссылки, все равно будут получать фокус, но не будут видны.

    Настройки дисплея | Webflow University

    В этом видео используется старый интерфейс. Скоро появится обновленная версия!

    Параметры отображения, расположенные на панели «Стиль», управляют поведением макета элемента и содержимым вокруг этого элемента. Здесь вы можете управлять тем, как элементы отображаются по отношению друг к другу - расположены ли они друг над другом или рядом.

    В этой статье мы рассмотрим каждую настройку отображения на панели стиля:

    1. Блок
    2. Flexbox
    3. Сетка
    4. Встроенный блок
    5. Встроенный
    6. Отображение: нет

    Блок

    Блок настройка отображения по умолчанию для большинства элементов. Каждый блочный элемент начинается с новой строки и занимает всю ширину своего родительского элемента, если не задана пользовательская ширина.

    Независимо от ширины, каждый элемент блока выталкивает следующий элемент на новую строку.Чтобы расположить элементы рядом, выберите другой параметр макета, например встроенный блок.

    Flexbox

    Элементы с гибкой компоновкой размещают своих прямых дочерних элементов по горизонтали или вертикали.

    Вы можете настроить, как прямые дочерние элементы складываются, когда они переносятся, как они выравниваются и выравниваются в гибком контейнере.

    Когда вы создаете гибкий контейнер, все прямые дочерние элементы этого родительского элемента становятся гибкими дочерними элементами. Вы можете добавлять и переопределять макет дочерних элементов Flex в настройках дочерних элементов Flex.

    Подробнее о гибких макетах.

    Сетка

    Элементы с макетом сетки размещают своих прямых дочерних элементов в нескольких столбцах и строках.

    Вы можете настроить расположение, выравнивание и распределение прямых дочерних элементов внутри компонентов сетки: контейнера, отдельных ячеек, группы ячеек или дорожек.

    В макетах сетки вы можете указать промежутки между столбцами и строками, называемые дорожками. Вы также можете использовать блок FR для создания полностью плавных макетов сетки.

    Параметры дочерних элементов сетки отображаются в верхней части панели «Стиль», когда выбран дочерний элемент контейнера сетки. Это позволяет вам переопределить настройки контейнера сетки для выравнивания и выравнивания.

    Подробнее о сетке.

    Grid vs Flex

    Flexbox и grid - отличные варианты компоновки. Flexbox предоставляет элементы управления макетом в одном измерении - вертикальном или горизонтальном. Сетка дает вам элементы управления макетом, которые работают в двух измерениях, что, например, отлично подходит для макетов журналов.

    Для получения более подробной информации о каждом варианте макета, различиях между ними, а также о том, когда вы можете использовать один вместо другого, посмотрите наш видеоурок о гибкости и сетке.

    Встроенный блок

    Элементы встроенного блока располагаются рядом друг с другом, а их ширина определяется содержимым внутри.

    Элементы встроенного блока также будут переноситься, когда содержимое достигает границы родительского элемента. На панели «Стиль» вы можете применить определенные параметры ширины, высоты, отступов и полей к встроенным блочным элементам.

    Распространенная проблема при использовании встроенных блочных элементов состоит в том, что пробелы в HTML становятся визуальным пространством в дизайне сайта. Узнайте, как исправить проблемы с пробелами .

    Inline

    Inline - это настройка отображения по умолчанию для любого текстового содержимого внутри элемента. Вы можете изменить макет встроенного элемента, изменив его поля и отступы, но вы не можете изменить его ширину или высоту.

    Отображение: нет

    Чтобы полностью скрыть элемент, установите для параметра отображения значение «Нет».

    Элементы, для которых не задано отображение, не будут отображаться браузером, что может быть удобно для изменения способа отображения содержимого на мобильных устройствах.

    Попробуйте Webflow - это бесплатно

    В этом видео используется старый интерфейс. Скоро появится обновленная версия!

    Модель визуального форматирования

    Модель визуального форматирования

    В этой и следующей главах описывается модель визуального форматирования: как пользователь агенты обрабатывают дерево документов для визуальных медиа.

    В модели визуального форматирования каждый элемент в дереве документа генерирует ноль или более ящиков в соответствии с ячейкой модель.Расположение этих блоков регулируется:

    Свойства, определенные в этой и следующей главах, применяются к обоим непрерывные СМИ и страничные медиа. Тем не менее значение маржи Свойства различаются при применении к страничным носителям (подробности см. в модели страницы).

    Модель визуального форматирования не определяет все аспекты форматирование (например, в нем не указан алгоритм межбуквенного интервала). Соответствующие пользовательские агенты могут вести себя иначе для тех проблем форматирования, которые не рассматриваются в этом Спецификация.

    9.1.1 Область просмотра

    Пользовательские агенты для непрерывных носителей обычно предлагают пользователям окно просмотра (окно или другое область просмотра на экране), через которую пользователи обращаются к документ. Пользовательские агенты могут изменять макет документа, когда размер области просмотра изменяется (см. исходный содержащий блок).

    Когда область просмотра меньше, чем область холста, на котором документ отображается, пользовательский агент должен предлагать прокрутку механизм. Есть самое большее одно окно просмотра на холст, но пользователь агенты могут выполнять рендеринг на более чем один холст (т.е., предоставьте разные просмотры того же документа).

    9.1.2 Содержащие блоки

    В CSS 2.1 многие положения и размеры блоков рассчитываются с учетом к краям прямоугольной коробки, называемой , содержащей блок . В в общем, сгенерированные блоки действуют как содержащие блоки для потомков коробки; мы говорим, что бокс «устанавливает» содержащий его блок потомки. Фраза «блок, содержащий блок» означает « содержащий блок, в котором находится "ящик", а не тот, который он генерирует.

    Каждому ящику дается позиция относительно содержащего его блока, но он не ограничен этим содержащим блоком; он может переполниться.

    Подробная информация о как рассчитываются размеры содержащего блока, описано в следующая глава.

    В следующих разделах описаны типы ящиков, которые могут быть сгенерирован в CSS 2.1. Тип блока частично влияет на его поведение в модель визуального форматирования. Свойство display, описанное ниже, указывает тип коробки.

    9.2.1 Элементы уровня блока и блоки блоков

    Элементы уровня блока - это те элементы исходного документа, которые визуально отформатированы как блоки (например, абзацы). Следующие значения свойства display делают элемент уровень блока: «блок», «элемент списка» и «таблица».

    Блочно-уровневый боксы - это боксы, которые участвуют в контекст форматирования блока. Каждый элемент уровня блока генерирует основной элемент уровня блока ящик , который содержит дочерние блоки и сгенерированный контент, а также ящик, участвующий в любой схеме позиционирования.Некоторые элементы блочного уровня могут дополнительно генерировать дополнительные блоки. к основное поле: элементы 'list-item'. Эти дополнительные коробки размещены по отношению к основному ящику.

    За исключением ящиков для таблиц, которые описаны в следующей главе, и замененные элементы, блок уровня блока также является блоком контейнера блока. Блок контейнерный ящик либо содержит только блоки уровня блока или устанавливает встроенное форматирование context и, следовательно, содержит только блоки встроенного уровня. Не весь блок Контейнерные боксы - это блоки уровня блока: незамещенные встроенные блоки и незамещенные ячейки таблицы являются блочными контейнерами, но не уровнями блоков коробки.Блоки уровня блока, которые также являются блок-контейнерами, называется блок ящики .

    Три термина «блок уровня блока», «блок контейнера блока» и «блок-бокс» иногда сокращенно обозначается как «блок», если это недвусмысленно.

    9.2.1.1 Анонимные блоки блоков

    В таком документе:

     
    
    Какой-то текст

    Еще текст

    (и предполагая, что у DIV и P есть 'display: block'), DIV, похоже, имеет как встроенный контент, так и контент блока.Сделать это проще определить форматирование, мы предполагаем, что есть блок анонимного блока вокруг «Какой-то текст».

    [D]

    Схема, показывающая три ящика, один из которых анонимный, для примера выше.

    Другими словами: если блок контейнера блока (например, сгенерированный для DIV выше) имеет внутри блок уровня блока (например, P выше), затем мы заставляем его иметь только блоков уровня блока внутри него.

    Если встроенный блок содержит блок на уровне входящего потока, встроенный блок (и его встроенные предки в том же строчном поле) разбиты вокруг блок уровня блока (и все братья и сестры уровня блока, которые являются последовательными или разделены только сворачиваемыми пробелами и / или вне потока элементов), разделив встроенный блок на два блока (даже если сторона пуста), по одному с каждой стороны блока (ов) уровня блока.Линия коробки до перерыва и после break заключены в анонимные блоки блоков, а блок уровня блока становится братом этих анонимных ящиков. Когда такой встроенный блок зависит от относительного позиционирования, любой результирующий перевод также влияет на блок уровня блока, содержащийся во встроенном блоке.

    Примеры:

    Эта модель применима в следующем примере, если следующие правила:

     
    p {display: inline}
    диапазон {дисплей: блок}
      

    были использованы с этим HTML-документом:

     
    
    <ГОЛОВА>
     Анонимный текст прерван блоком 
    
    <ТЕЛО>
    

    Это анонимный текст перед SPAN. Это содержание SPAN. Это анонимный текст после SPAN.

    Элемент P содержит фрагмент (C1) анонимного текста, за которым следует элементом уровня блока, за которым следует еще один фрагмент (C2) анонимного текст. Получающиеся коробки будут блоком, представляющим ТЕЛО, содержащий анонимный блок вокруг C1, блок блока SPAN и еще один анонимный блок-бокс вокруг C2.

    Свойства анонимных ящиков унаследованы от включающий неанонимный блок (например, в примере чуть ниже заголовка подраздела «Анонимные блоки блоков», тот для DIV). Неунаследованные свойства имеют свое начальное значение. Например, шрифт анонимного блока унаследован от DIV, но поля будут равны 0.

    Свойства, установленные для элементов, которые вызывают анонимные блоки блоков сгенерированные по-прежнему применяются к блокам и содержимому этого элемента. Для Например, если граница была установлена ​​на элементе P в приведенном выше Например, граница будет нарисована вокруг C1 (открыта в конце line) и C2 (открываются в начале строки).

    Некоторые пользовательские агенты реализовали границы встроенных строк, содержащих блоки другими способами, например, путем помещения таких вложенных блоков внутрь "анонимные линейные блоки" и, таким образом, рисуя строчные границы вокруг таких коробки. Поскольку CSS1 и CSS2 не определяют это поведение, CSS1-only и Пользовательские агенты, поддерживающие только CSS2, могут реализовать эту альтернативную модель и по-прежнему заявить о соответствии этой части CSS 2.1. Это не относится к UA. разработан после того, как эта спецификация была выпущена.

    Анонимные блоки блоков игнорируются при разрешении процентных значений который будет относиться к нему: используется ближайший неанонимный предок вместо.Например, если дочерний элемент анонимного блока внутри DIV выше должен знать высоту содержащего его блока, чтобы разрешить процентную высоту, тогда он будет использовать высоту содержащий блок, образованный DIV, а не анонимным блоком.

    9.2.2 Встроенные элементы и встроенные блоки

    Встроенный уровень элементы - это те элементы исходного документа, которые не формировать новые блоки контента; контент распределен по строкам (например, выделенные фрагменты текста внутри абзаца, встроенные изображения, и т.п.). Следующие значения свойства display делают элемент встроенный уровень: inline, inline-table и inline-block. Элементы встроенного уровня генерируют встроенный уровень боксы , которые представляют собой боксы, участвующие во встроенном контекст форматирования.

    Рядный поле является одновременно встроенным и чье содержимое участвует в содержащем его встроенном контексте форматирования. А незамещенный элемент со значением 'display', равным 'inline', генерирует встроенный ящик. Блоки встроенного уровня, которые не являются встроенными блоками (например, замененные элементы встроенного уровня, элементы встроенного блока и встроенные таблицы элементы) называются атомарными блоками строкового уровня , потому что они участвуют в своем встроенном контексте форматирования как один непрозрачный коробка.

    9.2.2.1 Анонимные встроенные поля

    Любой текст, который непосредственно содержится внутри элемента контейнера блока (не внутри встроенного элемента) должен рассматриваться как анонимный встроенный элемент.

    В документе с такой разметкой HTML:

     
    

    Некоторый выделенный текст

    создает блок-бокс с несколькими встроенными блоками внутри Это. Поле для «подчеркнутого» - это встроенный блок, созданный встроенным элемент ( ), но другие блоки («Некоторые» и «текст») являются встроенными блоками, генерируемыми элементом уровня блока (

    ).Последние называются анонимными встроенными боксы, потому что они не имеют связанного элемента встроенного уровня.

    Такие анонимные встроенные блоки наследуют наследуемые свойства от их родительский блок блока. У ненаследуемых свойств есть начальные стоимость. В этом примере цвет анонимных встроенных полей: унаследован от P, но фон прозрачный.

    Содержимое пустого пространства, которое впоследствии будет свернуто в соответствии со свойством 'white-space', не создает никаких анонимных встроенных блоков.

    Если из контекста ясно, какой тип анонимного ящика означает, что как анонимные встроенные блоки, так и анонимные блоки блоков в этой спецификации просто называются анонимными ящиками.

    Есть еще типы анонимных ящиков, которые возникают при форматировании таблицы.

    9.2.3 Боксы для обкатки

    [Этот раздел существует таким образом, что номера разделов такие же, как в предыдущие черновики. 'Отображать: run-in 'теперь определен в CSS уровня 3 (см. базовую блочную модель CSS).]

    9.2.4 Свойство display

    'дисплей'
    Значение: встроенный | блок | элемент списка | встроенный блок | стол | встроенный стол | таблица-строка-группа | таблица-заголовок-группа | стол-нижний колонтитул | стол-ряд | таблица-столбец-группа | таблица-столбец | таблица-ячейка | заголовок таблицы | нет | наследовать
    Начальный: встроенный
    Применимо к: все элементы
    Унаследовано: нет
    В процентах: Н / Д
    Медиа: все
    Расчетное значение: см. Текст

    Значения этого свойства имеют следующие значения:

    блок
    Это значение заставляет элемент генерировать блок-бокс.
    рядный блок
    Это значение заставляет элемент генерировать блок встроенного уровня контейнер. Внутренняя часть встроенного блока форматируется как блок-блок, а сам элемент отформатирован как атомарный блок встроенного уровня.
    рядный
    Это значение заставляет элемент генерировать один или несколько встроенных блоков.
    позиция списка
    Это значение заставляет элемент (например, LI в HTML) генерировать блок основного блока и блок маркера.Для получения информации о списки и примеры форматирования списков см. в разделе списки.
    нет
    Это value приводит к тому, что элемент не отображается в структуре форматирования (т. е. в визуальных средах элемент не создает рамок и не влияет на макет). Дочерние элементы также не создают ящиков; в элемент и его содержимое удаляются из структуры форматирования полностью. Это поведение не может быть отменено установка свойства 'display' по потомкам.

    Обратите внимание, что отображение «none» не создает невидимого коробка; он вообще не создает коробки. CSS включает механизмы, которые позволяют элемент для создания блоков в структуре форматирования, влияющих на форматирование но сами не видны. Пожалуйста, обратитесь к разделу о видимости для подробностей.

    Таблица, встроенный стол, таблица-строка-группа, таблица-столбец, таблица-столбец-группа, , , стол-ряд, таблица-ячейка и заголовок таблицы
    Эти значения заставляют элемент вести себя как элемент таблицы (с учетом ограничений, описанных в главе о таблицах).

    Вычисленное значение совпадает с указанным значением, за исключением позиционированные и плавающие элементы (см. Взаимосвязь между 'display', 'position' и 'float') и для корневого элемента. Для корневого элемента вычисленное значение изменяется, как описано в раздел о взаимосвязях между 'display', 'position' и 'float'.

    Обратите внимание, что хотя начальный значение 'display' равно 'inline', правила в таблице стилей по умолчанию пользовательского агента могут переопределить это значение.См. Образец таблицы стилей для HTML 4 в приложение.

    Примеры:

    Вот несколько примеров свойства display:

     
    p {display: block}
    em {display: inline}
    li {display: list-item}
    img {display: none} / * Не отображать изображения * /
      

    В CSS 2.1 блок может быть размещен в соответствии с тремя позициями схемы:

    1. Нормальный расход. В CSS 2.1 нормально поток включает форматирование блока блочных боксов, встроенное форматирование боксов на строчном уровне и относительное позиционирование блоки на уровне блоков и на строчном уровне.
    2. Поплавки. В поплавковой модели ящик сначала выкладывается по нормальному потоку, потом вынут из потока и сдвинут как можно дальше влево или вправо. Контент может течь вдоль поплавка.
    3. Абсолютное позиционирование. В модели абсолютного позиционирования блок удаляется из нормальный поток полностью (это не влияет на более поздних братьев и сестер) и присвоил позицию относительно содержащего блока.

    Элемент называется из поток , если он плавающий, абсолютно позиционированный или корневой элемент.Элемент называется входящим , если он не выходящий из потока. В поток элемента A - это комплект, состоящий из A и всех впускных элементы, ближайший предок которых вне потока - A .

    Примечание. Схемы позиционирования CSS 2.1 помогают авторам создавать свои документы. более доступным, позволяя им избегать уловок с разметкой (например, невидимые изображения), используемые для эффектов макета.

    9.3.1 Выбор схемы позиционирования: свойство 'position'

    Свойства 'position' и 'float' определяют, какие CSS 2.1 алгоритм позиционирования используется для расчета положение коробки.

    'позиция'
    Значение: статическое | родственник | абсолютный | фиксированный | наследовать
    Начальное: статическое
    Применимо к: все элементы
    Унаследовано: нет
    В процентах: Н / Д
    Медиа: визуальный
    Вычисленное значение: как указано

    Значения этого свойства имеют следующие значения:

    статический
    Коробка нормальная коробка, выложенная по нормальному потоку.В 'вершина', 'верно', 'Нижний', и влево' свойства не применяются.
    родственник
    Положение бокса рассчитывается в соответствии с нормальным потоком (это называется положением в нормальный расход). Затем коробка смещается относительно своего нормального положения. Когда блок B расположен относительно, положение следующего блока рассчитывается так, как если бы B не было смещено. Влияние 'position: relative' на элементы table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell и table-caption. не определено.
    абсолютное
    Положение коробки (и, возможно, размер) указано с "верхом", 'верно', "дно" и 'левый' характеристики. Эти свойства определяют смещения по отношению к боксу. содержащий блок. Абсолютно расположенные коробки выводятся из нормального потока. Это означает они не влияют на расположение более поздних братьев и сестер. Также, хотя абсолютно позиционируется коробки имеют поля, они не рухнуть с любыми другими полями.
    фиксированный
    Положение бокса рассчитывается по "абсолютному" модель, но кроме того, коробка закреплена относительно некоторой ссылки.Как и в случае с «абсолютной» моделью, поля блока не сжимаются с другими полями. В случае портативных, проекционных, экранных, tty и телевизионных типов носителей: бокс зафиксирован относительно области просмотра и не двигается, когда прокручивается. В случае типа носителя для печати поле отображается на каждой странице и фиксируется относительно поля страницы, даже если страница просматривается через область просмотра. (например, в случае предварительного просмотра). Для других СМИ типы, представление не определено.Авторы могут пожелать указать «исправлено» в медиа-зависимый способ. Например, автор может пожелать, чтобы коробка оставалась вверху области просмотра на экране, но не вверху каждой распечатанной страницы. Две спецификации могут быть разделены с помощью @media правило, например:

    Пример (ы):

     
    @media screen {
      h2 # first {position: fixed}
    }
    @media print {
      h2 # first {position: static}
    }
      

    UA не должны разбивать на страницы содержимое фиксированных ящиков. Обратите внимание, что UA могут печатать невидимый контент в других способами.См. "Контент за пределами страничный бокс »в главе 13.

    Пользовательские агенты могут обрабатывать положение корневого элемента как «статическое».

    9.3.2 Смещения прямоугольника: «вверху», «вправо», «внизу», «влево»

    Элемент считается позиционированным если его свойство 'position' имеет значение, отличное от static. Позиционированные элементы генерируют расположенные коробки, расположенные в соответствии с четырьмя свойствами:

    'верх'
    Значение: <длина> | <процент> | авто | наследовать
    Начальный: авто
    Применимо к: позиционируемым элементам
    Унаследовано: нет
    Проценты: относятся к высоте содержащего блока
    Медиа: визуальный
    Вычисленное значение: , если указанная как длина, соответствующая абсолютная длина; если указанное в процентах указанное значение; в противном случае - «авто».

    Это свойство указывает, насколько далеко верхняя часть абсолютно позиционированного блока край поля смещен ниже верхнего края содержащего блок блока. Для относительно расположенные блоки, смещение относительно верхних краев сам ящик (т.е. ящик получает позицию в нормальном потоке, затем смещение от этой позиции в соответствии с этими свойствами).

    'правый'
    Значение: <длина> | <процент> | авто | наследовать
    Начальный: авто
    Применимо к: позиционируемым элементам
    Унаследовано: нет
    Проценты: относятся к ширине содержащего блока
    Медиа: визуальный
    Вычисленное значение: , если указанная как длина, соответствующая абсолютная длина; если указанное в процентах указанное значение; иначе, 'авто'.

    Аналогично 'top', но указывает, насколько далеко находится правый край поля смещение слева от правого края содержащего блока блока. Для относительно расположенные блоки, смещение относительно правого края сам ящик.

    низ
    Значение: <длина> | <процент> | авто | наследовать
    Начальный: авто
    Применимо к: позиционируемым элементам
    Унаследовано: нет
    Проценты: относятся к высоте содержащего блока
    Медиа: визуальный
    Вычисленное значение: , если указанная как длина, соответствующая абсолютная длина; если указанное в процентах указанное значение; в противном случае - «авто».

    Аналогично 'top', но указывает, насколько далеко нижний край поля находится смещение над нижней частью содержащего блока блока. Для относительно расположенные боксы, смещение относительно нижнего края сам ящик.

    'левый'
    Значение: <длина> | <процент> | авто | наследовать
    Начальный: авто
    Применимо к: позиционируемым элементам
    Унаследовано: нет
    Проценты: относятся к ширине содержащего блока
    Медиа: визуальный
    Вычисленное значение: , если указанная как длина, соответствующая абсолютная длина; если указанное в процентах указанное значение; иначе, 'авто'.

    Аналогично 'top', но указывает, как далеко находится край левого поля поля смещение вправо от левого края содержащего блока блока. Для относительно расположенные блоки, смещение относительно левого края сам ящик.

    Значения для четырех свойств имеют следующие значения:

    <длина>
    Смещение - это фиксированное расстояние от опорной кромки. Допускаются отрицательные значения.
    <процент>
    Смещение - это процент от ширины содержащего блока (для «левого» или «правого») или высоты (для «верха» и «низа»).Допускаются отрицательные значения.
    авто
    Для незамещенных элементов влияние этого значения зависит от того, какое из связанных свойств имеет значение "авто" как хорошо. См. Разделы на ширина и высота абсолютно позиционированных, незаменимые элементы для подробностей. Для замененных элементов влияние этого значения зависит только от внутренних размеров замененный контент. Смотрите разделы по ширине и высоте абсолютно позиционировал, заменял элементы на детали.

    Блоки в нормальном потоке принадлежат контексту форматирования, который может быть блочный или встроенный, но не оба одновременно. Блоки уровня блока участвуют в контексте форматирования блока. Блоки встроенного уровня участвуют во встроенном контексте форматирования.

    9.4.1 Контексты форматирования блоков

    Плавающие элементы, элементы с абсолютным позиционированием, блочные контейнеры (например, inline-block, table-cells и table-captions), которые не являются блочными боксы и блоки с "переполнением", отличным от "видимого" (кроме случаев, когда это значение было распространено на область просмотра) установить новые контексты форматирования блоков для их содержимого.

    В контексте форматирования блока блоки располагаются один после другой, вертикально, начиная с верхней части содержащего блока. В расстояние по вертикали между двумя одноуровневыми полями определяется свойствами поля. Вертикальные поля между соседними блоками уровня блока в схлопывании контекста форматирования блока.

    В контексте форматирования блока левый внешний край каждого блока касается левый край содержащего блока (для форматирования справа налево, справа края касаются). Это верно даже при наличии поплавков (хотя коробки линии коробки могут сжиматься из-за поплавков), если только коробка устанавливает новый контекст форматирования блока (в этом случае сам блок может стать уже из-за поплавки).

    Для получения информации о разрывах страниц в страничных носителях, пожалуйста, обратитесь к раздел о разрешенных разрывы страниц.

    9.4.2 Контексты встроенного форматирования

    В контексте встроенного форматирования блоки располагаются горизонтально, один за другим, начиная с вершины содержащего блокировать. Горизонтальные поля, границы и отступы соблюдаются между эти коробки. Ящики могут быть выровнены по вертикали по-разному: их низ или верх могут быть выровнены, или базовые линии текста внутри них могут быть выровнены.Прямоугольная область, содержащая блоки, образующие строка называется , строка .

    Ширина линейного бокса определяется содержащим блоком и наличием плавающих элементов. Высота строки box определяется правилами, приведенными в разделе о расчете высоты строки.

    Строка всегда достаточно высока для всех содержащихся в ней коробок. Однако он может быть выше самого высокого содержащегося в нем ящика. (если, например, прямоугольники выровнены так, что базовые линии совпадают).Когда высота бокса B меньше, чем высота строчного бокса, содержащего его, вертикальное выравнивание B внутри линейного блока определяется свойство 'vertical-align'. Когда несколько боксов встроенного уровня не могут уместиться по горизонтали в пределах одного линейного блока, они распределяются между двумя или более вертикально сложенными строчные коробки. Таким образом, абзац представляет собой вертикальную стопку строчных полей. Линия коробки укладываются друг на друга без вертикального разделения (кроме указанных в другом месте), и они никогда не пересекаются.

    Как правило, левый край линейного прямоугольника касается левого края содержащего его блока, и правый край касается правого края его содержащий блок.Однако плавающие ящики могут оказаться между содержащий край блока и край линейного блока. Таким образом, хотя строка поля в одном и том же встроенном контексте форматирования обычно имеют одинаковые ширины (содержащей блок), они могут различаться по ширине, если доступное горизонтальное пространство уменьшается из-за поплавков. Строчные поля с одинаковым встроенным форматированием контекст обычно различается по высоте (например, одна строка может содержать высокий изображение, а остальные содержат только текст).

    Когда общая ширина боксов встроенного уровня на линии меньше, чем ширина линейного бокса, содержащего их, их горизонтальное распределение внутри строчного поля определяется свойством text-align.Если это свойство имеет значение justify, пользовательский агент может растягивать пробелы и слова в строковых блоках (но не строчные таблицы и строчные блоки коробки).

    Когда встроенный блок превышает ширину линейного блока, он разделяется на несколько блоков, и эти блоки распределяются по нескольким строчным блокам. Если встроенный блок не может быть разделен (например, если встроенный блок содержит один символ или правила разбиения слов на конкретном языке запрещают разрыв внутри встроенного блока, либо если на встроенный блок влияет значение пробела nowrap или pre ), то встроенный блок переполняет строчный блок.

    Когда встроенный блок разделен, поля, границы и отступы не имеют визуального эффекта там, где происходит разделение (или при любом расколе, когда их несколько).

    Встроенные блоки также могут быть разделены на несколько блоков внутри та же строка из-за двунаправленного текста обработка.

    Строки создаются по мере необходимости для удержания содержимое на уровне строки во внутреннем контексте форматирования. Линейные боксы которые не содержат текста, без сохраненных пробелов, без встроенных элементы с ненулевыми полями, отступами или границами, и никакое другое текущее содержимое (например, изображения, встроенные блоки или встроенные таблицы) и не должны заканчиваться сохраненной новой строкой. рассматриваться как линейные блоки нулевой высоты для целей определения позиции любых элементов внутри них и должны рассматриваться как не существует ни для каких других целей.

    Вот пример конструкции встроенного блока. Следующий абзац (создается элементом уровня блока HTML P) содержит анонимный текст с вкраплениями EM и STRONG:

     
    

    Появляется несколько выделенных слов в этом предложении, дорогой.

    Элемент P генерирует блок-бокс, содержащий пять встроенных ящиков, три из которых анонимные:

    • Аноним: "Несколько"
    • EM: «подчеркнутые слова»
    • Аноним: "появляются"
    • СИЛЬНЫЙ: "в этом"
    • Аноним: "приговор, дорогой.«

    Чтобы отформатировать абзац, пользовательский агент помещает пять полей в строчные коробки. В этом примере поле, созданное для элемента P устанавливает содержащий блок для строковых боксов. Если содержащий блок достаточно широк, все встроенные боксы поместятся в однострочный блок:

     Несколько  подчеркнутых слов  появляются  в этом предложении , дорогая.
     

    Если нет, встроенные блоки будут разделены и распределены по несколько строчных боксов.Предыдущий абзац можно разбить следующим образом:

    Появляется несколько  подчеркнутых слов 
      в этом предложении , дорогая.
     
    или вот так:
    Несколько  подчеркнули 
      слова  появляются  в этом 
    приговор, дорогой.
     

    В предыдущем примере блок EM был разделен на два блока EM. (назовите их «split1» и «split2»). Поля, границы, отступы или текстовые украшения не имеют видимого эффекта после split1 или перед split2.

    Рассмотрим следующий пример:

     
    
    
      <ГОЛОВА>
         Пример встроенного потока на нескольких строках 
        <СТИЛЬ type = "текст / css">
          EM {
            отступ: 2 пикселя;
            маржа: 1em;
            ширина границы: средний;
            стиль границы: пунктирная;
            высота строки: 2.4em;
          }
        
      
      <ТЕЛО>
        

    Здесь появляется несколько выделенных слов .

    В зависимости от ширины P коробки могут быть распределены как следует:

    • Поле вставляется перед словами «подчеркнуто» и после «слов».
    • Заполнение вставлено перед, сверху и снизу. «подчеркнутый» и после, над и под «словами». А Пунктирная граница отображается с трех сторон в каждом случае.

    9.4.3 Относительное позиционирование

    После того, как блок был выложен в соответствии с нормальным потоком или перемещен, его можно сдвинуть относительно эта позиция. Это называется относительное позиционирование . Смещение коробки (B1) таким образом не влияет на следующий блок (B2): B2 - это задано положение, как если бы B1 не был смещен, а B2 не перемещен после применения смещения B1.Это означает, что относительное позиционирование может привести к наложению ящиков. Однако, если относительное позиционирование вызывает переполнение: авто или поле "переполнение: прокрутка", чтобы иметь переполнение, UA должен разрешить пользователю доступ к этому контенту (по его смещению position), которые, создавая полосы прокрутки, могут повлиять на макет.

    Относительно расположенная коробка сохраняет нормальный размер потока, включая разрывы строк и место, изначально зарезервированное для них. Раздел о содержащий блоки объясняет, когда относительно позиционированный блок устанавливает новый содержащий блок.

    Для относительно расположенных элементов, «влево» и «вправо» перемещают коробки по горизонтали, не меняя их размера. «Влево» перемещает прямоугольники вправо, а «right» перемещает их влево. Поскольку коробки не расщепляются и не растягиваются в результате "левого" или "правого" всегда используются следующие значения: left = -right.

    Если и 'left', и 'right' являются 'auto' (их начальные значения), используемые значения равны '0' (т. е. поля остаются в исходном положении. позиция).

    Если 'left' - 'auto', его используемое значение минус значение 'right' (я.е., квадраты перемещаются влево на значение «вправо»).

    Если 'right' задано как 'auto', его используемое значение минус значение «влево».

    Если ни «влево», ни «вправо» не являются «авто», положение чрезмерно ограничены, и одно из них следует игнорировать. Если свойство 'direction' содержащего блока - 'ltr', значение 'left' побеждает, а значение 'right' становится "левым". Если 'direction' содержащего блока 'rtl', 'right' побеждает, а 'left' игнорируется.

    Примеры:

    Пример. Следующие три правила эквивалентны:

     
    div.a8 {положение: относительное; направление: ltr; слева: -1em; right: auto}
    div.a8 {положение: относительное; направление: ltr; слева: авто; справа: 1em}
    div.a8 {положение: относительное; направление: ltr; слева: -1em; справа: 5em}
      

    Свойства 'top' и 'bottom' перемещаются относительно друг друга. элемент (ы) вверх или вниз без изменения их размера. «Вверх» перемещает ящики вниз, а «дно» перемещает их вверх. Поскольку коробки не расщепляются и не растягиваются в результате «верха» или «низа», всегда используются следующие значения: верх =-низ.Если оба являются «автоматическими», их используемые значения равны «0». Если один из них «авто» становится отрицательным по отношению к другому. Если ни один из них не является «авто», 'дно' игнорируется (т. е. используемое значение 'дно' будет минус значение 'top').

    Примечание. Динамическое движение относительно расположенных ящиков может производить эффекты анимации в средах сценариев (см. также свойство «видимость»). Хотя относительное позиционирование может использоваться как форма надстрочного индекса и индексирования, высота строки не регулируется автоматически, чтобы принять позиционирование во внимание.См. Описание расчета высоты строки для получения дополнительной информации. Информация.

    Примеры относительного позиционирования представлены в разделе сравнения нормального потока, поплавков и абсолютного позиционирование.

    Поплавок - это прямоугольник, который смещается влево или вправо на текущая строка. Самая интересная характеристика поплавка (или "плавающий" или "плавающий" блок) означает, что содержимое может течь вдоль его стороны (или иметь запрет на это свойство 'clear'). Контент течет вниз правая сторона плавающего влево блока и вниз по левой стороне коробка с правым верхом.Ниже приводится введение в float. позиционирование и поток контента; точные правила, регулирующие поведение поплавков, приведены в описание "поплавка" свойство.

    Плавающий ящик сдвигается влево или вправо, пока его внешний край не коснется содержащий край блока или внешний край другого поплавка. Если есть линейный прямоугольник, внешний верх плавающего прямоугольника выровнен с верхняя часть поля текущей строки.

    Если горизонтального места недостаточно для поплавок, он смещается вниз до тех пор, пока не сядет или не останется присутствует больше поплавков.

    Так как поплавок не находится в потоке, непозиционированные блочные боксы созданный до и после плавающего бокса, перемещается вертикально, как если бы поплавок не существует. Однако, текущий и последующие строковые блоки, созданные рядом с поплавком, укороченный как надо чтобы освободить место для поля поля поплавка.

    Линейный прямоугольник рядом с поплавком, когда существует вертикальное положение который удовлетворяет всем этим четырем условиям: (а) наверху или ниже строки, (b) в нижней части или выше нижней части линейного поля, (c) ниже край верхнего поля поплавка и (г) над краем нижнего поля поплавка.

    Примечание: это означает, что поплавки с нулевой внешней высотой или отрицательная внешняя высота не укорачивает строчные боксы.

    Если поле сокращенной строки слишком мало, чтобы содержать какое-либо содержимое, тогда линейный прямоугольник сдвигается вниз (и его ширина пересчитывается) до тех пор, пока либо какой-то контент подходит, либо поплавков больше нет. Любое содержимое в текущей строке перед переформатированием плавающего блока в той же строке с другой стороны поплавка. Другими словами, если блоки встроенного уровня размещаются на строке перед обнаружением левого поплавка, который помещается в оставшееся пространство строчного поля, левый поплавок помещается в эту строку, выровненный по верхнему краю линейного бокса, а затем боксы встроенного уровня, уже находящиеся в строке, перемещаются соответственно вправо от поплавка (правая сторона является другой стороной левого поплавка) и наоборот для rtl и right float.

    Граница таблицы, заменяемый элемент на уровне блока или элемент в нормальном потоке, который устанавливает новый контекст форматирования блока. (например, элемент с «переполнением», отличным от «видимого») не должен перекрывать поле полей любых поплавков в одном блоке контекст форматирования как сам элемент. При необходимости реализации должны очистить указанный элемент, поместив его под любыми предыдущими поплавками, но может разместить он примыкает к таким поплавкам, если есть достаточно места. Они могут даже сделать рамку указанного элемента уже, чем определено разделом 10.3.3. CSS2 не определяет, когда UA может поместить указанный элемент рядом с поплавком. или насколько этот элемент может стать уже.

    Примеры:

    Пример. В следующем фрагменте документа содержащий слишком узкий блок чтобы содержать содержимое рядом с поплавком, поэтому контент перемещается ниже поплавков где он выравнивается в строчном поле в соответствии с выравниванием текста свойство.

     
    p {ширина: 10em; бордюр: сплошной цвет морской волны; }
    span {float: left; ширина: 5em; высота: 5em; граница: сплошной синий; }
     
    
    ...
    
     
    

    Суперкалифрагилистический

    Этот фрагмент может выглядеть так:

    Несколько поплавков могут находиться рядом, и эта модель также применима к соседние поплавки в одной строке.

    Примеры:

    Следующее правило размещает все поля IMG с class = "icon" слева (и устанавливает левое поле на '0'):

     
    img.icon {
      плыть налево;
      маржа слева: 0;
    }
      

    Рассмотрим следующий источник HTML и таблицу стилей:

     
    
    
      <ГОЛОВА>
         Пример с плавающей точкой 
        <СТИЛЬ type = "текст / css">
          IMG {float: left}
          BODY, P, IMG {margin: 2em}
        
      
      <ТЕЛО>
        

    Это изображение иллюстрирует плавающие объекты Какой-то образец текста, у которого нет другого ...

    Поле IMG перемещается влево. Следующее содержание форматируется справа от поплавка, начиная с той же строки, что и плавать.Линейные боксы справа от поплавка укорачиваются из-за присутствия поплавка, но сохраняют свою "нормальную" ширину (ширину содержащий блок, установленный элементом P) после поплавка. Этот документ может быть отформатирован как:

    Форматирование было бы точно таким же, если бы документ был:

     
    <ТЕЛО>
      

    Пример текста Это изображение иллюстрирует плавающие объекты нет другого ...

    , потому что содержимое слева от поплавка смещено поплавок и оплавил его правую сторону.

    Как указано в разделе 8.3.1, поля плавающих ящиков никогда не сжимаются с полями соседние ящики. Таким образом, в предыдущем примере вертикальные поля не свернуть между блоком P и всплывающее окно IMG.

    Содержимое поплавков складывается так, как если бы поплавки генерировали новые контексты наложения, за исключением того, что любые позиционированные элементы и элементы которые на самом деле создают новые Контексты стекирования принимают участие в родительском контексте стекирования поплавка. Поплавок может перекрывать другие коробки в нормальном потоке (например,г., когда коробка нормального потока рядом с поплавком имеет отрицательные поля). Когда это происходит, поплавки отображаются перед непозиционированными в потоке блоков, но за встроенными линиями.

    Примеры:

    Вот еще одна иллюстрация, показывающая, что происходит, когда плавающий перекрывает границы элементов в нормальном потоке.

    [D]

    Плавающее изображение закрывает границы блок-боксов он перекрывает.

    В следующем примере показано использование свойства clear для предотвращения содержимого от течения рядом с поплавком.

    Примеры:

    Предполагая такое правило, как это:

     
    p {clear: left}
      
    Форматирование

    может выглядеть так:

    [D]

    В обоих параграфах установлено «clear: left», что заставляет второй абзац "сдвигаться" в позицию ниже поплавок - "зазор" добавляется над его верхним полем к выполнить это (см. свойство «очистить»).

    9.5.1 Установка поплавка: 'float' свойство

    'поплавок'
    Значение: осталось | право | нет | наследовать
    Начальное: нет
    Применимо к: всем, кроме 9.7
    Унаследовано: нет
    В процентах: Н / Д
    Медиа: визуальный
    Вычисленное значение: как указано

    Это свойство указывает, должен ли блок перемещаться влево, верно, или нет. Он может быть установлен для любого элемента, но применяется только к элементы, которые создают коробки, которые не абсолютно позиционируется.Значения этого свойства имеют следующие значения:

    слева
    Элемент создает блок-бокс, который плавал влево. Контент располагается в правой части поля, начиная сверху (с учетом свойства clear).
    правый
    Аналогично «левому», за исключением того, что блок перемещается вправо, а содержимое перетекает в левую часть блока, начиная сверху.
    нет
    Ящик не плавает.

    Пользовательские агенты могут рассматривать float как «none» в корневом элементе.

    Вот точные правила, которые управлять поведением поплавков:

    1. Левый внешний край Плавающий влево блок не может быть слева от левого края содержащего его блока. An аналогичное правило справедливо для элементов, плавающих вправо.
    2. Если текущее поле плавающее влево, и есть какие-либо плавающие влево блоки, созданные элементами ранее в исходном документе, то для каждого такого более раннего блока должен быть либо левый внешний край текущего блока. справа от правого внешнего края более ранней коробки, или ее верх должен быть ниже низа ранее коробка.Аналогичные правила справедливы для боксов, плавающих вправо.
    3. Правый внешний край Плавающий влево прямоугольник не может быть справа от левого внешнего края любого плавающего вправо коробка, которая находится рядом с ней. Аналогичные правила верны для плавающие вправо элементы.
    4. Внешний верх плавающего ящика не может быть выше вершины содержащего его блока. Когда поплавок находится между двумя сворачивающимися полями, float позиционируется, как если бы у него был пустой родительский анонимный блок, принимающий участие в течение.Положение такого родителя определяется правилами в разделе о марже. рушится.
    5. Внешний верх плавающего ящика не может быть выше внешней вершины любого блока или плавающего бокса, созданного элементом ранее в исходном документе.
    6. Внешний верх элемента плавающий блок не может быть выше, чем верхняя часть любого линейного блока, содержащего блок сгенерированный элементом ранее в исходном документе.
    7. Плавающий влево блок, слева от которого находится еще один плавающий влево блок. не может иметь его правый внешний край справа от содержащего правый край блока.(Неплотно: левый поплавок может не торчать на правый край, если он уже не находится как можно дальше влево.) аналогичное правило справедливо для элементов, плавающих вправо.
    8. Плавающий ящик должен быть размещен как можно выше.
    9. Плавающий влево прямоугольник нужно поставить как можно левее. возможно, плавающий вправо прямоугольник как можно дальше вправо. А более высокая позиция предпочтительнее той, которая находится дальше лево право.

    Но в CSS 2.1, если в контексте форматирования блока представляет собой отрицательный вертикальный запас в потоке, так что положение поплавка выше положения, которое было бы при всех таких отрицательных маржах установлен в ноль, положение поплавка не определено.

    Ссылки на другие элементы в этих правилах относятся только к другим элементам в том же контексте форматирования блока, что и float.

    Примеры:

    Этот фрагмент HTML приводит к перемещению символа b вправо.

     

    ab

    Если ширина элемента P достаточна, то a и b будут рядом. боковая сторона. Это могло бы выглядеть так:

    9.5.2 Управление потоком рядом с поплавками: «чистое» свойство

    'прозрачный'
    Значение: нет | слева | право | оба | наследовать
    Начальное: нет
    Применимо к: блочным элементам
    Унаследовано: нет
    В процентах: Н / Д
    Медиа: визуальный
    Вычисленное значение: как указано

    Это свойство указывает, какие стороны блока (ов) элемента могут , а не , примыкают к более раннему плавающему ящику."Ясный" свойство не учитывает числа с плавающей запятой внутри самого элемента или в другое форматирование блока контексты.

    Значения имеют следующие значения применительно к неплавающим блочные боксы:

    слева
    Требует, чтобы верхняя граница рамки была ниже нижней внешний край любых плавающих влево блоков, которые возникли из элементов ранее в исходном документе.
    правый
    Требует, чтобы верхняя граница рамки была ниже нижней внешний край любых плавающих вправо прямоугольников, образованных элементами ранее в исходном документе.
    оба
    Требует, чтобы верхняя граница рамки была ниже нижней внешний край любых плавающих вправо и влево блоков, которые привели к из элементов ранее в исходном документе.
    нет
    Нет ограничений на положение бокса относительно поплавков.

    Значения, отличные от «нет», потенциально вводят зазор . Зазор препятствует обрушению маржи и действует как интервал над верхним краем элемента.Он используется для протолкните элемент вертикально мимо поплавка.

    Расчет зазора элемента, на котором установлено значение «clear», выполняется путем определения гипотетического положения элемента верхний край границы. Эта позиция где был бы фактический верхний край границы, если бы элемент «чистое» свойство было «нет».

    Если это гипотетическое положение верхней границы элемента не пройдя соответствующие поплавки, тогда вводится зазор, и поля схлопываются согласно правилам в 8.3.1.

    Затем устанавливается больший зазор из:

    1. Величина, необходимая для четного размещения граничного края блока с нижним внешним краем самого нижнего поплавка, который должен быть очищено.
    2. Количество, необходимое для размещения верхней границы края блока в его гипотетическом положении.

    В качестве альтернативы зазор устанавливается точно на величину, необходимую для поместите границу блока даже с нижним внешним краем самый низкий поплавок, который должен быть очищен.

    Примечание: Оба поведения разрешены ожидает оценки их совместимости с существующим веб-контентом. А будущая спецификация CSS потребует либо того, либо другого.

    Примечание: зазор может быть отрицательным или нулевым.

    Примеры:

    Пример 1. Предположим (для простоты), что у нас есть только три поля в следующем порядке: блок B1 с нижним полем M1 (B1 не имеет дочерних элементов, отступов или границ), плавающий блок F с высота H и блок B2 с верхним полем M2 (без отступов или границ, нет детей).B2 имеет "clear" установлен на "both". Мы также предполагаем, что B2 не пустой.

    Без учета свойства «чистота» на B2, мы имеем ситуацию в диаграмму ниже. Границы B1 и B2 рушатся. Скажем, нижняя граница B1 находится в точке y = 0, затем верхняя граница F находится в точке y = M1, верхняя граница B2 находится в точке y = max (M1, M2), а нижняя граница F - при y = M1 + H.

    Мы также предполагаем, что B2 не ниже F, т. Е. Мы находимся в ситуация, описанная в спецификации, где нам нужно добавить зазор.Тот означает:

    макс (M1, M2)

    Нам нужно вычислить зазор C дважды, C1 и C2, и оставьте большее из двух: C = max (C1, C2). Первый способ - поставить верх B2 на одном уровне с низом F, то есть в точке y = M1 + H. означает, что поля больше не сжимаются с зазором между их:

    низ F = верхний край границы B2 ⇔

    M1 + H = M1 + C1 + M2 ⇔

    C1 = M1 + H - M1 - M2

    = H - M2

    Второе вычисление состоит в том, чтобы сохранить верхнюю часть B2, т.е.е., в у = макс (M1, M2). Это значит:

    макс (M1, M2) = M1 + C2 + M2 ⇔

    C2 = макс (M1, M2) - M1 - M2

    Мы предположили, что max (M1, M2)

    C2 = макс (M1, M2) - M1 - M2

    C2

    А так как C1 = H - M2, то

    C2

    и, следовательно,

    C = макс (C1, C2) = C1

    Пример (ы):

    Пример 2.Примером отрицательного разрешения является эта ситуация в который зазор -1em. (Предположим, что ни один из элементов не имеет границ или обивка):

    Первый параграф.

    Плавающий абзац.

    Последний абзац.

    Пояснение: Без "ясно", первый и последний абзацы " поля исчезнут, а верхний край границы последнего абзаца будет быть на одном уровне с верхом плавающего абзаца. Но "ясно" требует, чтобы верхняя граница была на ниже поплавка, т.е.е., 2em ниже. Это означает, что необходимо ввести зазор. Соответственно, поля больше не сжимаются, а размер зазора устанавливается таким образом, чтобы зазор + верхний край = 2em, то есть зазор = 2em - верхний край = 2em - 3em = -1em.

    Когда свойство установлено для плавающих элементов, это приводит к изменение правил для позиционирование поплавка. Добавлено дополнительное ограничение (# 10):

    • Верхний внешний край поплавка должно быть ниже нижнего внешнего край всех ранее плавающих влево прямоугольников (в случае 'clear: left ') или все предыдущие блоки, плавающие вправо (в случае' clear: правильно ') или оба (' ясно: оба ').

    Примечание. Это свойство применяется ко всем элементам в CSS1. Реализации таким образом, возможно, поддерживал это свойство для всех элементов. В CSS2 и CSS 2.1 свойство clear применяется только к элементам уровня блока. Поэтому авторам следует использовать это свойство только на уровне блоков. элементы. Если реализация поддерживает очистку встроенных элементов, вместо того, чтобы устанавливать зазор, как описано выше, реализация должна вызвать разрыв и эффективно вставить одно или несколько пустых строковых блоков (или сдвинуть новое строковое поле вниз, как описано в разделе 9.5), чтобы переместить верхнюю часть очищенного строчного поля строки ниже соответствующего плавающего поля (ов).

    В модели абсолютного позиционирования прямоугольник явно смещен с относительно содержащего его блока. Удаляется из нормального потока полностью (это не влияет на более поздних братьев и сестер). Абсолютно позиционированный блок устанавливает новый содержащий блок для нормального потока дети и абсолютно (но не фиксированные) позиционированные потомки. Однако содержание абсолютно позиционированный элемент не обтекает другие блоки.Они могут скрывать содержимое другого ящика (или сами скрывать), в зависимости от укладывать уровни перекрывающихся боксов.

    Ссылки в данной спецификации на абсолютно позиционирован элемент (или его поле) подразумевает, что свойство 'position' элемента имеет значение «абсолютный» или «фиксированный».

    9.6.1 Фиксированное позиционирование

    Фиксированное позиционирование - это подкатегория абсолютного позиционирования. В единственное отличие состоит в том, что для фиксированного блока содержащий блок устанавливается окном просмотра.Для непрерывных носителей фиксированный коробки не перемещаются при прокрутке документа. В этом отношении они похожи на фиксированные фоновые изображения. Для страничных медиа, ящики с фиксированными позициями повторяются на каждой странице. Это полезно для размещение, например, подписи внизу каждой страницы. Боксы с фиксированным положением, превышающие площадь страницы обрезанный. Части блока фиксированного положения, которые не видны в исходный содержащий блок не будет печататься.

    Авторы могут использовать фиксированное позиционирование для создания презентаций в виде фреймов.Рассмотрим следующую компоновку рамы:

    Этого можно достичь с помощью следующего HTML-документа и правила стиля:

     
    
    
      <ГОЛОВА>
         Рамочный документ с CSS 2.1 
        <СТИЛЬ type = "text / css" media = "screen">
          BODY {height: 8.5in} / * Требуется для роста в процентах ниже * /
          #header {
            положение: фиксированное;
            ширина: 100%;
            высота: 15%;
            верх: 0;
            справа: 0;
            внизу: авто;
            слева: 0;
          }
          #sidebar {
            положение: фиксированное;
            ширина: 10em;
            высота: авто;
            верх: 15%;
            справа: авто;
            внизу: 100 пикселей;
            слева: 0;
          }
          #основной {
            положение: фиксированное;
            ширина: авто;
            высота: авто;
            верх: 15%;
            справа: 0;
            внизу: 100 пикселей;
            слева: 10em;
          }
          #footer {
            положение: фиксированное;
            ширина: 100%;
            высота: 100 пикселей;
            верх: авто;
            справа: 0;
            внизу: 0;
            слева: 0;
          }
        
      
      <ТЕЛО>
        
    ...
    ...
    ...
    ...

    Три свойства, которые влияют на создание и компоновку блока: 'отображать', 'позиция' и 'float' - взаимодействовать следующим образом:

    1. Если 'display' имеет значение 'none', тогда 'позиция' и 'float' не применяются. В этом случае элемент не создает бокса.
    2. В противном случае, если «позиция» имеет значение 'absolute' или 'fixed', поле абсолютно позиционировано, вычисленный значение float равно none, и отображение настраивается в соответствии с таблицей ниже.Положение поля будет определяться свойствами «сверху», «справа», «снизу» и «слева», а также свойствами поля. содержащий блок.
    3. В противном случае, если 'float' имеет значение, отличное от 'none', поле floated, а «display» устанавливается в соответствии с приведенной ниже таблицей.
    4. В противном случае, если элемент является корневым элементом, 'display' устанавливается в соответствии с таблицей ниже, за исключением того, что это undefined в CSS 2.1, указывает ли указанное значение 'list-item' становится вычисленным значением 'block' или 'list-item'.
    5. В противном случае применяются остальные значения свойства display. как указано.
    Заданное значение Вычисленное значение
    встроенная таблица таблица
    встроенная, таблица-группа-строка, таблица-столбец, группа столбцов таблицы, группа заголовков таблицы, группа нижнего колонтитула таблицы, строка-таблицы, table-cell, table-caption, inline-block block
    other как указано

    Чтобы проиллюстрировать различия между нормальным потоком, относительный позиционирование, плавающее и абсолютное позиционирование, мы предлагаем ряд примеры на основе следующего HTML:

     
    
    
      <ГОЛОВА>
         Сравнение схем позиционирования 
      
      <ТЕЛО>
        

    Начало содержимого тела. Начало внешнего содержимого. Внутреннее содержимое. Конец внешнего содержимого. Конец содержимого тела.

    В этом документе мы предполагаем следующие правила:

     
    тело {дисплей: блок; размер шрифта: 12 пикселей; высота строки: 200%;
           ширина: 400 пикселей; height: 400px}
    p {display: block}
    диапазон {display: inline}
      

    Конечные позиции ящиков, генерируемых внешним и внутренние элементы различаются в каждом примере.На каждой иллюстрации цифры слева от рисунка указывают нормальное положение потока двойного интервала (для четкость) линий.

    Примечание. Диаграммы в этом разделе являются иллюстративными и не предназначены для масштаб. Они призваны подчеркнуть различия между различные схемы позиционирования в CSS 2.1 и не предназначены для справочные изображения приведенных примеров.

    9.8.1 Нормальный поток

    Рассмотрим следующие объявления CSS для внешнего и внутренний , которые не изменяют нормальный поток ящиков:

     
    #outer {цвет: красный}
    #inner {цвет: синий}
      

    Элемент P содержит все встроенное содержимое: анонимный встроенный текст и два SPAN элементы.Поэтому весь контент будет выложен во встроенном контексте форматирования внутри содержащего блока устанавливается элементом P, что дает что-то вроде:

    9.8.2 Относительное позиционирование

    Чтобы увидеть эффект относительного позиционирование, уточняем:

     
    #outer {положение: относительное; верх: -12px; красный цвет }
    #inner {позиция: относительная; верх: 12 пикселей; цвет синий }
      

    Текст обычно перемещается до внешнего элемента . В внешний текст затем переводится в нормальное положение и размеры в конце строки 1.Затем встроенные поля, содержащие текст (распределенный по трем строкам) смещается как единое целое на '-12px' (вверх).

    Содержимое внутреннего , как дочернего для внешнего , будет обычно идут сразу после слов «внешнего содержимого» (в строке 1.5). Однако внутреннее содержимое само смещено относительно внешнего содержимого на «12 пикселей» (вниз), обратно к их исходное положение в строке 2.

    Обратите внимание, что содержимое после внешнего не зависит от относительное позиционирование внешнего .

    Обратите внимание, что если бы смещение внешнего было '-24px', текст внешнего и основной текст перекрывались бы.

    9.8.3 Плавающий блок

    Теперь рассмотрим эффект плавающего блока. внутренний текст элемента справа с помощью следующих правила:

     
    #outer {цвет: красный}
    #inner {float: right; ширина: 130 пикселей; цвет синий }
      

    Текст нормально перетекает до внутреннего поля , которое вытягивается вне потока и перемещается к правому краю (его «ширина» была назначена явно).Линии слева от поплавка укорачиваются, а в них перетекает оставшийся текст документа.

    Чтобы показать эффект свойства 'clear', мы добавляем родственника элемент к примеру:

     
    
    
      <ГОЛОВА>
         Сравнение схем позиционирования II 
      
      <ТЕЛО>
        

    Начало содержимого тела. Начало внешнего содержимого. Внутреннее содержимое. Одноуровневое содержимое. Конец внешнего содержимого. Конец содержимого тела.

    Следующие правила:

     
    #inner {float: right; ширина: 130 пикселей; цвет синий }
    #sibling {цвет: красный}
      

    заставляет внутреннюю коробку плавать вправо, как и раньше, а оставшийся текст документа помещается на освободившееся место:

    Однако, если «очистить» для элемента родственного брата установлено значение 'right' (т.е.е., сгенерированный родственный блок не примет позицию рядом с плавающие прямоугольники справа), содержимое родственника начинает поток ниже поплавка:

     
    #inner {float: right; ширина: 130 пикселей; цвет синий }
    #sibling {ясно: правильно; красный цвет }
      

    9.8.4 Абсолютное позиционирование

    Наконец, мы рассмотрим эффект абсолютного позиционирования. Рассмотрим следующие объявления CSS для внешнего и внутренний :

     
    #outer {
        позиция: абсолютная;
        верх: 200 пикселей; слева: 200 пикселей;
        ширина: 200 пикселей;
        красный цвет;
    }
    #inner {цвет: синий}
      

    , что приводит к размещению верхней части внешнего блока с относительно содержащего его блока.Содержащий блок для позиционированного box устанавливается ближайшим предком (или, если его нет существует, инициал, содержащий блок, как в нашем примере). Верхняя сторона внешней коробки на 200 пикселей ниже верха содержащего блока, а левая сторона «200 пикселей» слева. Дочерний блок , внешний , обтекаемый обычно по отношению к своему родителю.

    В следующем примере показан блок с абсолютным позиционированием, который дочерний элемент относительно расположенного бокса.Хотя родитель внешнее поле на самом деле не смещено, устанавливая его свойство 'position' в 'relative' означает, что его поле может служить содержащим блоком для позиционированного потомки. Поскольку внешний блок является встроенным блоком, разделить на несколько строк, верхний и левый края первого встроенного блока (обозначено жирными пунктирными линиями на иллюстрации ниже) служат в качестве ссылок для "топ" и «левые» смещения.

     
    #outer {
      положение: относительное;
      красный цвет
    }
    #внутренний {
      позиция: абсолютная;
      верх: 200 пикселей; слева: -100 пикселей;
      высота: 130 пикселей; ширина: 130 пикселей;
      цвет синий;
    }
      

    Это приведет к примерно следующему:

    Если мы не разместим внешнюю коробку :

     
    #outer {цвет: красный}
    #внутренний {
      позиция: абсолютная;
      верх: 200 пикселей; слева: -100 пикселей;
      высота: 130 пикселей; ширина: 130 пикселей;
      цвет синий;
    }
      

    содержащий блок для внутреннего становится начальным содержащим блоком (в нашем пример).На следующем рисунке показано, где внутренний box в этом случае закончится.

    Относительное и абсолютное позиционирование может использоваться для внесения изменений баров, как показано в следующем примере. Следующий фрагмент:

     
    

    Я использовал два красных дефиса в качестве панели изменений. Они будет "плавать" слева от строки, содержащей ЭТО - слово.

    может дать что-то вроде:

    Во-первых, абзац (стороны блока которого показаны в иллюстрация) протекает нормально.Затем он смещен на 10 пикселей от левый край содержащего блока (таким образом, правое поле 10 пикселей имеет были зарезервированы в ожидании компенсации). Два дефиса действуют поскольку полосы изменений вынимаются из потока и помещаются в текущую строка (из-за 'top: auto'), '-1em' от левого края содержащего блок (установлен буквой P в ее конечном положении). Результат что полосы изменений кажутся "плавающими" слева от текущего линия.

    9.9.1 Указание уровня стека: свойство 'z-index'

    'z-индекс'
    Значение: авто | <целое число> | наследовать
    Начальный: авто
    Применимо к: позиционируемым элементам
    Унаследовано: нет
    В процентах: Н / Д
    Медиа: визуальный
    Вычисленное значение: как указано

    Для позиционированного блока свойство z-index определяет:

    1. Уровень стека бокса в текущем контексте стека.
    2. Устанавливает ли блок контекст наложения.

    Значения имеют следующие значения:

    <целое число>
    Это целое число - уровень стека сгенерированного блока в текущий контекст наложения. Коробка также устанавливает новую укладку контекст.
    авто
    Уровень стека сгенерированного бокса в текущем стеке context равен 0. Блок не устанавливает новый контекст наложения. если это не корневой элемент.

    В этом разделе выражение «перед» означает ближе к пользователю, когда пользователь смотрит на экран.

    В CSS 2.1 у каждого блока есть позиция в трех измерениях. Кроме того в горизонтальное и вертикальное положение, прямоугольники лежат вдоль "оси z" и форматируются один над другим. Положения оси Z особенно актуально, когда коробки визуально перекрываются. Эта секция обсуждает, как блоки могут быть расположены вдоль оси z.

    Порядок рисования дерева рендеринга на холсте: описаны в терминах контекстов наложения.Контексты стекирования могут содержат дополнительные контексты наложения. Контекст стекирования является атомарным из точка зрения его родительского контекста стекирования; коробки в других контексты наложения не могут находиться между его блоками.

    Каждый блок принадлежит одному контексту стекирования . Каждый установленный прямоугольник в данный контекст стекирования имеет целое число стек уровень , который является его положением по оси Z относительно другие уровни стека в том же контексте стекирования. Ящики с большие уровни стека всегда форматируются перед ящиками с более низкими уровнями стека.Ящики могут иметь отрицательные уровни стека. Ящики с одинаковым уровнем стека в контексте стекирования размещаются в порядке очереди в соответствии с древовидной структурой документов.

    Корневой элемент формирует корневой контекст стекирования. Другая укладка контексты генерируются любым позиционированным элементом (включая относительно позиционированные элементы) с вычисленным значением 'z-index' кроме «авто». Контексты стекирования не обязательно связаны с содержащие блоки. В будущих уровнях CSS другие свойства могут ввести контексты наложения, например "непрозрачность" [CSS3COLOR].

    В каждом контексте наложения следующие слои окрашиваются в обратный порядок:

    1. фон и границы элемента, образующего укладку контекст.
    2. дочерние контексты стека с отрицательными уровнями стека (большинство сначала отрицательный).
    3. входящие, не встроенные, непозиционированные потомки.
    4. непозиционированные поплавки.
    5. входящие, встроенные, непозиционированные потомки, включая встроенные таблицы и встроенные блоки.
    6. дочерние контексты стека с уровнем стека 0 и позиционируют потомков с уровнем стека 0.
    7. дочерние контексты стека с положительными уровнями стека (минимум положительный в первую очередь).

    Внутри каждого контекста стека позиционированные элементы с уровнем стека 0 (в слое 6), непозиционированные поплавки (слой 4), встроенные блоки (уровень 5) и встроенные таблицы (уровень 5) окрашиваются как если бы эти элементы сами генерировали новые контексты наложения, за исключением того, что их предполагаемые потомки и любой потенциальный ребенок контексты наложения принимают участие в текущем контексте наложения.

    Этот порядок рисования применяется рекурсивно к каждому набору контекст. Это описание порядка отрисовки контекста наложения представляет собой обзор подробного нормативного определения в Приложение E.

    В следующем примере уровни стека ящики (названные в соответствии с их атрибутами "id"): «text2» = 0, «image» = 1, «text3» = 2 и «text1» = 3. В Уровень стека «text2» наследуется от корневого блока. В другие указываются свойством z-index.

     
    
    
      <ГОЛОВА>
         Расположение в Z-порядке 
        <СТИЛЬ type = "текст / css">
          .куча {
            позиция: абсолютная;
            слева: 2 дюйма;
            верх: 2 дюйма;
            ширина: 3 дюйма;
            высота: 3 дюйма;
          }
        
      
      <ТЕЛО>
        

    Изображение бабочки

    Этот текст будет наложен на изображение бабочки.
    Этот текст будет ниже всего.
    Этот текст будет лежать в основе text1, но наложить на изображение бабочки

    Этот пример демонстрирует понятие прозрачность . По умолчанию фон позволяет видеть блоки позади него. В этом примере каждый прямоугольник прозрачно перекрывает расположенные под ним поля. Этот поведение можно изменить, используя один из существующих фоновые свойства.

    Соответствующие пользовательские агенты, которые не поддерживает двунаправленный текст, может игнорировать свойства 'direction' и 'unicode-bidi' описано в этом разделе.Это исключение включает UA, которые отображают символы с письмом справа налево просто потому, что шрифт в системе их содержит но не поддерживают концепцию направления текста справа налево.

    В некоторых сценариях символы пишутся справа налево. левый. В некоторых документах, в частности написанных арабским или иврите, а в некоторых смешанных языковых контекстах текст в одиночный (визуально отображаемый) блок может отображаться со смешанными направленность. Это явление называется двунаправленностью , или для краткости "биди".

    Стандарт Unicode ([UNICODE], [UAX9]) определяет сложный алгоритм определения правильной направленности текста. В алгоритм состоит из неявной части, основанной на свойствах персонажа, а также явные элементы управления для встраивания и переопределения. CSS 2.1 полагается на этом алгоритме для достижения правильного двунаправленного рендеринга. Свойства direction и unicode-bidi позволяют авторов, чтобы указать, как элементы и атрибуты документа языковая карта для этого алгоритма.

    Пользовательские агенты, поддерживающие двунаправленный текст, должны применять Unicode. двунаправленный алгоритм для каждой последовательности блоков встроенного уровня без прерывания принудительным (биди класс Б) граница разрыва или блока.Эта последовательность образует блок «абзац» в двунаправленном алгоритме. Встраивание абзаца уровень устанавливается в соответствии со значением свойства 'direction' содержащего блок, а не эвристика, указанная на шагах P2 и P3 Unicode алгоритм.

    Поскольку направленность текста зависит от структуры и семантика языка документа, эти свойства должны в большинстве кейсы могут использоваться только разработчиками описаний типов документов (DTD), или авторов специальных документов.Если в таблице стилей по умолчанию указано эти свойства, авторы и пользователи не должны указывать правила для переопределить их.

    Спецификация HTML 4 ([HTML4], раздел 8.2) определяет двунаправленность HTML-элементов. Таблица стилей правила, обеспечивающие поведение двунаправленного текста, указанное в [HTML4]: приведено в образце таблицы стилей. В Спецификация HTML 4 также содержит дополнительную информацию о проблемы двунаправленности.

    'направление'
    Значение: л | rtl | наследовать
    Начальный: л
    Применимо к: все элементы, но см. Прозу
    Унаследовано: да
    В процентах: Н / Д
    Медиа: визуальный
    Вычисленное значение: как указано

    Это свойство определяет базовое направление записи блоков и направление встраивания и переопределения (см. unicode-bidi) для Unicode двунаправленный алгоритм.Кроме того, он определяет такие вещи, как направление расположения столбцов таблицы, направление горизонтальный перелив, позиция незавершенной последней строки в блоке в случае выравнивания текста: оправдывать'.

    Значения этого свойства имеют следующие значения:

    ltr
    Направление слева направо.
    RTL
    Направление справа налево.

    Для «направления» свойство, влияющее на переупорядочение встроенных элементов, значение свойства unicode-bidi должно быть «встроить» или «переопределить».

    Примечание. Свойство direction, когда указанный для элементов столбца таблицы, не наследуется ячейками в столбец, поскольку столбцы не являются предками ячеек в дереве документа. Таким образом, CSS не может легко захватить описанные правила наследования атрибута "dir". в [HTML4], раздел 11.3.2.1.

    'юникод-биди'
    Значение: нормальное | вставлять | двунаправленный | наследовать
    Начальный: нормальный
    Применимо к: все элементы, но см. Прозу
    Унаследовано: нет
    В процентах: Н / Д
    Медиа: визуальный
    Вычисленное значение: как указано

    Значения этого свойства имеют следующие значения:

    нормальный
    Элемент не открывает дополнительный уровень встраивания с относительно двунаправленного алгоритма.Для встроенных элементов неявное переупорядочение работает вне границ элементов.
    встроенный
    Если элемент является встроенным, это значение открывает дополнительный уровень встраивания по отношению к двунаправленный алгоритм. Направление этого уровня вложения: дано "направлением" свойство. Внутри элемента переупорядочивание выполняется неявно. Этот соответствует добавлению LRE (U + 202A; для 'direction: ltr') или RLE (U + 202B; для 'direction: rtl') в начале элемента и PDF (U + 202C) в конце элемента.
    коррекция двунаправленного текста
    Для встроенных элементов это создает переопределение. Для блочных контейнерных элементов это создает переопределение для потомков инлайн-уровня вне другой блок-контейнер элемент. Это означает, что внутри элемента переупорядочивание происходит строго по порядку. согласно "направлению" свойство; неявная часть двунаправленного алгоритма игнорируется. Это соответствует добавлению LRO (U + 202D; for 'direction: ltr ') или RLO (U + 202E; для' direction: rtl ') в начале элемент или в начале каждого блока анонимного дочернего блока, если таковой имеется, и PDF (U + 202C) в конце элемента.

    Последний порядок символов в каждом блок-контейнере - это так же, как если бы контрольные коды двунаправленного текста были добавлены, как описано выше, разметка была удалена, и результирующая последовательность символов имела переданы в реализацию двунаправленного Unicode алгоритм для простого текста, который создавал такие же разрывы строк, что и стилизованный текст. В этом процессе элементы заменены на 'display: inline' рассматриваются как нейтральные символы, если их свойство "unicode-bidi" не имеет значение, отличное от "нормального", и в этом случае они рассматриваются как сильные персонажи в "направлении" указан для элемента.Все остальные атомарные блоки инлайн-уровня обрабатываются как нейтральные символы. всегда.

    Обратите внимание, что для того, чтобы иметь возможность передавать встроенные боксы в равномерное направление (либо полностью слева направо, либо полностью справа налево), больше встроенных блоков (включая анонимные встроенные блоки) может потребоваться создать, а некоторые встроенные блоки, возможно, придется разделить и заказал перед течением.

    Поскольку алгоритм Unicode имеет ограничение 61 уровень из при внедрении, следует проявлять осторожность, чтобы не использовать unicode-bidi со значением, отличным от чем «нормально», если не требуется.В частности, значение "наследовать" следует использовать с особой осторожностью. Однако для элементов, которые в целом, предназначенные для отображения в виде блоков, настройка 'unicode-bidi: embed' предпочтительнее, чтобы элементы оставались вместе в отображение case изменено на inline (см. пример ниже).

    В следующем примере показан XML-документ с двунаправленным текст. Он иллюстрирует важный принцип проектирования: дизайнеры DTD должны использовать двунаправленные учитывать как в самом языке (элементы и атрибуты), так и в любых сопутствующих таблицах стилей.Таблицы стилей должны быть разработаны так что правила биди отделены от других правил стиля. Правила биди не должны переопределяться другими таблицами стилей, чтобы документ поведение двунаправленного текста языка или DTD сохраняется.

    Примеры:

    В этом примере строчные буквы обозначают символы с письмом слева направо и Заглавные буквы представляют собой символы с письмом справа налево:

     
    
       ИВРЕЙСКИЙ1 ИВРЕЙСКИЙ2 английский4 ИВРЕЙСКИЙ4 ИВРЕЙСКИЙ5 
       HEBREW6  HEBREW7  HEBREW8 
    
    <АНГЛИЙСКИЙ>
       english9 english20 english21 HEBREW12 HEBREW13 
       английский24 английский25 английский26 
       english27  HEBREW18 english29 HEBREW20  
    
      

    Так как это XML, таблица стилей отвечает за установку направление письма.Это таблица стилей:

    / * Правила для биди * /
    ЕВРЕЙСКИЙ, HE-QUO {direction: RTL; unicode-bidi: вставлять}
    АНГЛИЙСКИЙ {direction: ltr; unicode-bidi: вставлять}
    
    / * Правила оформления * /
    ИВРЕЙСКИЙ, АНГЛИЙСКИЙ, ПАР {display: block}
    EMPH {font-weight: bold}
     

    Элемент HEBREW - это блок с основным направлением справа налево, элемент ENGLISH - это блок с основанием слева направо направление. PAR - это блоки, которые наследуют базовое направление от их родители.Таким образом, первые два PAR считываются, начиная с самого верха. справа, последние три читаются, начиная с верхнего левого угла. Пожалуйста, обрати внимание что HEBREW и ENGLISH выбраны в качестве имен элементов для ясности Только; в общем, имена элементов должны передавать структуру без ссылка на язык.

    Элемент EMPH является встроенным, и, поскольку его значение для 'unicode-bidi' равно 'normal' ( начальное значение), это не влияет на порядок текста. В Элемент HE-QUO, с другой стороны, создает вложение.

    Форматирование этого текста может выглядеть так, если длина строки длинный:

                   5ТИРВИ 4ТИРВИ английский 4 2ТИРВИ 1ТИРВИ
    
                                    8ТИРВИ  7ТИРВИ  6ТИРВИ
    
    английский9 английский20 английский21 13ТИРВИ 12ТИРВИ
    
    английский24 английский25 английский26
    
    английский27 20ИРВИ английский29 18ТИРВИ
     

    Обратите внимание, что встраивание HE-QUO приводит к тому, что HEBREW18 находится справа of english29.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *