Строчно-блочные элементы | htmlbook.ru
Блочные и строчные элементы отлично дополняют друг друга при вёрстке, занимая каждый свою определённую нишу. Но возникают случаи, когда характеристик этих элементов явно недостаточно. Галерея фотографий, представленная на рис. 3.28 состоит из секций, в которые входит изображение с подписью к нему, при этом секции выстраиваются по горизонтали, занимая всю доступную ширину. При уменьшении окна браузера секции переходят на другую строку.
Рис. 3.28. Галерея фотографий
Если для формирования секций использовать тег <div>, как блочный элемент он будет каждый раз начинаться с новой строки. Для строчных элементов нельзя задать цвет фона всей секции и установить её размеры. Наиболее популярное решение в подобных случаях это использование свойства float, которое будет рассмотрено в следующем разделе. Пока же остановлюсь на строчно-блочных элементах, которые сочетают преимущества строчных и блочных элементов.
В HTML нет тега, который относится к строчно-блочным элементам, его можно определить, задав элементу свойство display со значением inline-block.
div {
display: inline-block;
}
Характеристики этих элементов следующие.
- Внутрь строчно-блочных элементов допустимо помещать текст, строчные или блочные элементы.
- Высота элемента вычисляется браузером автоматически, исходя из содержимого блока.
- Ширина равна содержимому плюс значения отступов, полей и границ.
- Несколько элементов идущих подряд располагаются на одной строке и переносятся на другую строку при необходимости.
- Можно выравнивать по вертикали с помощью свойства vertical-align.
- Разрешено задавать ширину и высоту.
- Эффект схлопывания отступов не действует.
Чтобы создать галерею, представленную на рис. 3.28 для тега <div> следует задать значение display как inline-block, а внутрь него добавить изображение и подпись через тег <p> (пример 3.18).
Пример 3.18. Использование display
XHTML 1.0CSS 2.1IE 7IE 8+CrOpSaFx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. 0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Галерея</title> <style type="text/css"> .photo { background: #d9dabb; /* Цвет фона */ width: 150px; /* Ширина */ margin: 0 10px 10px 0; /* Отступы */ padding: 10px 0; /* Поля сверху и снизу */ text-align: center; /* Выравнивание по центру */ display: inline-block; /* Строчно-блочный элемент */ } .photo img { border: 2px solid #8b8e4b; /* Параметры рамки */ } .photo p { margin: 0; /* Отступы */ } </style> </head> <body> <div> <p><img src="images/thumb1.jpg" alt="" /></p> <p>Софийский собор</p> </div> <div> <p><img src="images/thumb2.jpg" alt="" /></p> <p>Польский костёл</p> </div> <div> <p><img src="images/thumb3.jpg" alt="" /></p> <p>Купеческий клуб</p> </div> <div> <p><img src="images/thumb4.jpg" alt="" /></p> <p>Памятник Св. Владимиру</p> </div> </body> </html>
Поскольку все фотографии имеют одинаковый размер, ширина блока задана явно и равна 150px, но высота не указывается, поэтому при длинной подписи к рисунку высота секций будет различаться (рис. 3.29).
Рис. 3.29. Разная высота секций
Это не является проблемой, поскольку в любом случае секции будут выводиться упорядоченно рядами, несмотря на разную высоту. При этом можно изменить вид выравнивания через vertical-align, добавив это свойство к классу photo. Если указать значение top, то поменяется отображение секций (рис. 3.30).
Рис. 3.30. Выравнивание по верхнему краю
Основной проблемой выступает браузер IE до версии 7.0 включительно. Этот браузер применяет значение inline-block только для строчных элементов и с блочными элементами работает некорректно. Чтобы убедить этот браузер правильно отображать наш пример, необходимо вместо inline-block использовать значение inline и установить свойство hasLayout. Добавление inline разрушит макет в остальных браузерах, поэтому правильным решением будет воспользоваться условными комментариями (пример 3.19).
Пример 3.19. Стиль для IE
<style type="text/css">
/* Стиль из примера 3.18 */
</style>
<!--[if lte IE 7]>
<style type="text/css">
.photo {
display: inline; /* Строчный элемент */
zoom: 1; /* Устанавливаем hasLayout */
}
</style>
<![endif]-->
Конструкция [if lte IE 7] означает применить указанный код для браузера IE версии 7.0 и ниже. Остальные браузеры воспринимают её как комментарий и игнорируют. Что касается свойства zoom, оно нестандартное и предназначено для установки свойства hasLayout, напрямую которое задавать нельзя.
Пример 3.20. Каталог товаров
XHTML 1.0CSS 2.1IECrOpSaFx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Каталог</title> <style type="text/css"> BODY { font: 10pt Arial, Helvetica, sans-serif; } #catalog A { color: #666; } #catalog A:hover { color: #1fa0e2; } #catalog DIV { width: 110px; /* Ширина */ margin: 0 5px 15px 0; /* Отступы */ text-align: center; /* Выравнивание по центру */ display: inline-block; /* Строчно-блочный элемент */ vertical-align: top; /* Выравнивание по верхнему краю */ } #catalog P { margin: 0 5px; } #catalog SPAN { color: #ccc; font-size: 0.8em; } </style> <!--[if lte IE 7]> <style type="text/css"> #catalog DIV { display: inline; /* Строчный элемент */ zoom: 1; /* Устанавливаем hasLayout */ } </style> <![endif]--> </head> <body> <div> <div> <p><img src="images/category1.jpg" alt="" /></p> <p><a href="#">Видео</a> <span>1856</span></p> </div> <div> <p><img src="images/category2.jpg" alt="" /></p> <p><a href="#">Фото</a> <span>315</span></p> </div> <div> <p><img src="images/category3.jpg" alt="" /></p> <p><a href="#">Мобильные устройства</a> <span>2109</span></p> </div> <div> <p><img src="images/category4.jpg" alt="" /></p> <p><a href="#">Компьютеры и орг.техника</a> <span>4296</span></p> </div> <div> <p><img src="images/category5.jpg" alt="" /></p> <p><a href="#">Бытовая техника</a> <span>731</span></p> </div> </div> </body> </html>
Результат данного примера показан на рис. 3.31.
Рис. 3.31. Каталог товаров
Чтобы не задавать каждому тегу <div>, которых может быть довольно много, свой класс, в примере введён <div> с идентификатором catalog и стиль применяется к тегам внутри него.
Красивое выравнивание блоков по резиновой сетке — CSS-LIVE
Сегодня, в мой день рождения (26 апреля), я хочу сделать подарок всем верстальщикам и представить вам абсолютно уникальное, новое и самое главное — полезное решение выравнивания блоков по резиновой сетке, которого так все долго ждали и которого ещё нет в сети.
При верстке резиновых страниц часто возникает задача выстроить однотипные блоки (например, товары в каталоге или фотографии в галерее) по сетке, наподобие таблицы, но гибкой, с заранее неизвестным количеством столбцов. Когда-то единственным способом для этого был float, и блоки приходилось прижимать к левому краю. С помощью inline-block эту задачу можно решить проще и гибче, блоки могут иметь разную высоту, и разное вертикальное выравнивание. Но почему-то такие макеты в массе всё равно прижаты к левому краю. Казалось бы, что мешает отцентрировать эту сетку, а то и вовсе растянуть ее по ширине свободного места c помощью
Проблема возникает в последней строке, на которой горизонтальный ритм сетки сбивается. Но оказалось, что эту проблему можно решить!
Проблема
Для начала предлагаю обсудить этот вопрос подробнее. Посмотреть примеры того, что именно за неприятность происходит с последней строкой в сетке, а так же определиться, какого результата мы ждём.
Проблема очень похожа в обоих случаях, так что выберем любое свойство из двух, например,
<ul> <li>Пункт 1</li> <li>Пункт 2</li> <li>Пункт 3</li> <li>Пункт 4</li> <li>Пункт 5</li> <li>Пункт 6</li> <li>Пункт 7</li> <li>Пункт 8</li> </ul>
ul { font: 14px Verdana, Geneva, sans-serif; text-align: center; } ul li { display : inline-block; width : 80px; height: 80px; margin-bottom: 10px; background: #E76D13; vertical-align: top; text-align: center; line-height: normal; /* эмуляция inline-block для IE6-7*/ //display : inline; //zoom : 1; }
Ничего необычного в коде нет. Обычный список, всё те же старые добрые элементы строчно-блочного (display : inline-block) уровня. Самое пожалуй интересное, что стоит выделить, это text-align: center, благодаря которому и происходит наше горизонтальное выравнивание.
Пока пункты занимают единственную строку, всё выглядит так.
Но, как только на поле появляется последняя строка, кол-во блоков в которой меньше, чем в предыдущих строках, то получается следующее.
Вроде бы тоже неплохо, всё происходит так, как и должно происходить. Последняя строка так же, как и предыдущие — выравнивается по середине. Но, именно это выравнивание и создаёт нам проблему. Блоки находятся по середине, создавая по бокам много ненужного и пустого пространства. Если бы, например, в последней строке остался всего один блок, то этого бы пространства стало ещё больше, а сам блок болтался бы в середине, как изгой на пустыре.
А теперь, давайте взглянем, чтобы мы хотели получить.
Как видно из рисунка, два элемента в последней строке прижались к левому краю, не смотря на то, что строка по ширине явно больше, чем общая ширина её блоков. Это видно по правому, свободному пространству, которое составляет две трети наших элементов. Именно такое поведение блоков нам и нужно получить в итоге. Т.е. по сути сделать так, чтобы выравнивание элементов было красивым, строящимся ровно по сетке (даже по резиновой), не взирая на своё количество и лишнее пустое пространство в последней строке. Говоря другими словами, нам нужно каким либо образом повлиять на поведение последней строки, заставив её подчиняться нашим правилам.
Как это работает?
Перед тем, как перейти непосредственно к решению задачи, давайте для начала разберём алготитм работы таких свойств, как text-align: center и justify. Это поможет нам лучше понять, что происходит в нашей сетке, её поведение, и то, как выполняется работа этих свойств в последней строке.
text-align: center
Начнём пожалуй с text-align: center. В нем можно выделить три основных этапа.
Первый этап
В начале берётся строка. Высчитывается общая ширина слов или неразрывных блоков (inline-block, img, и т.д) в строке. Причём если между этими блоками есть фактические пробелы или же отступы, которые сделаны с помощью таких средств, как word-spacing и прочих, то эти расстояния так же добавляются к общей сумме ширины блоков.
Второй этап
На этом этапе всё ещё проще. Вычисляется оставшееся ширина строки, т.е. всё свободное пространство, которое не вошло в сумму общей ширины слов с их межсловным расстоянием.
Третий этап
Ну и в завершающем этапе происходит следующее. Самая первая в строке площадка с буквой сдвигается вправо ровно на половину результата, полученного после этапа номер два. Что даёт абсолютно равные отступы справа и слева самой строки.
Чтобы лучше понять, как всё происходит, я сделал специальный рисунок.
Перед нами рисунок, на котором изображён контейнер, с двумя строками, ширина которых составляет 500px.
Так же мы можем видеть, что сумма всех блоков в первой строке с их интервалами равна 370px. Значит на третьем этапе наш алгоритм вычел из первого второе (500-370), что дало результат 130. Далее, как я уже говорил, поделил эту сумму ровно на два раза (130/2) и отодвинул самый первый блок вправо, на полученный результат (65px). Таким образом наши блоки оказались точно по середине, с отступы по бокам стали абсолютно одинаковыми. Если бы в первой строке не хватило места, то самый крайний справа блок перешёл бы на второю строку и алгоритм снова включился бы в дело.
Тоже самое касается и второй строки. В ней алгоритм работает точно так же, мало того, можно увидеть, что боковые отступы в ней составляют дробное число (132.5px), так как text-align: center делит общую ширину блоков с их интервалами ровно на 2, как я и говорил.
В принципе ничего сложного, всё вполне понятно и логично. В нашей ситуации важно понять, что, если в последней строке остаётся один блок, то он выравнивается ровно по середине, за счёт высчитанного, свободного пространства справа. А это как раз то, что нам и нельзя допускать.
text-align: justify
Механизм text-align: justify, я уже описывал в одной из своих статей. Повторяться не имеет смысла, поэтому я вам, настоятельно рекомендую пройти по ссылке и внимательно перечитать там всё, что касается алгоритма и этапов работы text-align: justify.
Единственное, что я хочу упомянуть здесь, это то, что…
Последняя же строка не попадает в поле зрения justify, так как он работает только для целиком заполненных строк, а в последней строке пробелы всегда остаются своего обычного размера.
Да, именно так. text-align: justify в отличии от text-align: center вообще отказывается работать с последней строкой, и поэтому выравнивания по ширине в ней не происходит.
Так что это тоже входит в наши обязанности, а именно заставить неработающий алгоритм действовать, и в завершающей строчке.
Решение
Сразу забегу вперёд и скажу, что решение для обоих случаев абсолютно идентично, поэтому нет смысла разбирать каждое из них в отдельности. Так что давайте поразмыслим, что у нас есть на данный момент.
Значит, по сути, у нас есть два свойства text-align: justify и center, каждый из которых выравнивает строки по собственному алгоритму. А так же мы уже понимаем, что text-align: center работает с последней строкой, а вот text-align: justify — нет. Но зато мы точно знаем, что если строка, за которой идёт следующая (допустим последняя) будет полностью заполнена, то эти свойства будут выравнивать нашу сетку по нашим правилам. И даже при резиновой ширине контейнера такие заполненные строки будут вести себя так, как нам хотелось бы.
Какой же вывод можно из этого сделать? И как можно связать эти вещи с последней строкой, в которой может быть всего один блок? Ответ прост. Нам нужно придумать, как можно заполнить последнюю строку так, чтобы, оставшееся от общей ширины блоков пространство, было чем-то заполнено, и мало того, чтобы это «чем-то» могло переходить на следующую строку, для того, чтобы наши свойства работали безукоризненно.
Итак, для заполнения последней строки, мы будем использовать псевдоэлемент, сгенерированный при помощи :after. Это хороший вариант, так как он поможет решить нам нашу задачу и избавит от лишнего мусора в разметке. По умолчанию псевдоэлементы генерируют строчный блок, а значит именно то, что нам и нужно. Так как inline-block будет представлять из себя одну большую, неразрывную букву и не сможет разбиться на несколько «кирпичей», что не приведёт ни к чему путному. Ну, а block сразу же займёт отдельную строку, и так же, как и inline-block — не принесёт результатов. При этих значениях наша ситуация будет выглядеть примерно так.
ul:after { content: 'display: block, мало контента'; display: block; background: #E76D13; }
Как видно, из скриншота, вспомогательный блок сразу же занял новую строку, оставив прежнюю (последнюю по факту) подчиняться правилам алгоритма. Каких-то положительных результатов такими средствами добиться невозможно, как бы вы не пытались, так что отбрасываем эти вещи и переходим к настоящему решению…
Из всего вышесказанного можно понять одно, что в нашей ситуации нам может помочь элемент, именно строчного (inline) уровня, т.е. обычный display : inline + строка текста, с пробелами между слов.
ul:after { content: 'Обычный строковый элемент, обычный строковый элемент, обычный строковый элемент'; background: #E76D13; }
Да, очень похоже. Из скриншота ясно, строчный блок, мало того, что смог повлиять на последнюю строку, так ещё и перенёсся на следующую не полностью, оставив на предыдущей строчке неразрывное слово. По этому слову видно, что по своей ширине оно немного не дотягивает до ширины блоков (100px), а если бы дотягивало, то, возможно, у нас и вышло бы что-то путное.
В общем поэкспериментировав какое-то время с вышесказаннным, на свет родилось следующее решение.
ul { font: 14px Verdana, Geneva, sans-serif; text-align: center; margin: 0px 0 10px; } ul:after { content: ' i i i i i i i i '; word-spacing: 97px; padding-left: 97px; /* visibility: hidden; Скрыл это свойство, ради демонстрации процесса*/ } ul li { display : inline-block; width : 100px; height: 100px; margin: 0px 0 20px; background: #E76D13; vertical-align: top; text-align: center; /* эмуляция inline-block для IE6-7*/ //display : inline; //zoom : 1; }
Здорово! Наша сетка выровнена так, как нам надо. Сразу же скажу, что такое выравнивание получается при любой ширине экрана, что не может не радовать. А теперь сама суть.
Значит у нас есть строка «i i i i i i i i» , состоящая из букв и пробелов, но это не простые буковки и пробелы, как может показаться на первый взгляд. Во-первых сама буква i выбрана не случайно. Дело в том, что буква i сама по себе узкая, за счёт чего ей легко управлять и подгонять нужную ширину. Во-вторых сами пробелы состоят не только из символа пробела, но и из word-spacing, т.е. его значение плюсуется к пробелу, что в сумме даёт нужную нам ширину. Да, и конечно же, нужно учитывать, что связка «пробел + word-spacing» работает только тогда, когда в конце неё идёт другой символ, отличный от пробельного. Так как пробелы имеют свойство «схлопывания», то буквы i, идущие после word-spacing не дают им этого сделать.
Так что, по сути, мы имеем неразрывные псевдоблоки, в виде «буквы + padding-left» вначале псевдоэлемента, а далее в виде связки «пробел + word-spacing + буква», и так до конца строки. Ну, а на следующей строчке всё повторяется заново, только первый псевдоблок состоит теперь из одной буквы. Но эта строка нас уже не волнует, нас интересуют только те «добавочные блоки», которые дополняют последнюю строку с нормальными блоками в сетке.
Кстати, букв должно хватить, чтобы гарантировано заполнить последнюю строку до конца в худшем случае. Т.е. их число должно быть равно максимальному кол-ву блоков в строке.
Да, и, конечно же, с text-align: justify этот метод работает точно так же.
Но это были плюсы, а как же минусы? Минусы у этого варианта таковы:
Во-первых, в нестабильной работе в Opera, блоки в которой, временами имеют нечёткое выравнивание по сетке. Причём это касается только последней и предпоследней строк. Не понятно, из-за чего это происходит, к сожалению мне так и не удалось это выяснить. Возможно проблема кроется в том, что крайняя буква прилипает к блоку, не чувствуя между ними пробела. В любом случае, очень надеюсь на то, что в комментах кто нибудь сможет дать пояснение этой загвоздки. Но, в целом, это не выглядит безобразно, т.е. работает, но просто немного нестабильно.
Во-вторых, из-за создания дополнительных элементов снизу образовывается неприятный отступ, который происходит за счёт его размера шрифта и межстрочного интервала. Лекарство в виде обнуления шрифта + межстрочного интервала у родителя и восстановлением их в нормальное состояние у потомков — не приносит результата, так как нужная нам строка в псевдоэлементе становится невидимая, и наша сетка перестаёт её чувствовать и поддаваться дрессировке.
Но есть всё же «почти» выход из ситуации, это нижний отрицательный margin, который может подтянуть часть своего «хвоста», позволяя следующим за ним элементам налезать на него. Подробнее об этом можно почитать тут. Я сказал «почти», потому что этот способ выручает отчасти, я бы сказал, на половину, может чуть больше. Так как в момент создания, уже двух-строчного хвоста, из букв, подтянуть обе строки, уже не представляется возможности.
Во-третьих, чтобы заставить этот метод работать в IE6-7, нам потребуется заменить наш псевдоэлемент дополнительным блоком-помощником, который будет вставлен в конце списка. Плюс к этому придётся воспользоваться такими средствами, как text-justify, text-align-last (их поведение я уже описывал в этой статье), восстановлением свойства zoom в начальное состояние, у дополнительного блока и прочими «радостями», благодаря которым, в этих браузерах наш способ будет работать так же. В конце статьи я обязательно приведу разные варианты этой задачи, чтобы вы могли выбрать нужный.
Резюме
В этой статье мы доказали, что блочная сетка не такая уж и неподвластная. Как оказалось, это вполне управляемая конструкция. Мало того, красивое выравнивание блоков в сетке можно достичь совершенно обычным и не трудным способом, а результат позволяет нам легко использовать его плоды в любых проектах. Что я и делаю, когда предоставляется такая возможность.
Да, и конечно же, хочется выразить огромную благодарность Илье Стрельцыну (@SelenIT2) за его идеи и невероятную помощь в материалах. Без него бы этой статьи не было.
Все решения воедино
Обновление от 30.03.2017: Современное решение этой задачи на Grid Layout (без хаков и лишнего кода)
P.S. Это тоже может быть интересно:
CSS создание 3 блоков div в одной строке, структура div
Может быть, кто-нибудь может помочь мне со структурой divs, которая будет представлять изображение выше, и если есть какие-то специальные параметры css держателя div, или другие добавить их тоже?
css htmlПоделиться Источник Tautvydas 09 января 2013 в 12:29
6 ответов
- структура div и css
У меня есть следующая структура страницы <div id =site-wrapper> <div id =banner> <div id=menu> <center>Menu Goes Here</center> </div> </div> <div id=content> <center>Content Goes here</center> </div> <div id=sidebar_r>…
- HTML+CSS: как заставить содержимое div оставаться в одной строке?
У меня есть длинный текст внутри div с определенным width : HTML: <div>Stack Overflow is the BEST !!!</div> CSS: div { border: 1px solid black; width: 70px; } Как я мог заставить строку оставаться в одной строке (то есть быть обрезанной в середине Overflow) ? Я попытался использовать…
9
Есть много способов сделать это, один из них-с относительным поплавком
<div>
<div>Block1
</div>
<div>Block2
</div>
<div>Block3
</div>
</div>
Это порождает что-то вроде
Поделиться alexb 09 января 2013 в 12:37
3
Как насчёт:
<div>a</div>
<div>b</div>
<div>c</div>
с CSS:
div {
width: 33%;
border: 1px solid red;
float: left;
}
?Поделиться FurloSK 09 января 2013 в 12:36
2
Если вы просите код html для выполнения визуального представления, как показано в вашем вопросе , это место http://csslayoutgenerator.com/ , где вы можете создать макеты html.
Поделиться Sowmya 09 января 2013 в 12:31
- css inline-block div позиционирование
Я пытаюсь исправить проблему постулирования в адаптивном дизайне. У меня есть контейнер div, содержащий 4 (но это может быть больше или меньше) divs, которые отображаются как встроенный блок. Я хотел бы знать, как контролировать количество дивов в строке при изменении размера страницы (с CSS, если…
- CSS Выравнивание Небольших Блоков Div
Так что в основном я сделал эти блоки из div, это мой HTML: <div> <div class=cp style=background-color: #FF6947;></div> <div class=cp style=background-color: #9400DE;></div> <div class=cp style=background-color: #16B5C9;></div> <div class=cp…
2
Рабочая Fiddle
CSS:
.div {
display:inline-block;
width:150px;
height:400px;
margin:0;
}
#one {
background:green;
}
#two {
background:red;
}
#three {
background:blue;
}
HTML:
<div></div>
<div></div>
<div></div>
Вы можете использовать свойство CSS display
. И Указав inline-block
.
Поделиться Muhammad Talha Akbar 09 января 2013 в 12:31
2
три div :
<div></div><div></div><div></div>
с css :
div {
display: inline-block;
}
поместите в эти div все содержимое, которое вы хотите.
Вы также можете использовать float:left вместо свойства отображения.
Если вам нужен жидкий макет (первый и последний div имеют фиксированную ширину, а средний занимает все необходимое пространство), вы можете :
.firstDiv {
float: left;
width: 200px;
}
.lastDiv {
float: right;
width: 200px;
}
.middleDiv {
margin-left: 200px;
margin-right: 200px;
}
вы также можете использовать абсолютное позиционирование :
body {
position: relative;
}
.firstDiv {
position: absolute;
top: 0px;
bottom: 0px;
left: 0px;
width: 200px;
}
.lastDiv {
position: absolute;
top: 0px;
bottom: 0px;
left: 200px;
right: 200px;
}
.middleDiv {
position: absolute;
top: 0px;
bottom: 0px;
right: 0px;
width: 200px;
}
Поделиться Jerome Cance 09 января 2013 в 12:31
1
Взгляните на этот код JS Fiddle:
<div>Red</div>
<div>Green</div>
<div>Blue</div>
div {
display:inline-block;
width:100px;
height:200px;
}
._1 {
background-color:red;
}
._2 {
background-color:green;
}
._3 {
background-color:blue;
}
Поделиться madhead 09 января 2013 в 12:36
Похожие вопросы:
Выровнять текст внутри div с помощью CSS?
Как выровнять две части уравнения в одной строке. Пожалуйста, посмотрите на приведенную картинку, обе части находятся внутри div. Структура HTML выглядит следующим образом.. <div>…
Почему текст может быть написан в одной строке в div?
Я использую шаблон для создания веб-сайта. Проблема в том, что в слайдере я пишу текст внутри созданного мной div, и текст отображается в одной строке, поэтому он переполняет div. Я не могу понять,…
css-несколько встроенных блоков DIV сверху
Как выровнять несколько встроенных блоков div друг над другом, если больший div находится слева, например: EXAMPLE Я пытаюсь сделать так, чтобы эти две коробки были ниже двух других, но они сами…
структура div и css
У меня есть следующая структура страницы <div id =site-wrapper> <div id =banner> <div id=menu> <center>Menu Goes Here</center> </div> </div> <div…
HTML+CSS: как заставить содержимое div оставаться в одной строке?
У меня есть длинный текст внутри div с определенным width : HTML: <div>Stack Overflow is the BEST !!!</div> CSS: div { border: 1px solid black; width: 70px; } Как я мог заставить строку…
css inline-block div позиционирование
Я пытаюсь исправить проблему постулирования в адаптивном дизайне. У меня есть контейнер div, содержащий 4 (но это может быть больше или меньше) divs, которые отображаются как встроенный блок. Я…
CSS Выравнивание Небольших Блоков Div
Так что в основном я сделал эти блоки из div, это мой HTML: <div> <div class=cp style=background-color: #FF6947;></div> <div class=cp style=background-color:…
css метка и div в одной строке
Это мой html <div id=restaurantInformation> <ul> <li> <label>Logo</label> <div class=oneInfo> <div class=fileupload-new thumbnail > <img…
Несколько div в одной строке bootstrap
Я хочу несколько div в одной строке с опцией переполнения. .col-xs-3 a{height:100px;background:pink;display:block;margin-top:10px;padding:10px} <script…
Два div в одной строке с использованием css
Я хочу сделать два тега div в одной строке. Я попробовал использовать свойство css, такое как display: inline.But, но оно не работает. Я хочу, чтобы два выпадающих списка отображались в одной…
Css div в ряд – Тарифы на сотовую связь
113 пользователя считают данную страницу полезной.
Информация актуальна! Страница была обновлена 16.12.2019
нужно расположить в однин горизонтальный ряд. При этом, при масштабировании окна браузера они должны равномерно переноситься. Или при выводе изображений из базы данных, например аватаров, нужно чтобы картинки были все в один ряд. Как это сделать?
Располагаем n блоков div в горизонтальный ряд
Всё достаточно просто. Воспользуемся свойством float (выравнивание с обтеканием). Важно, чтобы минимальная ширина страницы/окна/родительского элемента позволяла вместить в себя как минимум два. Остальные блоки переносятся на следующую строку.
Как запретить обтекание блоков
Бывает так, что одна строка может наехать на другую. Для этого отменим обтекание свойством clear. Зададим его для div, который будет размером по высоте в 1 пиксель и ширине 100%. При надобности, такими пустыми блоками DIV можно запретить обтекание всех внутренних блоков, сверху и снизу.
Теперь к практике, примерам и исходникам.
Пример горизонтального расположения нескольких блоков
Всем div мы присвоим параметр float:left. Для наглядности создадим 6 таких блоков:
DIV 1 DIV 2 DIV 3 DIV 4 DIV 5 DIV 6
Смотрим пример работы и скачиваем исходники:
Рекомендую масштабировать страницу и посмотреть за поведением элементов.
Если задача состоит в том, чтобы расположить два больших блока в один ряд, то нужно float для них задать left для одного и right для другого. Опять же, ширина блоков не должна превышать ширину страницы/окна/родителя, иначе они перенесутся на следующую строку.
Часто на практике приходится решать задачу группирования и выравнивания контента средствами CSS. Сегодня мы рассмотрим основные способы размещения элементов в горизонтальный ряд.
Материал данной статьи призван помочь начинающим веб-дизайнерам в освоении приемов верстки web-страниц.
Из чего выбрать или методы
Существует несколько способов расположения структурных элементов в ряд в горизонтальной плоскости. Наиболее полезными, с точки зрения практического применения, являются:
- метод «Float»
- метод «Inline-block»
- метод «Table-cell»
Каждый из них имеет свои преимущества, области применения и недостатки. Рассмотрим их по порядку.
«Для рывка» или немного теории
Все структурные элементы HTML можно условно разделить на:
Инлайновые (встроенные) – типа img, span и им подобные. У нас нет возможности менять их фон и задавать им произвольные линейные размеры.
Блочные – занимающие всю ширину родительского блока, всегда начинаются с новой строки – p, h, div.
Наглядный пример встроенных и блочных структур приведен ниже:
Метод «Float»
Как уже известно (см. выше), блочный элемент размещается с новой строки вне зависимости от заданной ему ширины (width). По этому, уменьшая горизонтальный размер div-а, в рядок блочки не построить.
Наиболее популярный (особенно среди начинающих верстальщиков), метод решения это использование свойства float.
CSS свойство float обрело большую популярность и практическую ценность после перехода от табличного способа верстки к блочному.
Float: left (right) трансформирует блочный элемент в плавающий, выравнивает по левому (правому) краю родительского блока и устанавливает обтекание справа (слева) текстом и другими элементами.
Для примера, создадим четыре блока, которые нужно разместить в ряд:
И внешнюю таблицу стилей с следующим содержимым:
В результате получаем четыре блока, расположенные в горизонтальный ряд и выровненные по левому краю родительского блока:
Иногда на практике бывает необходимо выровнять блоки по правому краю родительского элемента. Изменим обтекание блоков в предыдущем примере:
Обратите внимание на надписи, расположенные в блоках. На первый взгляд может показаться, что пример отработал криво. Но на самом деле, браузер обработал код правильно: прочитал блоки сверху вниз, и сделал то, что мы от него просили – выровнял по правому краю. Учтите этот момент при использовании свойства float: right.
Для того, чтобы прервать обтекание элементов с какого-то конкретного места, используйте строчку:
В рассмотренном выше примере расстояния между блоками мы задавали при помощи отступа margin-right. Но что делать, если у вас при верстке страницы возникла задача: разместить блоки в ряд, центрировать их, да и еще чтобы отступы были только между ними, но никак не снаружи?
Алгоритм действий следующий.
В результате получаем такую картину:
Ну что же, всех практических ситуаций не рассмотришь, по этому перейдем к общим особенностям.
- Ширина блоков должна быть фиксированной. Иначе получите что-то такое:
Метод «Inline-block»
Как строчные так и блочные элементы имеют свои преимущества и недостатки в контексте каждой конкретной решаемой задачи. А что если объединить их преимущества?
Встречайте, гвоздь программы – свойство display: inline-block.
display: inline-block генерирует блочно-строчный элемент, который по сути является строчным, но сохраняет блочные свойства – позволяет изменять линейные размеры, задавать поля, отступы и т.д.
Блочно-строчный элемент имеет следующие свойства:
- высота и ширина блока определяется автоматически по содержимому и значению отступов (padding)
- высота и ширина блока может быть задана фиксировано
- Отсутствует эффект схлопывания границ.
Рассмотрим пример создания простого навигационного меню, содержащего картинку и ссылку.
В результате получаем такую менюшку:
Как видим, получилось кривовато. Но расстраиваться мы не намерены, по-этому применяем к нашим дивам CSS свойство vertical-align (подробнее см. ниже):
Теперь наша навигационная панель выровнялась по верхней линии:
Конечно, приведенный пример является примитивным, но я уверен, что на его основе вы сможете создать настоящий шедевр.
- При уменьшении ширины окна обозревателя невмещающийся элемент перемещаеться вниз (как в случае float: left)
- Элемент, отображаемый как inline-block чувствителен к пробелам. Это приводит к тому, что даже при нулевых значениях margin между блоками будет зазор. Зазор этот зависит от применяемого шрифта. Для примера рассмотрим список:
HTML:
Результатом рендеринга такого кода будет следующая картина:
Есть несколько способов убрать зазоры:
- подобрать отрицательные значения margin:
Результатом применения любого из выше перечисленных приемов будет следующая структура:
Метод «Table»
Табличный подход долгое время был стандартом верстки, что в первую очередь объяснялось простотой и интуитивной понятностью разметки. Скорее всего, именно это и послужило причиной появления табличного форматирования в CSS.
Свойства display: table (table-cell, inline-table), позволяют выполнять табличное форматирование элементов без применения HTML таблиц.
Для горизонтального размещения блоков нам понадобится родительский элемент, имеющий свойство display: table, и дочерние элементы (ячейки), имеющие свойство display: table-cell:
- В отличии от методов «Inline-block» и «float», при уменьшении ширины окна веб-браузера, ячейки не перемещаются вниз.
- У вас нет возможности задавать свойство margin для ячеек псевдотаблицы.
- Кросс-браузерность. Свойства из семейства display: table* не поддерживаются IE6, IE7. Кроме того, в IE8 вы можете наблюдать динамическую ошибку рендеринга псевдотабличных элементов в виде рандомно пропадающих ячеек. Данная ошибка чаше всего проявляется при первичной прорисовке документа
Подскажите, пожалуйста, как можно расположить несколько div-ов в одну строку таким образом, чтобы даже в том случае, если их общая ширина превышала ширину контейнера, они всё равно не переносились на новую строку, а просто происходила обрезка не помещающихся div-ов.
4 ответа 4
Есть много вариантов, в зависимости от того, как нужно отображать сами блоки. Один с вариантов:
На мой взгляд, самое нормальное решение:
Я использовал у себя эту часть:
и все заработало.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками html css или задайте свой вопрос.
Связанные
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459
Выравнивание блоков на всю ширину (justify)
Как в горизонтальным меню, метод с justify и after 100% можно использовать для выравнивания других элементов в одну линию на всю ширину родителя.
1
Ссылки в одну строку
<div>
<a href="#">Apple</a>
<a href="#">Xiaomi</a>
<a href="#">Гаджеты</a>
<a href="#">Смартфоны</a>
<a href="#">Аксессуары</a>
</div>
.list {
text-align: justify;
}
.list:before{
content: '';
display: block;
width: 100%;
height: 0;
}
.list:after {
content: '';
display: inline-block;
width: 100%;
height: 0;
visibility: hidden;
overflow: hidden;
}
.list a {
font-size: 20px;
color: #0008ff;
}
2
Маркированный список в одну строку
<ul>
<li>Apple</li>
<li>Xiaomi</li>
<li>Гаджеты</li>
<li>Смартфоны</li>
<li>Аксессуары</li>
</ul>
.list {
text-align: justify;
margin: 20px 0;
padding: 0;
}
.list:before{
content: '';
display: block;
width: 100%;
height: 0;
}
.list:after {
width: 100%;
height: 0;
visibility: hidden;
overflow: hidden;
content: '';
display: inline-block;
}
.list li {
display: inline-block;
padding: 20px 0;
width: 127px;
text-align: center;
color: #fff;
background: #f99752;
font-size: 19px;
}
3
Div в одну линию
<div>
<div>Apple</div>
<div>Xiaomi</div>
<div>Гаджеты</div>
<div>Смартфоны</div>
<div>Аксессуары</div>
</div>
body {
background: #eee;
}
.list {
text-align: justify;
margin: 20px 0;
}
.list:before{
content: '';
display: block;
width: 100%;
height: 0;
}
.list:after {
width: 100%;
height: 0;
visibility: hidden;
overflow: hidden;
content: '';
display: inline-block;
}
.list-item {
display: inline-block;
padding: 20px 0;
width: 110px;
text-align: center;
color: #fff;
background: #ff7d7d;
font-size: 60px;
border: 5px solid #fff;
}
принцип работы — учебник CSS
Один из методов создания разметки веб-страниц основывается на свойстве float
. Мы изучали его во втором разделе учебника и показывали базовый пример использования float для верстки макета с несколькими колонками.
На изображении ниже показан еще один пример того, как создать четырехколочный макет при помощи свойства float:
Каждая колонка занимает ¼, или 25% всей ширины экрана. Четыре колонки выстраиваются одна за другой, четко помещаясь в один ряд, поскольку их ширина в сумме составляет 100%. Если увеличить ширину колонки даже на одну долю процента либо добавить сбоку margin
, последняя колонка переместится вниз, поскольку уже не будет помещаться в родительский контейнер:
Чтобы поменять колонки местами, начиная отсчет не слева направо, а наоборот, нужно всего лишь поменять значение свойства float
с left
на right
:
Обратите внимание, что значение свойства clear
для элемента #footer
мы также изменили на противоположное. В данном случае, чтобы облегчить задачу и избавиться от необходимости изменять значение свойства сброса обтекания при изменении свойства float
, достаточно записать clear: both
— тогда обтекание для футера будет отменено с двух сторон сразу.
Поскольку по умолчанию блочные элементы занимают всю ширину экрана, важно определять через CSS ширину для float-элементов, чтобы освободить горизонтальное место под эти элементы и, собственно, увидеть сам эффект обтекания. Ширина может быть как фиксированной, так и относительной (как в нашем примере).
Допустим, если мы укажем фиксированную ширину 960 пикселей для родительского контейнера, содержащего четыре плавающих блока шириной 25% каждый, то ширина одного блока составит 240 пикселей:
К слову, чтобы родительский блок .container
был горизонтально выровнен по центру, а не прилегал к левому краю, мы добавили к нему свойство margin
со значением auto
. Это сокращенная запись, но вы можете добиться того же эффекта, если запишете стили отдельно для левого и правого полей (только они играют роль в горизонтальном центрировании):
.container { margin-left: auto; margin-right: auto; }
Изменение порядка колонок
Свойство float позволяет не только менять визуальный порядок следования колонок, но и перемещать любые из них выборочно. Можно перенести три столбца вправо, а один — влево и т. д. Главное, чтобы всем столбцам хватило места в одном ряду.
Возможность такого перемещения позволяет не привязываться к порядку размещения блоков в HTML. К примеру, если ваш сайдбар должен находиться слева на странице, но вы не хотите, чтобы в HTML-документе он располагался первым, как на примере ниже, вам на помощь придет float.
У вас может возникнуть вопрос, зачем важен порядок тегов в HTML. Что ж, во-первых, это может быть обычное нежелание видеть в HTML-коде сначала длинный перечень второстепенной информации (которая часто содержится в сайдбаре), и только затем — основное содержимое. Во-вторых, присутствие в верхней части документа большого количества маловажного контента может создавать неудобства для людей, которые используют экранный диктор, ведь программа будет читать сначала текст сайдбара, после чего перейдет к информации, которая интересует посетителя.
Еще одна причина — поисковые системы. Нередко роботы читают лишь небольшой отрывок кода HTML, и, если ваша веб-страница весьма длинная, а важная для поисковых систем информация находится где-то в ее конце, робот может до нее не дойти.
На скриншоте ниже показано, каким образом можно изменить порядок следования HTML-тегов, при этом сохранив внешний вид страницы идентичным. Мы обернули блок с основным контентом и первый сайдбар в тег <div>
с классом .wrapper
. Это дало возможность внутри него поменять местами два вышеупомянутых элемента.
Как видите, визуально всё осталось неизменным, но в HTML-структуре произошли изменения. Теперь основное содержимое находится в начале страницы, что делает сайт более доступным для пользователей с экранным диктором, а также для поисковых систем, у которых есть квоты относительно сканируемой информации.
Вложенные float-элементы
Как было показано на примере выше, можно вкладывать плавающие элементы в такие же плавающие элементы, тем самым добиваясь полезных эффектов. Возможно, такой подход выглядит странно, но он позволяет создавать колонки внутри колонок, что нередко бывает нужно при верстке макетов со сложным дизайном.
Кроме этого, заключение элементов в контейнер позволяет контролировать их ширину и предотвращать «съезжание» элементов вниз из-за нехватки места, как было показано в начале урока.
Немного о grid-системах
Сетка (англ. grid) использовалась дизайнерами еще до эры Интернета. Grid-система — это набор колонок и рядов, которые помогают правильно разместить элементы макета.
Самая распространенная grid-система имеет 12 колонок одинаковой ширины, между которыми, как правило, есть небольшое расстояние. Такое количество столбцов вовсе не означает, что вам нужно создавать сайт с двенадцатью колонками. Вы можете сделать макет с любым количеством колонок, разделив 12-колоночную сетку на группы. Допустим, если макет состоит из трех колонок, то можно сделать эти колонки одинаковой ширины, каждая из которых будет занимать 4 столбца grid-системы. Либо под две колонки отвести половину сетки (6 столбцов), тогда как третья колонка займет оставшееся пространство сетки (еще 6 столбцов).
Пример того, как выглядит 12-колоночная сетка:
Подобная сетка гибкая и простая в использовании, она позволяет создавать разнообразные макеты, в то же время придерживаясь общей измерительной схемы. Зачастую в CSS grid-системах есть ряды и колонки, которые через классы именуются как .row
и .column
(либо .col
) соответственно. Колонки помещаются в ряды, а внутрь колонок — содержимое либо вложенные ряды с колонками. Одним из распространенных CSS-фреймворков, которые используют grid-систему, является Bootstrap.
Далее в учебнике: проблемы float-элементов.
Блоки картинок с подписями, выровненные по центру
Задача. | Переработать предыдущее решение для возможности использования выравнивания по центру. | ||
Использование значения inline-block для свойства display существенно упрощает код, но надо учитывать, что это значение поддерживается только современными версиями браузеров.
Как это выглядит в браузере
|
|
Элементы уровня блока — HTML: язык разметки гипертекста
Элементы HTML ( язык разметки гипертекста ) исторически классифицировались как элементы «уровня блока» или элементы «встроенного уровня». Поскольку это презентационная характеристика, в настоящее время она определяется CSS в макете потока. Элемент уровня блока занимает все горизонтальное пространство своего родительского элемента (контейнера) и вертикальное пространство, равное высоте его содержимого, тем самым создавая «блок». В этой статье мы рассмотрим элементы уровня блока HTML и их отличие от элементов встроенного уровня.
Браузеры обычно отображают элемент уровня блока с новой строкой как до, так и после элемента. Вы можете представить их в виде стопки коробок.
Элемент уровня блока всегда начинается с новой строки и занимает всю доступную ширину (растягивается влево и вправо, насколько это возможно).
Следующий пример демонстрирует влияние элемента уровня блока:
HTML
Этот абзац является элементом уровня блока; его фон окрашен для отображения родительского элемента абзаца.
CSS
p {background-color: # 8ABB55; }
- Элементы уровня блока могут появляться только внутри элемента
Есть несколько ключевых отличий между элементами уровня блока и встроенными элементами:
- Модель содержимого
- Как правило, элементы уровня блока могут содержать встроенные элементы и (иногда) другие элементы уровня блока. Этому структурному различию присуща идея, что блочные элементы создают «более крупные» структуры, чем встроенные элементы.
- Форматирование по умолчанию
- По умолчанию элементы уровня блока начинаются с новой строки, но встроенные элементы могут начинаться в любом месте строки.
Различие между блочными и строчными элементами использовалось в спецификациях HTML до 4.01. В HTML5 это двоичное различие заменено более сложным набором категорий контента. В то время как категория «встроенный» примерно соответствует категории фразового содержимого, категория «уровня блока» не соответствует напрямую ни одной категории содержимого HTML5, но элементы «уровня блока» и «встроенные», объединенные вместе, соответствуют содержимое потока в HTML5.Есть также дополнительные категории, например интерактивный контент.
Ниже приводится полный список всех элементов HTML «блочного уровня» (хотя «блочный уровень» технически не определен для новых в HTML5 элементов).
Как предотвратить обертывание встроенных блоков div?
<
html
язык
=
"en"
>
<
голова
> 9002
>
<
meta
charset
=
"UTF-8"
>
<
meta
name
=
"viewport"
content
=
"ширина = ширина устройства, начальный масштаб = 1.0 "
>
<
ссылка
rel
=
" таблица стилей "
href
=
<
title
>
Предотвращение встроенного блока
div от упаковки
title
>
style
>
div {
Дисплей: встроенный блок;
}
стиль
>
головка
>
900 15
<
корпус
>
<
div
class
=
«ряд»
>
<
div
class
=
«col-6»
>
<
div
class
=
«таблица-ответ»
>
<
table
class
=
"таблица без таблицы"
>
<
бортик
class
=
ад-тьма "
> 90 016
<
tr
>
<
th
> header1
th
>
<
th
> header2 < /
th
>
<
th
> header3
th
>
<
th
> header4
th
>
tr
>
thead
>
<
tbody
>
<
tr
>
<
td
> data1
td
>
<
td
> data2
td
>
<
td
> data3
td
>
<
td
> data4
td
>
tr
>
<
tr
>
<
td
> data1
td
>
<
td
> data2
td
>
<
td
> data3
td
>
<
td
> data4
td
>
tr
>
tbody
>
таблица
>
div
>
div
>
<
div
класс
=
"col-6"
900 15>
<
div
class
=
"row"
>
<
div
class
=
"table-responsive"
>
<
table
class
=
"таблица без таблицы"
>
<
thead
class
=
"thead- темный "
>
<
tr
>
<
th
> header1
th
>
<
th
> заголовок2 900 16
th
>
<
th
> header3
th
>
<
th
> header4
th
>
tr
>
thead
>
<
tbody
>
<
tr
>
<
td
> data1
td
>
<
td
> data2
td
>
<
td
> data3
td
>
<
td
> data4
td
>
tr
>
tbody
>
таблица
>
div
>
div
>
<
div
class
=
«ряд»
>
<
div
класс
=
"таблица-ответ"
>
<
таблица
класс
=
"таблица без таблицы"
>
<
thead
class
=
«thead-dark»
>
<
tr
>
<
th
> header1
th
>
<
th
> header2
th
>
<
th
> header3
th
>
<
th
> заголовок4
th
>
tr
>
бортик
>
<
tbody
>
<
tr
>
<
td
> data1
td
>
<
td
> data2
td
>
<
td
> data3
td
>
<
td
> data4
td
>
tr
>
tbody
>
таблица
>
div
>
div
>
div
>
дел
>
<
дел
класс
=
«ряд»
>
<
дел
класс
= 9 0016
"col-6"
>
<
div
class
=
"table-responsive"
>
<
table
class
=
«таблица без таблицы»
>
<
thead
class
=
«thead-dark»
>
<
tr
>
<
th
> header1
th
>
<
th
> header2
th
>
<
th
> заголовок 3
th
>
<
th
> заголовок 4
th
>
tr
>
thead
>
<
tbody
>
<
tr
>
<
td
> data1 < /
td
>
<
td
> data2
td
>
<
td
> data3
td
>
9000 5
<
td
> data4
td
>
tr
>
кузов
>
таблица
>
дел
>
дел
>
<
div
class
=
"col-6"
>
<
div
class
=
"table-responsive"
>
<
таблица
класс
= 90 016
«стол со столом»
>
<
thead
class
=
«thead-dark»
>
<
tr
>
<
th
> header1
th
>
<
th
> header2
th
>
<
th
> header3
th
>
<
th
> header4
th
>
tr
>
thead
>
<
tbody
>
<
tr
>
<
td
> данные1
td
>
<
td
> data2
td
>
<
td
> data3
td
>
<
td
> data4
td
>
tr
>
tbody
>
таблица
>
div
>
div
>
div
>
body
>
html
>
Таблицы в документах HTML
Таблицы в документах HTML11.1 Введение в таблицы
Модель таблицы HTML позволяет авторам упорядочивать данные - текст, предварительно отформатированный текст, изображения, ссылки, формы, поля форм, другие таблицы и т. д. - в строки и столбцы ячеек.
Каждая таблица может иметь связанный заголовок (см. CAPTION ), который дает краткое описание таблицы цель. Также может быть предоставлено более подробное описание (через сводный атрибут ) в интересах людей, использующих речь или Пользовательские агенты на основе Брайля.
Строки таблицы могут быть сгруппированы в головку, основание и секции корпуса, (через THEAD , TFOOT и TBODY элементы соответственно). Группы строк передают дополнительную структурную информацию и могут отображаться пользовательскими агентами способами, подчеркивающими эту структуру. Пользователь агенты могут использовать разделение голова / тело / ступня для поддержки прокрутки тела секции независимо от секции головы и ноги. Когда длинные столы напечатанные, информация о голове и ноге может повторяться на каждой странице, которая содержит данные таблицы.
Авторы также могут группировать столбцы для предоставления дополнительная структурная информация, которая может быть использована пользовательскими агентами. Кроме того, авторы могут объявлять свойства столбца в начале таблицы. определение (через элементы COLGROUP и COL ) таким образом, чтобы пользовательские агенты, чтобы отображать таблицу постепенно, а не ждать все данные таблицы должны быть доставлены перед рендерингом.
Ячейки таблицы могут содержать информацию "заголовок" (см. Элемент TH ) или «данные» (см. Элемент TD ).Ячейки могут охватывать несколько строки и столбцы. Модель таблицы HTML 4 позволяет авторам маркировать каждую ячейку таким образом, чтобы что невизуальные пользовательские агенты могут легче передать пользователю информацию о заголовке ячейки. Мало того, что это механизмы очень помогают пользователям с нарушениями зрения, они делают возможным для мультимодальных беспроводных браузеров с ограниченными возможностями отображения (например, Веб-пейджеры и телефоны) для обработки таблиц.
Таблицыне следует использовать исключительно как средство для компоновки содержимого документа, как это может вызвать проблемы при рендеринге на невизуальные носители.Кроме того, при использовании с графикой эти таблицы могут вынудить пользователей выполнять горизонтальную прокрутку, чтобы просмотреть таблицу, созданную в системе с большим дисплеем. Чтобы свести к минимуму эти проблемы, авторы должны использовать таблицы стилей для управления макетом, а не таблицами.
Вот простая таблица, которая иллюстрирует некоторые особенности HTML настольная модель. Следующее определение таблицы:
<ТАБЛИЦА border = "1" summary = "Эта таблица дает некоторую статистику о фруктах мухи: средний рост и вес, и процентное соотношение с красными глазами (как у мужчин, так и у женщин).">Тестовая таблица с объединенными ячейками Среднее Красные
глазарост вес Мужчины 1,9 0,003 40% Женщины 1,7 0,002 43% может отображаться примерно так на устройстве tty:
Тестовая таблица с объединенными ячейками / ----------------------------------------- \ | | Средний | Красный | | | ------------------- | глаза | | | высота | вес | | | ----------------------------------------- | | Самцы | 1.9 | 0,003 | 40% | | ----------------------------------------- | | Самки | 1,7 | 0,002 | 43% | \ ----------------------------------------- /или как это с помощью графического пользовательского агента:
11.2 Элементы для построения таблиц
11.2.1 Модель
ТАБЛИЦА элементНачальный тег: требуется , Конечный тег: требуется
Определения атрибутов
- сводка = текст [CS]
- Этот атрибут предоставляет сводную информацию о назначении и структуре таблицы для пользовательские агенты, выполняющие рендеринг в невизуальные носители, такие как речь и шрифт Брайля.
- выровнять = слева | в центре | справа [CI]
- Не рекомендуется. Это атрибут определяет положение таблицы по отношению к документу. Допустимые значения:
- слева: Таблица слева от документа.
- центр: Таблица находится в центре документа.
- справа: Таблица справа от документа.
- ширина = длина [CN]
- Этот атрибут определяет желаемую ширину всей таблицы и является предназначен для визуальных пользовательских агентов.Когда значение является процентным значением, значение относительно доступного горизонтального пространства пользовательского агента. в отсутствие указания ширины, ширина таблицы определяется пользователем агент.
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
- bgcolor (цвет фона)
- рамка , правила , граница (границы и правила)
- количество ячеек , cellpadding (сотовый поля)
Элемент ТАБЛИЦА содержит все остальные элементы, которые определяют заголовок, строки, содержимое и форматирование.
В следующем информативном списке описаны операции, которые могут выполнять пользовательские агенты. выполнять при отрисовке таблицы:
- Сделать таблицу сводка доступной для пользователя. Авторы должны предоставить сводка содержимого и структуры таблицы, чтобы люди, использующие невизуальные пользовательские агенты могут лучше понять это.
- Отображает заголовок, если он определен.
- Вывести заголовок таблицы, если он указан. Визуализировать нижний колонтитул таблицы, если один указан.Пользовательские агенты должны знать, где отображать верхний и нижний колонтитулы. Например, если выходной носитель выгружается на страницы, пользовательские агенты могут помещать заголовок в верх каждой страницы и нижний колонтитул внизу. Аналогично, если пользовательский агент предоставляет механизм для прокрутки строк, заголовок может отображаться вверху прокручиваемая область и нижний колонтитул внизу.
- Рассчитайте количество столбцов в таблице. Обратите внимание, что количество строк в таблице равно к количеству элементов TR , содержащихся в ТАБЛИЦЕ элемент.
- Сгруппировать столбцы по любой группе столбцов технические характеристики.
- Отобразите ячейки, строка за строкой и сгруппированные в соответствующие столбцы, между верхний и нижний колонтитулы. Визуальные пользовательские агенты должны отформатируйте таблицу в соответствии с атрибутами HTML и таблицей стилей Спецификация.
Модель таблицы HTML была разработана таким образом, чтобы при содействии автора пользователь агенты могут отображать таблицы постепенно (т. е. как прибывают строки таблицы) вместо того, чтобы ждать всех данных перед началом для рендеринга.
Чтобы пользовательский агент отформатировал таблицу за один проход, авторы должны сообщить пользовательский агент:
Точнее, пользовательский агент может отображать таблицу за один проход, когда ширина столбца указывается с использованием комбинации Элементы COLGROUP и COL . Если какой-либо из столбцов указан в относительные или процентные значения (см. раздел, посвященный вычисляя ширину столбцов), авторы также должны указать ширину сам стол.
Таблица направленности
Направленность стола является либо унаследованной направленностью (по умолчанию слева направо), либо заданный атрибутом dir для элемента TABLE .
Для таблицы с письмом слева направо нулевой столбец находится слева, а нулевая строка - на вершине. Для таблицы с письмом справа налево нулевой столбец находится справа, а строка ноль находится наверху.
Когда пользовательский агент выделяет дополнительные ячейки в строке (см. Раздел о вычислении количества столбцов в таблице), дополнительная строка ячейки добавляются справа от таблицы для таблиц с письмом слева направо и в левая сторона для таблиц с письмом справа налево.
Обратите внимание, что ТАБЛИЦА - единственный элемент, на котором dir меняет визуальный порядок столбцов на обратный; одна строка таблицы ( TR ) или группа столбцов ( COLGROUP ) не может быть независимо обращена.
При установке для элемента ТАБЛИЦА атрибут dir также влияет на направление текста в ячейках таблицы (поскольку атрибут dir наследуется блочные элементы).
Чтобы указать таблицу с написанием справа налево, установите атрибут dir следующим образом:
<ТАБЛИЦА dir = "RTL"> ... остальная часть таблицы ...Направление текста в отдельных ячейках можно изменить, установив dir атрибут в элементе, определяющем ячейку.Пожалуйста, обратитесь к разделу о двунаправленном тексте для получения дополнительной информации. по вопросам направления текста.
11.2.2 Заголовки таблиц: элемент
CAPTIONНачальный тег: требуется , Конечный тег: требуется
Определения атрибутов
- выровнять = вверху | внизу | слева | справа [CI]
- Не рекомендуется. Для визуальные пользовательские агенты, этот атрибут определяет позицию заголовка с уважение к таблице.Возможные значения:
- вверху: Подпись вверху таблицы. Это значение по умолчанию.
- внизу: Подпись внизу таблицы.
- осталось: Подпись слева от таблицы.
- справа: Подпись справа от таблицы.
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
Текст элемента CAPTION , если он присутствует, должен описывать природу Таблица.Элемент CAPTION разрешен только сразу после ТАБЛИЦА начальный тег. А ТАБЛИЦА элемент может содержать только один Элемент CAPTION .
Визуальные пользовательские агенты позволяют зрячим людям быстро понять структуру таблица из заголовков, а также заголовок. Следствием этого является эти подписи часто неадекватны для краткого описания цели и структура таблицы с точки зрения людей, полагающихся на невизуальные пользовательские агенты.
Поэтому авторам следует позаботиться о том, чтобы дополнительная информация, обобщающая назначение и структуру table с использованием атрибута summary элемента TABLE . Это особенно важно для таблиц без подписей. Примеры ниже иллюстрируют использование сводка атрибут.
Визуальные пользовательские агенты не должны обрезать любую часть таблица, включая заголовок, если не предоставлены средства для доступа ко всем частей, например, с помощью горизонтальной или вертикальной прокрутки.Мы рекомендуем, чтобы подпись текст должен иметь ту же ширину, что и таблица. (См. Также раздел о рекомендуемых алгоритмах компоновки.)
11.2.3 Группы строк:
THEAD , TFOOT и TBODY элементовTHEAD - O (TR) + - заголовок таблицы -> TFOOT - O (TR) + - нижний колонтитул таблицы ->Начальный тег: требуется , Конечный тег: опционально
TBODY O O (TR) + - тело таблицы ->Начальный тег: необязательно , Конечный тег: опционально
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
- выровнять , char , charoff , valign (сотовый выравнивание)
Строки таблицы могут быть сгруппированы в заголовок таблицы, таблицу ножка и одна или несколько секций корпуса стола, используя THEAD , Элементы TFOOT и TBODY соответственно.Это разделение позволяет пользовательские агенты для поддержки прокрутки тела таблицы независимо от таблицы голова и нога. Когда печатаются длинные столы, головка и ножка стола информация может повторяться на каждой странице, содержащей данные таблицы.
Головка стола и ножка стола должны содержать информацию о столбцы. Тело таблицы должно содержать строки данных таблицы.
Если присутствует, то каждый THEAD , TFOOT и TBODY содержит группу строк .Каждая группа строк должна содержать хотя бы одну строку, определяется элементом TR .
Этот пример иллюстрирует порядок и структуру головок, ножек и тела.
<ТАБЛИЦА> <ГОЛОВА>... информация заголовка ... ... информация о нижнем колонтитуле ... ... первая строка данных первого блока ... ... вторая строка данных первого блока... ... первая строка данных второго блока ... ... вторая строка данных блока 2 ... ... третья строка данных второго блока ... TFOOT должен появиться перед TBODY в ТАБЛИЦЕ определение, чтобы пользовательские агенты могли отображать стопу до получения всех (потенциально многочисленные) строки данных. Ниже приводится сводная информация о том, какие теги требуется, но его можно не указывать:
- Начальный тег TBODY требуется всегда, кроме случаев, когда таблица содержит только один корпус стола, без головки или ножек стола. TBODY конечный тег всегда можно безопасно опустить.
- Начальные теги для THEAD и TFOOT требуются, когда заголовок таблицы и ножные секции присутствуют соответственно, но соответствующие конечные метки могут всегда безопасно опускаться.
Соответствующие парсеры пользовательских агентов должны подчиняться этим правилам по причинам обратной совместимость.
Таблицу из предыдущего примера можно сократить, удалив определенный конец теги, например:
<ТАБЛИЦА> <ГОЛОВА>...заголовок ... ... информация о нижнем колонтитуле ... ... первая строка данных первого блока ... ... вторая строка данных первого блока ... ... первая строка данных второго блока ... ... вторая строка данных блока 2 ... ... третья строка данных второго блока ... THEAD , TFOOT и TBODY разделов должны содержать такое же количество столбцы.
11.2.4 Группы столбцов:
COLGROUP и Элементы COLГруппы столбцов позволяют авторам создавать структурные подразделения внутри стола. Авторы могут выделить эту структуру с помощью таблиц стилей или атрибутов HTML (например, rules для элемента ТАБЛИЦА ). Для примера визуальное представление групп столбцов, см. образец таблицы.
Таблица может содержать одну неявную группу столбцов (№ COLGROUP ограничивает столбцы) или любое количество явных группы столбцов (каждая из которых разделена экземпляром Элемент COLGROUP ).
Элемент COL позволяет авторам разделять атрибуты между несколькими столбцами не подразумевая какой-либо структурной группировки. «Пролет» COL element - это количество столбцов, которые будут разделять атрибуты элемента.
COLGROUP элементНачальный тег: требуется , Конечный тег: опционально
Определения атрибутов
- пролет = номер [CN]
- Этот атрибут, который должен быть целым числом> 0, определяет количество столбцы в группе столбцов.Значения означают следующее:
- При отсутствии пролетного атрибута , каждый COLGROUP определяет группу столбцов, содержащую один столбец.
- Если для атрибута span установлено значение N> 0, текущий Элемент COLGROUP определяет группу столбцов, содержащую N столбцов.
Пользовательские агенты должны игнорировать этот атрибут, если Элемент COLGROUP содержит один или несколько элементов COL .
- ширина = мультидлина [CN]
Этот атрибут определяет ширину по умолчанию для каждого столбца в текущем группа столбцов.Помимо стандартного пикселя, процентного и относительного значений, этот атрибут позволяет использовать специальную форму "0 *" (нулевая звездочка), что означает что ширина каждого столбца в группе должна быть минимальной шириной необходимо для хранения содержимого столбца. Это означает, что весь столбец содержимое должно быть известно, прежде чем его ширина может быть правильно вычислена. Авторы следует помнить, что указание "0 *" не позволит визуальным пользовательским агентам рендеринг таблицы постепенно.
Этот атрибут переопределяется для любого столбца в группе столбцов, для которого ширина задается через элемент COL .
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
- выровнять , char , charoff , valign (сотовый выравнивание)
Элемент COLGROUP создает явную группу столбцов.Количество столбцы в группе столбцов могут быть указаны двумя взаимоисключающими способы:
- Атрибут span элемента (значение по умолчанию 1) указывает количество столбцов в группе.
- каждый Элемент COL в COLGROUP представляет один или несколько столбцов в группе.
Преимущество использования атрибута span заключается в том, что авторы может группировать информацию о ширине столбцов. Таким образом, если таблица содержит сорок столбцов, каждый из которых имеет ширину 20 пикселей, легче напишите:
чем:
<КОЛГРУППА>... Всего сорок элементов COL ... Когда необходимо выделить столбец (например, для информации о стиле, чтобы указать информацию о ширине и т. д.) внутри группы, авторы должны указать, что столбец с элементом COL . Таким образом, чтобы применить специальную информацию о стиле к последний столбец предыдущей таблицы выделим следующим образом:
<КОЛГРУППА>Атрибут ширины для Элемент COLGROUP наследуется всеми 40 столбцами.Первый COL элемент относится к первым 39 столбцам (не делая с ними ничего особенного), а элемент второй присваивает значение id сороковому столбцу, чтобы таблицы стилей могли обратитесь к нему.
Таблица в следующем примере содержит две группы столбцов. Первый группа столбцов содержит 10 столбцов, а вторая - 5 столбцов. По умолчанию ширина каждого столбца в первой группе столбцов составляет 50 пикселей. Ширина каждого столбец во второй группе столбцов будет минимально необходимым для этого столбец.
<ТАБЛИЦА><ГОЛОВА> ... Элемент
COLНачальный тег: требуется , Конечный тег: запрещено
Определения атрибутов
- пролет = номер [CN]
- Этот атрибут, значение которого должно быть целым числом> 0, определяет число столбцов, «натянутых» на элемент COL ; элемент COL разделяет свои атрибуты с все колонны, которые он охватывает.Значение по умолчанию для этого атрибута - 1 (т. Е. Элемент COL относится к одному столбцу). Если Для атрибута span установлено значение N> 1, текущий COL Элемент разделяет свои атрибуты со следующими N-1 столбцами.
- ширина = мультидлина [CN]
- Этот атрибут определяет ширину по умолчанию для каждого столбца, охватываемого текущий Элемент COL . Он имеет то же значение, что и . width для элемента COLGROUP и переопределяет его.
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
- выровнять , char , charoff , valign (сотовый выравнивание)
Элемент COL позволяет авторам группировать атрибут спецификации столбцов таблицы. COL делает , а не группу колонны вместе структурно - в этом роль Элемент COLGROUP . COL элементы пусты и служат только поддержка атрибутов. Они могут появляться внутри или за пределами явного столбца группа (т.е. элемент COLGROUP ).
Атрибут width для COL относится к ширине каждого столбец в диапазоне элемента.
Расчет количества столбцов в стол
Есть два способа определить количество столбцов в таблице (по порядку приоритета):
- Если Элемент ТАБЛИЦА содержит любые COLGROUP или COL элементы, пользовательские агенты должны вычислять количество столбцов, суммируя следующий:
- За каждые Элемент COL , примите значение его Атрибут span (значение по умолчанию 1).
- Для каждого элемента COLGROUP , содержащего хотя бы один COL элемент, игнорируйте span атрибут для Элемент COLGROUP . Для каждого элемента COL выполните расчет шаг 1.
- Для каждого пустого элемента COLGROUP возьмите значение его Атрибут span (значение по умолчанию 1).
- В противном случае, если элемент ТАБЛИЦА не содержит COLGROUP или элементов COL , пользовательские агенты должны основывать количество столбцы на том, что требуется строкам.Количество столбцов равно количество столбцов, необходимое для строки с наибольшим количеством столбцов, включая ячейки которые охватывают несколько столбцов. Для любой строки, в которой меньше этого числа столбцы, конец этой строки должен быть заполнен пустыми ячейками. «Конец» строка зависит от таблицы направленность.
Это ошибка, если таблица содержит COLGROUP или COL элементов и два вычисления не приводят к одинаковому количеству столбцы.
После того, как пользовательский агент подсчитал количество столбцов в таблице, он может сгруппировать их в группы столбцов.
Например, для каждой из следующих таблиц вычисление двух столбцов методы должны привести к трем столбцам. Первые три таблицы могут быть отображены постепенно.
<ТАБЛИЦА>... ... ряды ... <ТАБЛИЦА> <КОЛГРУППА> ... ... ряды ... <ТАБЛИЦА> <КОЛГРУППА> ... ... ряды ... <ТАБЛИЦА> Расчет ширины столбцов
Авторы могут указывать ширину столбцов тремя способами:
- Фиксированный
- Спецификация фиксированной ширины указывается в пикселях (например, ширина = "30"). Спецификация фиксированной ширины позволяет увеличивать рендеринг.
- В процентах
- Процентная спецификация (e.г., ширина = "20%") основан на процентном соотношении горизонтального пространства, доступного для таблицы (между текущими левым и правым полями, включая числа с плавающей запятой). Обратите внимание, что это пространство не зависит от самой таблицы, и, следовательно, процентные характеристики включить инкрементный рендеринг.
- Пропорциональный
- Пропорциональные характеристики (например, ширина = "3 *") см. части горизонтального пространства , необходимое для таблицы. Если ширине таблицы присваивается фиксированное значение через ширину атрибут элемента ТАБЛИЦА , пользовательские агенты могут отображать таблицу постепенно, даже с пропорциональными столбцами.
Однако, если таблица не имеет фиксированной ширины, пользовательские агенты должны получать все данные таблицы, прежде чем они смогут определить горизонтальное пространство, необходимое для Таблица. Только после этого можно выделить это пространство для пропорциональных столбцов.
Если автор не указывает информацию о ширине столбца, пользовательский агент может невозможно инкрементно форматировать таблицу, так как она должна ждать столбец данных, который нужно прибыть, чтобы выделить соответствующую ширину.
Если ширина столбца оказывается слишком узкой для содержимого определенного ячейка таблицы, пользовательские агенты могут выбрать перекомпоновку таблицы.
Таблица в этом примере содержит шесть столбцов. Первый не принадлежат к явной группе столбцов. Следующие три принадлежат первому явному группа столбцов, а последние два принадлежат второй явной группе столбцов. Этот таблица не может быть отформатирована постепенно, так как она содержит пропорциональный столбец спецификации ширины и без значения для width для элемента TABLE .
Как только (визуальный) пользовательский агент получил данные таблицы: доступные горизонтальное пространство будет распределено пользовательским агентом следующим образом: Сначала пользователь Агент выделит 30 пикселей для первого и второго столбцов.Тогда минимальное пространство необходимые для третьего столбца будут зарезервированы. Оставшееся горизонтальное пространство будет разделен на шесть равных частей (поскольку 2 * + 1 * + 3 * = 6 частей). Четвертый столбец (2 *) получит две из этих частей, пятый столбец (1 *) получит получите один, а столбец шесть (3 *) получит три.
<ТАБЛИЦА> <КОЛГРУППА><КОЛГРУППА> <ГОЛОВА> ... ... ряды ... Мы установили значение атрибута align в третьем столбце группа в «центр». Все ячейки в каждом столбце этой группы унаследуют это значение, но может переопределить его. Фактически, последний COL делает именно это, указывая что каждая ячейка в столбце, которым она управляет, будет выровнена по ":" персонаж.
В следующей таблице спецификации ширины столбца позволяют агенту пользователя для постепенного форматирования таблицы:
<ТАБЛИЦА><КОЛГРУППА> <ГОЛОВА> ... ... ряды ... Первые десять столбцов будут шириной 15 пикселей каждый. Последние два столбца будут каждый получает половину из оставшихся 50 пикселей. Обратите внимание, что COL элементы появляются только так, чтобы id значение может быть указано для последних двух столбцы.
Примечание. Хотя Атрибут width в элементе TABLE не является устаревшим, авторам рекомендуется использовать таблицы стилей для определения ширины таблицы.
11.2.5 Строки таблицы: элемент
TRНачальный тег: требуется , Конечный тег: опционально
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
- bgcolor (цвет фона)
- выровнять , char , charoff , valign (сотовый выравнивание)
Элементы TR действуют как контейнер для ряда ячеек таблицы.Конец тег может быть опущен.
Этот образец таблицы содержит три строки, каждая из которых начинается с TR элемент:
Чашки кофе, выпитые каждым сенатором ... Строка заголовка ... ...Первая строка данных ... ... Вторая строка данных ... ... остальная часть таблицы ... 11.2.6 Ячейки таблицы: элементы
TH и TDTH | TD ) - O (% flow;) * - ячейка заголовка таблицы, ячейка данных таблицы -> abbr % Текст; # ПРЕДПОЛАГАЕТСЯ - сокращение для ячейки заголовка - axis CDATA # ПРЕДПОЛАГАЕТСЯ - список связанных заголовков, разделенных запятыми - заголовков IDREFS # ПРЕДПОЛАГАЕТСЯ - список идентификаторов для ячеек заголовков - объем % объем; # ПРЕДПОЛАГАЕТСЯ - область, охватываемая ячейками заголовка - rowspan NUMBER 1 - количество строк в ячейке - colspan НОМЕР 1 - количество столбцов, охватываемых ячейкой - % cellhalign; - выравнивание по горизонтали в ячейках - % cellvalign; - выравнивание по вертикали в ячейках - >Начальный тег: требуется , Конечный тег: опционально
Определения атрибутов
- заголовков = idrefs [CS]
- Этот атрибут определяет список ячеек заголовка, которые предоставляют заголовок. информация для текущей ячейки данных.Значение этого атрибута - список имен ячеек, разделенных пробелами; эти ячейки должны быть названы, установив их id атрибут. Авторы обычно используют атрибут заголовков , чтобы помочь невизуальным пользовательские агенты отображают информацию заголовка о ячейках данных (например, заголовок информация произносится до данных ячейки), но атрибут также может быть используется вместе с таблицами стилей. См. Также прицел атрибут.
- объем = имя-области [CI]
- Этот атрибут определяет набор ячеек данных, для которых текущий заголовок ячейка предоставляет информацию заголовка.Этот атрибут можно использовать вместо . заголовки , особенно для простых таблиц. Если указано, этот атрибут должен иметь одно из следующих значений:
- строка: Текущая ячейка предоставляет информацию заголовка для остальная часть строки, которая его содержит (см. также раздел о направленности таблицы).
- col: Текущая ячейка предоставляет информацию заголовка для остальная часть столбца, который его содержит.
- rowgroup: Ячейка заголовка предоставляет информацию заголовка для остальная часть группы строк, которая его содержит.
- colgroup: Ячейка заголовка предоставляет информацию заголовка для остальная часть группы столбцов, которая его содержит.
- abbr = текст [CS]
- Этот атрибут следует использовать для предоставления сокращенной формы ячейки контент и может отображаться пользовательскими агентами, когда это необходимо, вместо содержимое ячейки. Сокращенные имена должны быть короткими, поскольку пользовательские агенты могут отображать их неоднократно. Например, синтезаторы речи могут отображать сокращенный заголовки, относящиеся к конкретной ячейке, перед отображением этой ячейки содержание.
- ось = cdata [CI]
- Этот атрибут может использоваться для помещения ячейки в концептуальные категории, которые можно рассматривать как образующие оси в n-мерном пространстве. Пользовательские агенты могут давать доступ пользователей к этим категориям (например, пользователь может запросить у пользовательского агента все ячейки, принадлежащие определенным категориям, пользовательский агент может представить таблицу в виде оглавления и т. д.). Пожалуйста, обратитесь к разделу о категоризации ячеек для получения дополнительной информации.Значение этого атрибута представляет собой список названий категорий, разделенных запятыми.
- ряд = число [CN]
- Этот атрибут определяет количество строк, охватываемых текущей ячейкой. Значение этого атрибута по умолчанию - единица («1»). Нулевое значение («0») означает что ячейка охватывает все строки от текущей до последней строки таблицы раздел ( THEAD , TBODY или TFOOT ), в котором ячейка определенный.
- colspan = число [CN]
- Этот атрибут определяет количество столбцов, охватываемых текущей ячейкой.Значение этого атрибута по умолчанию - единица («1»). Нулевое значение («0») означает что ячейка охватывает все столбцы от текущего до последнего столбца группа столбцов ( COLGROUP ), в которой определена ячейка.
- nowrap [CI]
- Не рекомендуется. Когда присутствует, этот логический атрибут сообщает визуальным пользовательским агентам отключить автоматическое перенос текста для этой ячейки. Таблицы стилей следует использовать вместо этого атрибута для достижения эффекта обтекания. Примечание. при неосторожном использовании этот атрибут может привести к чрезмерному широкие ячейки.
- ширина = длина [CN]
- Не рекомендуется. Это атрибут предоставляет пользовательским агентам рекомендованную ширину ячеек.
- высота = длина [CN]
- Не рекомендуется. Это Атрибут предоставляет пользовательским агентам рекомендуемую высоту ячеек.
Атрибуты, определенные в другом месте
- id , класс (идентификаторы на уровне документа)
- lang (язык информация), дирек (текст направление)
- title (заголовок элемента)
- стиль (рядный информация о стиле)
- onclick , ondblclick , onmousedown , onmouseup , onmouseover , onmousemove , onmouseout , onkeypress , onkeydown , onkeyup (внутренние события)
- bgcolor (цвет фона)
- выровнять , char , charoff , valign (сотовый выравнивание)
Ячейки таблицы могут содержать два типа информации: заголовок информация и данные.Этот различие позволяет пользовательским агентам четко отображать заголовок и ячейки данных, даже при отсутствии таблиц стилей. Например, визуальные пользовательские агенты могут выделите текст ячейки заголовка жирным шрифтом. Синтезаторы речи могут воспроизводить информация заголовка с отчетливой интонацией голоса.
Элемент TH определяет ячейку, содержащую информацию заголовка. Пользователь агентам доступны две части информации заголовка: содержимое TH элемент и значение abbr атрибут.Пользовательские агенты должны отображать либо содержимое ячейки или значение атрибута abbr . Для визуальных медиа, последний может быть уместным, когда недостаточно места для визуализации полное содержимое ячейки. Для невизуальных медиа abbr может использоваться как сокращение для заголовков таблиц, когда они отображаются вместе с содержимым ячеек, к которым они применяются.
заголовки и , область действия Атрибуты также позволяют авторам помогать невизуальным агенты пользователя обрабатывают информацию заголовка.Пожалуйста, обратитесь к разделу о маркировке ячеек для невизуальных пользовательских агентов для информация и примеры.
Элемент TD определяет ячейку, содержащую данные.
Ячейки могут быть пустыми (т. Е. Не содержать данных).
Например, следующая таблица содержит четыре столбца данных, каждый заголовок по описанию столбца.
Чашки кофе, выпитые каждым сенатором Имя Чашки Тип кофе Сахар? Т. Секстон 10 Эспрессо Нет Дж. Диннен 5 Без кофеина Да Пользовательский агент, выполняющий рендеринг на tty-устройстве, может отображать это следующим образом:
Название чашки Тип кофе с сахаром? Т.Секстон 10 Эспрессо Нет J. Dinnen 5 без кофеина ДаЯчейки, занимающие несколько строк или колонны
Ячейки могут занимать несколько строк или столбцов. Количество строк или столбцов , охватываемый ячейкой, устанавливается строками, и colspan для элементов TH и TD .
В этом определении таблицы мы указываем, что ячейка в четвертой строке, втором столбце должен охватывать в общей сложности три столбца, включая текущий столбец.
<ТАБЛИЦА border = "1">Чашки кофе, выпитые каждым сенатором Имя Чашки Тип кофе Сахар? Т. Sexton 10 Espresso Нет Дж. Диннен 5 Decaf Да А. Сория Недоступно Эта таблица может быть отображена на устройстве tty визуальным пользовательским агентом как следует:
Чашек кофе, выпитых каждым сенатором -------------------------------------- | Название | Чашки | Тип кофе | Сахар? | -------------------------------------- | Т.Секстон | 10 | Эспрессо | Нет | -------------------------------------- | Дж. Диннен | 5 | Без кофеина | Да | -------------------------------------- | А. Сория | Нет в наличии | --------------------------------------В следующем примере показано (с помощью границ таблицы), как ячейка определения, охватывающие более одной строки или столбца, влияют на определение более поздние клетки. Рассмотрим следующее определение таблицы:
<ТАБЛИЦА border = "1">1 2 3 4 6 7 8 9 Поскольку ячейка "2" охватывает первую и вторую строки, определение второй row учтет это.Таким образом, второй TD во втором ряду фактически определяет третья ячейка строки. Визуально таблица может отображаться на tty-устройстве. как:
------------- | 1 | 2 | 3 | ---- | | ---- | 4 | | 6 | ---- | --- | ---- | 7 | 8 | 9 | -------------, в то время как графический пользовательский агент может отображать это как:
Обратите внимание, что если опущена определяющая ячейка «6» TD , дополнительная пустая ячейка был бы добавлен пользовательским агентом для завершения строки.
Аналогично, в следующем определении таблицы:
<ТАБЛИЦА border = "1">1 2 3 4 6 7 8 9 ячейка "4" охватывает два столбца, поэтому второй TD в строке фактически определяет третья ячейка («6»):
------------- | 1 | 2 | 3 | -------- | ---- | 4 | 6 | -------- | ---- | 7 | 8 | 9 | -------------Графический пользовательский агент может отобразить это как:
Определение перекрывающихся ячеек является ошибкой.Пользовательские агенты могут различаться по тому, как они обработать эту ошибку (например, рендеринг может отличаться).
Следующий недопустимый пример показывает, как можно создать перекрывающиеся клетки. В этой таблице ячейка «5» занимает две строки, а ячейка «7» - два столбца, поэтому в ячейке между «7» и «9» есть перекрытие:
<ТАБЛИЦА border = "1">1 2 3 4 5 6 7 9 Примечание. В следующих разделах описывается таблица HTML. атрибуты, относящиеся к визуальному форматированию. Когда эта спецификация была впервые опубликованный в 1997 году, [CSS1] не предлагал механизмы для управления всеми аспектами визуальное форматирование таблиц. С тех пор [CSS2] добавил свойства для визуального форматирования таблиц.
HTML 4 включает механизмы для управления:
11.3.1 Границы и правила
Следующие атрибуты влияют на внешний фрейм таблицы и внутренний правила.
Определения атрибутов
- рамка = void | above | below | hsides | lhs | rhs | vsides | box | border [CI]
- Этот атрибут указывает, какие стороны рамки вокруг стола будут быть видимым. Возможные значения:
- пустота: Без сторон. Это значение по умолчанию.
- вверху: Только верхняя сторона.
- внизу: Только нижняя сторона.
- hsides: Только верхняя и нижняя стороны.
- vsides: Только правая и левая стороны.
- lhs: Только левая сторона.
- справа: Только правая сторона.
- коробка: Все четыре стороны.
- граница: Все четыре стороны.
- правил = нет | группы | строки | столбцы | все [CI]
- Этот атрибут указывает, какие правила будут отображаться между ячейками внутри Таблица. Отображение правил зависит от пользовательского агента.Возможные значения:
- нет: Нет правил. Это значение по умолчанию.
- групп: правил будут отображаться между группами строк (см. THEAD , TFOOT и TBODY ) и группы столбцов (см. Только COLGROUP и COL ).
- строк: Правила будут отображаться только между строками.
- столбцов: Правила будут отображаться только между столбцами.
- все: Правила появятся между всеми строками и столбцами.
- граница = пикселя [CN]
- Этот атрибут определяет ширину (только в пикселях) рамки вокруг таблицу (дополнительную информацию об этом атрибуте см. в примечании ниже).
Чтобы помочь различать ячейки таблицы, мы можем установить border элемента ТАБЛИЦА . Рассмотрим предыдущий пример:
<ТАБЛИЦА border = "1" summary = "В этой таблице показано количество чашек кофе, потребляемого каждым сенатором, тип кофе (без кофеина или обычный), а также принимать с сахаром.">Чашки кофе, выпитые каждым сенатором Имя Чашки Тип кофе Сахар? Т. Секстон 10 Эспрессо Нет Дж. Диннен 5 Без кофеина Да В следующем примере пользовательский агент должен отображать границы в пять пикселей. толстые слева и справа от таблицы, с нарисованными правилами между каждым столбцом.
<ТАБЛИЦА border = "5" frame = "vsides" rules = "cols">1 2 3 4 5 6 7 8 9 Следующие настройки должны соблюдаться пользовательскими агентами для обратного совместимость.
- Установка границы = "0" подразумевает фрейм = "void" и, если только в противном случае rules = "none".
- Прочие значения граница подразумевает frame = "граница" и, если не указано иное, rules = "все".
- Значение "border" в начальном теге элемента ТАБЛИЦА должно быть интерпретируется как значение атрибута кадра . Это означает rules = "все" и некоторое значение по умолчанию (ненулевое) для граница атрибута.
Например, следующие определения эквивалентны:
<ТАБЛИЦА border = "2"> <ТАБЛИЦА border = "2" frame = "border" rules = "all">как следующие:
<Граница ТАБЛИЦЫ>
Примечание. Атрибут границы также определяет поведение границы для элементов OBJECT и IMG , но принимает разные значения для этих элементов.
11.3.2 Горизонтальное и вертикальное выравнивание
Для разных элементов таблицы могут быть установлены следующие атрибуты (см. Их определения).
выровнять (по левому краю | по центру | по правому краю | по ширине | символу) # ПРЕДПОЛАГАЕТСЯ char % Символ; # ПРЕДПОЛАГАЕТСЯ - символ выравнивания, e.г. char = ':' - чарофф % Длина; # ПРЕДПОЛАГАЕТСЯ - смещение для символа выравнивания - " > valign (верхняя | средняя | нижняя | базовая линия) # ПРЕДПОЛАГАЕТСЯ" >Определения атрибутов
- выровнять = слева | по центру | справа | по ширине | char [CI]
- Этот атрибут определяет выравнивание данных и обоснование текст в ячейке.Возможные значения:
- слева: Выровнять данные по левому краю / Выровнять текст по левому краю. Это по умолчанию значение для табличных данных.
- центр: центр данных / выравнивание текста по центру. Это по умолчанию значение для заголовков таблиц.
- справа: Выровнять данные по правому краю / Выровнять текст по правому краю.
- по ширине: Двойное выравнивание текста.
- char: Выровнять текст вокруг определенного символа. Если пользовательский агент не поддерживает выравнивание символов, поведение при наличии этого значения неопределенные.
- valign = верхний | средний | нижний | базовый [CI]
- Этот атрибут определяет вертикальное положение данных в ячейке. Возможные значения:
- вверху: Данные ячейки находятся на одном уровне с верхом ячейки.
- посередине: Данные ячейки центрируются по вертикали внутри ячейки. Этот значение по умолчанию.
- внизу: Данные ячейки находятся на одном уровне с нижней частью ячейки.
- базовый уровень: Все ячейки в той же строке, что и ячейка, у которой Атрибут valign имеет это значение, должны иметь свои текстовые данные расположен так, чтобы первая текстовая строка находилась на базовой линии, общей для всех ячеек в ряду.Это ограничение не применяется к последующим текстовым строкам в этих клетки.
- символ = символ [CN]
- Этот атрибут определяет один символ в текстовом фрагменте, который будет действовать. как ось для выравнивания. Значение по умолчанию для этого атрибута - десятичное. точечный символ для текущего языка, установленного в lang атрибут (например, точка (".") на английском языке и запятая (",") на французском языке). Пользовательские агенты не обязаны поддерживать этот атрибут.
- чугун = длина [CN]
- Если присутствует, этот атрибут указывает смещение к первому вхождению. символа выравнивания в каждой строке. Если в строке нет символ выравнивания, его следует сдвинуть по горизонтали, чтобы закончить выравнивание позиция.
Когда charoff используется для установки смещения символа выравнивания, направление смещения определяется текущим направлением текста (задается директором атрибут).В текстах с письмом слева направо (по умолчанию) смещение слева направо. поле. В текстах с письмом справа налево смещение выполняется от правого поля. Пользовательские агенты не требуются для поддержки этого атрибута.
Таблица в этом примере выравнивает строку значений валюты по десятичной дроби. точка. Мы устанавливаем символ выравнивания на "." явно.
<ТАБЛИЦА border = "1"> <КОЛГРУППА><ГОЛОВА> Овощи Стоимость за килограмм Салат $ 1 Серебряная морковь 10 долларов.50 Золотая репа 100,30 $ Отформатированная таблица может выглядеть следующим образом:
------------------------------ | Овощи | Стоимость за килограмм | | -------------- | ------------- | | Салат | $ 1 | | -------------- | ------------- | | Серебряная морковь | 10,50 $ | | -------------- | ------------- | | Золотая репа | $ 100,30 | ------------------------------Когда содержимое ячейки содержит более одного экземпляра выравнивания символ, заданный char и переносом содержимого, поведение пользовательского агента неопределенный.Поэтому авторам следует внимательно использовать char .
Примечание. Визуальные пользовательские агенты обычно отображают элементов TH по вертикали и горизонтали по центру ячейки и жирным шрифтом масса.
Наследование совмещения характеристики
Выравнивание содержимого ячеек может быть задано для каждой ячейки, или унаследован от включающих элементов, таких как строка, столбец или таблица сам.
Порядок приоритета (от наивысшего к низшему) для атрибутов выровняйте , char и charoff имеет следующий вид:
- Атрибут выравнивания, установленный для элемента в данных ячейки (например,г., П ).
- Атрибут выравнивания, установленный для ячейки ( TH и TD ).
- Атрибут выравнивания, установленный для элемента группировки столбцов ( COL, и КОЛГРУППА ). Когда ячейка является частью диапазона из нескольких столбцов, выравнивание свойство наследуется от определения ячейки в начале охватывать.
- Атрибут выравнивания, установленный для строки или элемента группировки строк ( TR , THEAD , TFOOT и TBODY ).Когда ячейка является частью многострочного диапазона, свойство выравнивания наследуется от определения ячейки в начале пролета.
- Атрибут выравнивания, установленный в таблице ( ТАБЛИЦА ).
- Значение выравнивания по умолчанию.
Порядок приоритета (от наивысшего к низшему) для атрибута valign (а также другие унаследованные атрибуты lang , dir и style ) выглядит следующим образом:
- Атрибут, установленный для элемента в данных ячейки (например,г., П ).
- Атрибут, установленный в ячейке ( TH и TD ).
- Атрибут, установленный для строки или элемента группировки строк ( TR , THEAD , TFOOT и TBODY ). Когда ячейка является частью многострочного диапазона, значение атрибута наследуется из определения ячейки в начале пролет.
- Атрибут, установленный для элемента группировки столбцов ( COL, и КОЛГРУППА ). Когда ячейка является частью диапазона, состоящего из нескольких столбцов, атрибут значение наследуется из определения ячейки в начале диапазона.
- Атрибут, установленный в таблице ( ТАБЛИЦА ).
- Значение атрибута по умолчанию.
Кроме того, при рендеринге ячеек горизонтальное выравнивание определяется столбцы предпочтительнее строк, в то время как для вертикального выравнивания строки задаются предпочтение столбцам.
Выравнивание ячеек по умолчанию зависит от пользовательского агента. Однако пользователь агенты должны заменить атрибут по умолчанию для текущей направленности (т.е. не просто «слева» во всех случаях).
Пользовательские агенты, которые не поддерживают значение «оправдать» Атрибут align должен использовать значение унаследованной направленности на своем месте.
Примечание. Обратите внимание, что ячейка может унаследовать атрибут не из его родителя, а из первой ячейки в диапазоне. Это исключение из общих правил наследования атрибутов.
11.3.3 Ячейка маржа
Определения атрибутов
- расстояние между ячейками = длина [CN]
- Этот атрибут указывает, сколько места пользовательскому агенту следует оставлять между в левой части таблицы и в левой части крайнего левого столбца верх таблицы и верхняя часть самого верхнего ряда, и так далее для правой и внизу таблицы.Атрибут также указывает количество места для оставить между ячейками.
- обивка ячейки = длина [CN]
- Этот атрибут определяет количество пространства между границей ячейки. и его содержимое. Если значение этого атрибута - длина в пикселях, все четыре поля должны быть на таком расстоянии от содержимого. Если значение атрибут - длина в процентах, верхнее и нижнее поля должны быть одинаковыми отделяется от контента на основе процента от доступной вертикали пробел, а левое и правое поля должны быть одинаково отделены от содержание в процентах от доступного горизонтального пространства.
Эти два атрибута управляют интервалом между ячейками и внутри них. Следующие иллюстрация объясняет, как они соотносятся:
В следующем примере атрибут cellspacing указывает, что ячейки должны быть отделены друг от друга и от рамки таблицы на двадцать пикселей. Атрибут cellpadding указывает, что верхнее поле ячейка и нижнее поле ячейки будут отделены от содержимое на 10% доступного вертикального пространства (всего 20%).Точно так же левое поле ячейки и правое поле ячейки будут каждый должен быть отделен от содержимого ячейки 10% доступной горизонтальной пространство (всего 20%).
<ТАБЛИЦА cellspacing = "20" cellpadding = "20%">Data1 Data2 Data3 Если таблица или данный столбец имеет фиксированную ширину, ячейка и ячейка может потребовать больше места, чем назначенный. Пользовательские агенты могут отдавать этим атрибутам приоритет над . Ширина атрибута при возникновении конфликта, но не требуется.
11.4.1 Привязка заголовка информация с ячейками данных
Невизуальные пользовательские агенты, такие как синтезаторы речи и устройства на основе Брайля. может использовать следующие атрибуты элементов TD и TH для более точного отображения ячеек таблицы интуитивно:
- Для данной ячейки данных атрибут заголовков перечисляет, какие ячейки предоставить соответствующую информацию заголовка. Для этого каждая ячейка заголовка должна быть названным с использованием атрибута id .Обратите внимание, что не всегда можно сделать чистое разделение ячеек на заголовки или данные. Вы должны использовать элемент TD для таких ячеек вместе с id или охват атрибутов в зависимости от ситуации.
- Для данной ячейки заголовка, Атрибут scope сообщает пользовательскому агенту о ячейках данных, для которых это заголовок предоставляет информацию. Авторы могут использовать этот атрибут вместо из заголовки , по которым удобнее; два атрибута выполнять ту же функцию.Обычно требуется атрибут заголовков когда заголовки размещаются в неправильных позициях по отношению к данным, которые они применить к.
- Атрибут abbr определяет сокращенный заголовок для ячейки заголовка, чтобы пользовательские агенты могли отображать информацию заголовка больше быстро.
В следующем примере мы назначаем информацию заголовка ячейкам, задавая заголовки атрибут. Каждая ячейка в одном столбце относится к одному и тому же ячейка заголовка (через атрибут id ).
<ТАБЛИЦА border = "1" summary = "В этой таблице показано количество чашек кофе, потребляемого каждым сенатором, тип кофе (без кофеина или обычный), а также с сахаром. ">Чашки кофе, выпитые каждым сенатором Имя Чашки Тип кофе Сахар? Т.Секстон 10 Эспрессо Нет Дж. Диннен 5 Без кофеина Да Синтезатор речи может отобразить эту таблицу следующим образом:
Подпись под фото: Чашки кофе, выпитые каждым сенатором Резюме: в этой таблице показано количество чашек. кофе, потребляемого каждым сенатором, тип кофе (без кофеина или обычный), а также принимать с сахаром.Имя: Т. Секстон, Чашек: 10, Тип: Эспрессо, Сахар: Нет Имя: Дж. Диннен, Чашек: 5, Тип: Без кофеина, Сахар: ДаОбратите внимание на то, что заголовок «Тип кофе» сокращен до «Тип» с использованием аббревиатуры атрибут.
Вот тот же пример с заменой атрибута области на заголовки атрибут. Обратите внимание на значение «col» для области атрибут, означающий «все ячейки в текущем столбце»:
<ТАБЛИЦА border = "1" summary = "В этой таблице показано количество чашек кофе, потребляемого каждым сенатором, тип кофе (без кофеина или обычный), а также принимать с сахаром.">Чашки кофе, выпитые каждым сенатором Имя Кубки Тип кофе Сахар? Т. Секстон 10 Эспрессо Нет Дж. Диннен 5 Без кофеина Да Вот несколько более сложный пример, иллюстрирующий другие значения для область действия атрибут:
<ТАБЛИЦА border = "1" cellpadding = "5" cellspacing = "2" summary = "Курсы истории, предлагаемые в сообществе Баня с указанием названия курса, наставника, резюме, код и комиссия ">Общественные курсы - баня, осень 1997 г. Название курса Репетитор курса Сводка Код Комиссия После гражданской войны Доктор.Джон Роутон Курс исследует неспокойные годы в Англии. после 1646. 6 еженедельных встреч, начиная с понедельника 13 числа Октябрь. h37 & фунт; 32 Знакомство с англосаксонской Англией Марк Коттл Однодневный курс, знакомящий с ранним средневековьем период реконструкции англосаксов и их общество. Суббота, 18 октября. h38 & фунт; 18 Слава Греции Валери Лоренц Родина демократии, философии, центр театра, дом аргумент. Римляне могли это сделать, но греки сделали это первый. Субботняя дневная школа, 25 октября 1997 г. h40 & фунт; 18 Графический пользовательский агент может отобразить это как:
Обратите внимание на использование атрибута области со значением «строка».Хотя первая ячейка в каждой строке содержит данные, а не информацию заголовка, область Атрибут заставляет ячейку данных вести себя как ячейка заголовка строки. Это позволяет говорить синтезаторы, чтобы предоставить соответствующее название курса по запросу или указать его непосредственно перед содержимым каждой ячейки.
11.4.2 Категоризация ячейки
Пользователи, просматривающие таблицу с речевым агентом пользователя, могут захотеть услышать объяснение содержимого ячейки в дополнение к самому содержимому. Один способ, которым пользователь может дать объяснение, - это произнести связанный заголовок информацию перед озвучиванием содержимого ячейки данных (см. раздел о связывании информации заголовка с ячейками данных).
Пользователям также может потребоваться информация о более чем одной ячейке, и в этом случае информация заголовка предоставляется на уровне ячейки (к заголовки , scope и abbr ) могут не обеспечивать адекватный контекст. Рассмотрим следующую таблицу, в которой классифицируются расходы на питание, гостиницы и транспорт в два пункта (Сан-Хосе и Сиэтл) в течение нескольких дней:
Пользователи могут захотеть извлечь информацию из таблицы в виде запросов:
- "Сколько я потратил на питание?"
- "Сколько я потратил на обед 25 августа?"
- "Сколько я потратил на все расходы в Сан-Хосе?"
Каждый запрос включает вычисление пользовательским агентом, которое может включать ноль или больше ячеек.Для того, чтобы определить, например, стоимость питания на 25 Август, пользовательский агент должен знать, какие ячейки таблицы относятся к "Питание" (все их) и которые относятся к "Датам" (в частности, 25 августа), и найдите пересечение двух множеств.
Чтобы удовлетворить этот тип запроса, табличная модель HTML 4 позволяет авторам размещать заголовки ячеек и данные по категориям. Например, для путешествия в таблице расходов автор мог сгруппировать ячейки заголовка «Сан-Хосе» и «Сиэтл». в категорию «Расположение», заголовки «Питание», «Гостиницы» и «Транспорт» в категорию «Расходы», а четыре дня - в категорию «Дата».В Тогда предыдущие три вопроса будут иметь следующее значение:
- "Сколько я потратил на питание?" означает "Каковы все ячейки данных в категорию «Расходы = Питание»?
- "Сколько я потратил на обед 25 августа?" означает "Какие данные ячеек в категориях "Расходы = Питание" и "Дата = 25 августа 1997 г."?
- "Сколько я потратил на все расходы в Сан-Хосе?" означает "Каковы все ячейки данных в "Expenses = Meals, Hotels, Transport" and "Location = San Jose" категории?
Авторы классифицируют заголовок или ячейку данных, устанавливая ось атрибут ячейки.Например, в таблице командировочных расходов ячейка содержащий информацию "Сан-Хосе" может быть помещен в "Местоположение" следующая категория:
Сан-Хосе Любая ячейка, содержащая информацию, относящуюся к "Сан-Хосе", должна ссылаться на это ячейка заголовка через заголовков или атрибута области . Таким образом, еда расходы за 25 августа 1997 г. необходимо разметить до id атрибут (значение которого здесь "a6") ячейки заголовка "Сан-Хосе":
37.74 каждый Атрибут заголовков предоставляет список из идентификаторов ссылок. Таким образом, авторы могут классифицировать данную ячейку любым количеством способов (или по любому количеству "заголовки", отсюда и название).
Ниже мы помечаем таблицу командировочных расходов информацией о категории:
<ТАБЛИЦА border = "1" summary = "В этой таблице приведены командировочные расходы. во время августовских поездок в Сан-Хосе и Сиэтл "> <ЗАГОЛОВОК> Отчет о командировочных расходахПитание Гостиницы Транспорт промежуточные итоги Сан-Хосе 25 августа 1997 г. 37.74 112,00 45,00 26 августа 1997 г. 27,28 112,00 45,00 промежуточные итоги 65,02 224,00 90.00 379,02 Сиэтл 27 августа 1997 г. 96,25 109,00 36,00 28 августа 1997 г. 35.00 109,00 36,00 промежуточные итоги 131,25 218,00 72,00 421,25 Итоги 196,27 442,00 162,00 800,27 Обратите внимание, что такая разметка таблицы также позволяет пользовательским агентам избегать вводить пользователя в заблуждение нежелательной информацией.Например, если речь синтезатор должен был озвучить все цифры в столбце "Питание" этого в ответ на запрос «Сколько я тратил на питание?» пользователь мог не смогут отличить дневные расходы от промежуточных или общих итогов. По тщательно классифицируя данные ячеек, авторы позволяют пользовательским агентам делать важные семантические различия при рендеринге.
Конечно, нет ограничений на то, как авторы могут категоризировать информацию в Таблица. Например, в таблице командировочных расходов мы могли бы добавить дополнительные категории «промежуточные итоги» и «итоги».
Эта спецификация не требует, чтобы пользовательские агенты обрабатывали информацию. предоставляется атрибутом оси , а также не дает никаких рекомендаций относительно как пользовательские агенты могут представлять ось информация для пользователей или как пользователи могут запрашивать пользовательский агент об этой информации.
Однако пользовательские агенты, особенно речь синтезаторы, может захотеть вынести за скобки информацию, общую для нескольких ячейки, которые являются результатом запроса. Например, если пользователь спрашивает "Что сделал Я трачу на обед в Сан-Хосе? ", Пользовательский агент сначала определит ячейки под вопросом (25 августа 1997: 37.74, 26-Aug-1997: 27.28), затем визуализируйте это Информация. Пользовательский агент, говорящий эту информацию, может прочитать ее:
Расположение: Сан-Хосе. Дата: 25 августа 1997 г. Расходы, питание: 37,74 Расположение: Сан-Хосе. Дата: 26 августа 1997 г. Расходы, питание: 27.28или, более компактно:
Сан-Хосе, 25 августа 1997 г., питание: 37,74 Сан-Хосе, 26 августа 1997 г., питание: 27,28Еще более экономичный рендеринг учитывал бы общую информацию и переупорядочить:
Сан-Хосе, Питание, 25 августа 1997 г .: 37.74 26 августа 1997 г .: 27,28Пользовательские агенты, поддерживающие этот тип рендеринга, должны разрешать пользовательским агентам означает настраивать рендеринг (например, с помощью таблиц стилей).
11.4.3 Алгоритм поиска информация о заголовке
При отсутствии информации заголовка из области или атрибут заголовков , пользовательские агенты могут создавать информацию заголовка по следующему алгоритму. Цель алгоритма - найти упорядоченный список заголовков.(В последующем описании алгоритма предполагается, что направленность таблицы равна слева направо.)
- Сначала найдите слева от позиции ячейки, чтобы найти ячейки заголовка строки. Затем поиск вверх, чтобы найти ячейки заголовка столбца. Поиск в заданном направлении останавливается при достижении края таблицы или при обнаружении ячейки данных после ячейка заголовка.
- Заголовки строк вставляются в список в том порядке, в котором они появляются в Таблица. В таблицах с письмом слева направо заголовки вставляются слева направо.
- Заголовки столбцов вставляются после заголовков строк в том порядке, в котором они появляются. таблица сверху вниз.
- Если ячейка заголовка имеет заголовков Установлен атрибутов, затем заголовки на которые ссылается этот атрибут, вставляются в список, и поиск останавливается для текущего направления.
- Ячейки TD , которые задают атрибут оси , также обрабатываются как заголовочные ячейки.
В этом примере показаны сгруппированные строки и столбцы.Пример адаптирован из "Разработка международного программного обеспечения" Надин Кано.
В "ascii art" следующая таблица:
<ТАБЛИЦА border = "2" frame = "hsides" rules = "groups" summary = "Поддержка кодовой страницы в разных версиях MS Windows. ">ПОДДЕРЖКА КОДОВОЙ СТРАНИЦЫ В MICROSOFT WINDOWS Кодовая страница
IDИмя ACP OEMCP Windows
NT 3.1Windows
NT 3.51Windows
951200 Unicode (BMP по ISO / IEC-10646) X X * 1250 Windows 3.1 Восточноевропейская X X X X 1251 Windows 3.1 Кириллица X X X X 1252 Windows 3.1 US (ANSI) X X X X 1253 Windows 3.1 греческий X X X X 1254 Windows 3.1 турецкий X X X X 1255 Иврит X X 1256 Арабский X X 1257 Baltic X X 1361 корейский (Johab) X ** X 437 MS-DOS США X X X X 708 арабский (ASMO 708) X X 709 арабский (ASMO 449+, BCON V4) X X 710 арабский (прозрачный арабский) X X 720 арабский (прозрачный ASMO) X X будет отображаться примерно так:
ПОДДЕРЖКА КОДОВОЙ СТРАНИЦЫ В MICROSOFT WINDOWS ================================================== ============================= Кодовая страница | Имя | ACP OEMCP | Windows Windows Windows ID | | | NT 3.1 NT 3.51 95 -------------------------------------------------- ----------------------------- 1200 | Юникод (BMP по ISO 10646) | | Х Х * 1250 | Windows 3.1 Восточноевропейская | X | Х Х Х 1251 | Windows 3.1 Кириллица | X | Х Х Х 1252 | Windows 3.1 US (ANSI) | X | Х Х Х 1253 | Windows 3.1 Греческая | X | Х Х Х 1254 | Окна 3.1 турецкий | X | Х Х Х 1255 | Иврит | X | Икс 1256 | Арабский | X | Икс 1257 | Балтийский | X | Икс 1361 | Корейский (Джохаб) | X | ** ИКС -------------------------------------------------- ----------------------------- 437 | MS-DOS Соединенные Штаты | X | Х Х Х 708 | Арабский (ASMO 708) | X | Икс 709 | Арабский (ASMO 449+, BCON V4) | X | Икс 710 | Арабский (прозрачный арабский) | X | Икс 720 | Арабский (прозрачный ASMO) | X | Икс ================================================== =============================Графический пользовательский агент может отобразить это как:
В этом примере показано, как COLGROUP можно использовать для группировки столбцов. и установите выравнивание столбцов по умолчанию.Аналогично TBODY - это используется для группировки строк. Кадр и атрибуты правил сообщают пользовательскому агенту какие границы и правила отображать.
3 способа отображения двух разделов рядом (float, flexbox, CSS grid)
Вот 3 способа использования CSS для размещения элементов HTML div рядом.
( Щелкните, чтобы перейти к каждому разделу)
Метод с плавающей запятой
В методе с плавающей запятой мы будем использовать следующую разметку HTML:
Столбец с плавающей запятой 1Колонка с плавающей запятой 2Модель
.float-container
- это просто родительский элемент, который содержит оба элемента.float-child
.Чтобы расположить блоки рядом, мы будем использовать следующие правила CSS:
. Плавучий контейнер { граница: 3px solid #fff; отступ: 20 пикселей; } .float-child { ширина: 50%; плыть налево; отступ: 20 пикселей; граница: 2 пикселя сплошной красный; }
Полученный код будет выглядеть так:
Я добавил границы и отступы к div, чтобы вам было легче видеть, что происходит.Более толстая сплошная белая рамка снаружи - это div
.float-container
с отступом 20 пикселей.Тогда каждый элемент
.float-child
имеет более тонкую красную границу и несколько дополнительных отступов. Тогда фактические цветовые блоки являются дочерними элементами элементов.float-child
. (Вы скоро поймете, почему.)Чтобы расположить блоки div рядом, мы используем свойство
float
, чтобы перемещать каждый элемент.float-child
слева.Поскольку они оба плавают влево, они будут отображаться рядом, если для них достаточно места. Они подходят, потому что у нас есть два блока
.float-child
, каждый с шириной 50%.И пространство между div создается путем добавления отступов в каждый div
.float-child
, который затем содержит цветные блоки.Добавьте пространство между столбцами, вложив каждый столбец во внешний div
Необходимо, чтобы цветные блоки имели внешний div (
.float-child
), чтобы добавить места, а также разместить оба блока рядом.Что ж, что, если бы у нас были только блоки div
.float-child
без заполнения, а вместо этого мы попытались бы добавить пространство, поместив значениеmargin-right
в первый блок, как это?HTML:
Колонна с плавающей запятой 1Колонна с плавающей запятой 2CSS:
.float-child.green { поле справа: 20 пикселей; }
В этом случае оба элемента
.float-child
занимают 50% общей ширины. Но у первого зеленого элемента также будет поле 20 пикселей.Это будет означать, что оба блока займут 50% + 20 пикселей + 50% ширины. Это будет на 20 пикселей больше, чем 100% ширины, а это значит, что для обеих сторон недостаточно места.
Затем второй синий блок перейдет в следующую строку под первым блоком и переместится влево:
Вы можете попробовать настроить ширину так, чтобы она составляла 48% или какое-то другое число меньше 50%, чтобы соответствовать им.Но это не будет точно.
Вот почему мне лично нравится оборачивать блоки во внешнем блоке div с шириной 50% с заполнением, чтобы добавить пространство между блоками.
В настоящее время проще использовать другие, более новые методы в CSS для размещения блоков div рядом, чем с float.
Давайте взглянем на один из них: метод flexbox!
Метод Flexbox
С помощью flexbox мы можем использовать более интуитивный способ выравнивания двух наших элементов div.
HTML:
Гибкая колонна 1Гибкая колонна 2CSS:
.flex-container { дисплей: гибкий; } .flex-child { гибкость: 1; граница: 2 пикселя сплошного желтого цвета; } .flex-child: first-child { поле справа: 20 пикселей; }
С помощью flexbox мы установили
display: flex
для родительского элемента.flex-container
. Это включает flexbox.Затем в каждом элементе
.flex-child
мы устанавливаемflex: 1
. Это число похоже на соотношение, сравнивающее ширину каждого дочернего элемента в родительском гибком элементе.Поскольку они одинаковы, доступное пространство будет разделено поровну.А поскольку у нас есть два дочерних элемента, каждый из них займет по 50%.
Вот как будет выглядеть получившийся код:
Добавьте пространство между div, используя поле, и оно все равно поместится!
Обратите внимание, что мы добавили пространство, добавив
margin-right: 20px
только к первому элементу.flex-child
. Однако flexbox достаточно умен, чтобы учесть эти дополнительные 20 пикселей при разделении остальной доступной ширины.Это означает, что вы можете добавить пространство с полем, не вычисляя точное количество пикселей.Flexbox подойдет для вас!
Это одна из главных причин, почему я люблю flexbox.
Однако, если у вас есть несколько элементов, которые вы хотите разместить в адаптивной сетке, вы не всегда знаете, где вам нужно добавить это пространство между элементами.
В нашем случае, если бы мы хотели разместить два блока div один под другим для мобильных устройств, нам пришлось бы удалить свойство
margin-right
для мобильных устройств.Или вы можете добавить дополнительный внешний элемент плюс отступ для каждого
.Элемент flex-child
, аналогичный тому, что мы сделали с методом float.Это не на 100% интуитивно понятно, но все равно будет работать. Помните об этом, если вам нужно создать более сложные адаптивные макеты с помощью flexbox.
Давайте теперь взглянем на новейший метод, который вы можете использовать для размещения разделов бок о бок: сетку CSS.
Метод сетки CSS
А вот как вы можете разместить два блока рядом, используя сетку CSS:
HTML:
Столбец сетки 1Столбец сетки 2CSS:
.grid-container { дисплей: сетка; сетка-шаблон-столбцы: 1fr 1fr; сетка-пробел: 20 пикселей; }
А вот как будет выглядеть код:
Одно большое изменение в сетке состоит в том, что вы сначала определяете, как будет выглядеть шаблон сетки. Это означает, сколько столбцов и / или строк вы хотите в своем макете.
В нашем случае нам нужны два столбца одинаковой ширины. Итак, в родительском элементе
.grid-container
мы включаем сетку сdisplay: grid
.Затем мы добавляем, сколько столбцов мы хотим в нашем макете, с помощью свойстваgrid-template-columns
.Нам нужны два столбца одинаковой ширины, поэтому мы устанавливаем значение
1fr 1fr
. Это указывает браузеру создать макет с двумя столбцами, и каждый столбец занимает1fr
(fr = дробная единица) пространства.Единица fr - это отношение каждого столбца к другому, аналогично правилу
flex: 1
, которое мы использовали в методе flexbox. Если для столбцов установлено значение1fr 1fr
, это означает, что каждый столбец будет занимать одинаковое количество места.Добавление пространства между элементами сетки с помощью свойства grid-gap
Одним из больших преимуществ использования сетки CSS является то, что вам не нужно использовать отступы или поля для добавления пространства между элементами сетки.
Вы можете использовать зазор сетки
(или зазор
в новых браузерах) для автоматического добавления места в шаблоне сетки.
Мы установили
grid-gap
на 20 пикселей, чтобы браузер знал, нужно добавить 20 пикселей между всеми элементами, независимо от того, расположены ли они рядом или расположены друг над другом.И вы, возможно, заметили, что все свойства CSS для сетки были установлены в родительском элементе
.grid-container
. На самом деле нам не нужно было писать какой-либо CSS для дочерних элементов.grid-child
!Как разместить элементы HTML бок о бок с помощью CSS | автор: Cem Eygi
Первый способ, которым вы можете воспользоваться, - это метод display: inline-block. Этот метод представляет собой простой и классический метод CSS для размещения элементов рядом.
Встроенный или блочный?
Перед использованием этого метода важно понять, является ли элемент блочным (например,
,) или встроенным (, ).
Прежде всего, вы можете использовать встроенные элементы HTML, и они будут автоматически располагаться бок о бок, но ограничение встроенных элементов состоит в том, что к ним нельзя применить свойства ширины и высоты. С другой стороны, мы можем применить свойства ширины и высоты к элементам уровня блока, но проблема в том, что они не могут быть размещены рядом. Вот почему можно применить третий способ, который приводит к изменению поведения отображения элемента на встроенный блок:
div, span {
display: inline-block;
}Что делает inline-block, так это размещает элементы бок о бок (например, встроенные элементы). Мы также можем назначать свойства ширины и высоты, как мы можем сделать для элементов уровня блока.
Другой способ выровнять элементы бок о бок - использовать поплавки. Это устаревший метод, и в сети много дискуссий о том, полезно ли использовать числа с плавающей запятой или нет.
Стоит ли использовать поплавки?Честно говоря, это зависит от вашего проекта. Если все, что вам нужно, - это разместить элементы рядом, используйте поплавки. Однако, если в вашем проекте используется современная техника (например, Flexbox, Grid или, возможно, фреймворк, например, Bootstrap и т. Д.), То использование float может быть не очень хорошей идеей.
ИспользованиеИспользуя числа с плавающей запятой, вы можете размещать элементы слева или справа на странице. Центрирование элементов невозможно напрямую с использованием чисел с плавающей запятой только потому, что для чисел с плавающей запятой нет «центрального» значения, но это можно сделать с помощью других свойств CSS.
дел. {
с плавающей запятой: слева;
}Кроме того, свойство float выводит элементы из обычного потока документов. Это может вызвать беспорядок на вашей странице и сдвинуть остальные элементы под плавающие элементы, так что они будут частично видны или не будут видны вообще.
Чтобы предотвратить это, вы должны использовать свойство clear сразу после плавающих элементов.
дел. {
ясно: оба;
}Вы также можете посмотреть обучающее видео в этой публикации ниже:
До сих пор мы говорили о классических методах решения этой проблемы. Теперь перейдем к более продвинутым техникам.
CSS предоставляет два новых метода для решения проблемы выравнивания: flexbox и grid. Преимущество использования flexbox или grid заключается в том, что они предоставляют более широкое, гибкое и простое в использовании решение проблемы позиционирования.Однако оба этих метода требуют большего понимания, потому что они имеют множество различных функций для выравнивания, поэтому перед использованием flexbox или grid в вашем проекте вам нужно либо иметь некоторое представление о них, либо ваш проект должен подходить для использования одного из этих методов. .
Если вы решили использовать flexbox, сначала элементы должны быть обернуты родительским элементом.
class = "container" >
1
2
3
Затем, когда мы назначьте родительскому элементу (контейнеру) поведение display: flex, он автоматически разместит все свои дочерние элементы рядом:
.контейнер {
дисплей: гибкий;
}Кроме того, если вы добавите дочерние элементы к свойству flex и дадите номер (например, номер 1), все пространство будет разделено поровну:
p {
flex: 1;
}Flexbox значительно упрощает позиционирование элементов с помощью CSS, если у вас есть некоторое представление о том, как его использовать.
CSS Grid - еще один альтернативный способ выравнивания элементов бок о бок. Он имеет сходство с Flexbox, но имеет другие правила и реализацию.
Прежде всего, как и в методе flexbox, элементы должны находиться внутри родительского контейнера:
class = "container" >
1
2 < / p>
3
После этого мы меняем свойство отображения родительского элемента (контейнера) на сетку:
.container {
display: grid;
}Далее нам нужно определить, как будет выглядеть макет.Мы можем решить, сколько столбцов и строк будет в нашем макете. Допустим, нам нужно три столбца для трех элементов, каждый из которых расположен в одном столбце и в одной строке. Чтобы разместить элементы рядом, мы определяем свойство grid-template-columns и делим пустое поле поровну, задав значение 1fr для каждого столбца:
.container {
display: grid;
сетка-шаблон-столбцы: 1fr 1fr 1fr;
}Примечание. fr означает дробную единицу пространства и аналогичен свойству flex для flexbox.
CSS Flexbox и Grid требуют некоторого углубленного знания CSS. Если вы новичок, вы наверняка можете придерживаться одного из первых двух методов, которые я объяснил выше. Есть еще кое-что, что нужно объяснить о позиционировании элементов в CSS, и я расскажу о них в своих следующих публикациях. Если вы хотите узнать больше о веб-разработке, не забудьте подписаться на мою рассылку.
Спасибо за внимание!
Как использовать столбцы и строки
Gutenberg - это больше, чем просто блоки.Он позволяет создавать макеты страницы с использованием столбцов, обеспечивая большую гибкость внешнего вида вашей страницы. В обоих случаях вы можете создавать столбцы и строки с различным содержимым.
Как и следовало ожидать, у такой новой версии есть некоторые ограничения, но она по-прежнему представляет собой большой шаг вперед. Если после прочтения этого руководства вы обнаружите, что вам нужны дополнительные параметры макета, ознакомьтесь с плагином Advanced Gutenberg.
В этом руководстве вы рассмотрите использование столбцов в основном редакторе Gutenberg WordPress.
Видео на колонны Гутенберга
Это видео, обычно доступное только участникам OSTraining, показывает, как использовать параметры макета и столбца в Gutenberg:
Начало работы с колонками Гутенберга
Когда вы открываете новый экран редактирования WordPress, щелкните значок +, чтобы добавить новый блок. Откройте область «Элементы макета» и найдите значок с тремя столбцами.
После щелчка по значку с тремя столбцами вы получите пустые столбцы с некоторым текстом-заполнителем в центральном столбце.
Визуально эта первоначальная компоновка показалась мне немного запутанной. Не было немедленных указаний на то, что многие столбцы находятся в этом блоке «Столбцы». После некоторого щелчка я смог выделить всю эту область и увидеть, что в ней использовались 2 столбца.
Как добавить блоки внутри колонн Гутенберга
Гутенберг просит вас разместить блоки в этих столбцах. Итак, поскольку столбцы являются блоками, вы, по сути, добавляете блоки внутри блоков.
Щелкните внутри столбцов, и вы увидите, что вокруг плавают несколько значков +:
Когда вы наводите указатель мыши на области столбцов, вокруг каждого столбца появляется синяя рамка. Вы увидите значок +, который позволяет вам добавить новый блок в этот столбец.
Но если вы нажмете на этот значок + в верхней части строки, вы можете создать новую строку.
Вот как появится новая строка над тремя столбцами ниже:
Перемещение строк и столбцов Гутенберга
Для перемещения строк и столбцов вы можете использовать элементы управления в левой части экрана.Эти элементы управления появляются только при наведении на них указателя мыши. Эти элементы управления состоят из стрелки вверх, стрелки вниз и значка с точками.
Стрелки будут перемещать строку вверх и вниз. Вы можете использовать этот значок с шестью точками, чтобы перетащить столбцы в другую часть экрана.
Синяя линия поможет найти новое место для столбца. Здесь вы можете видеть, что изображение было перемещено в строку над исходным положением.
Чтобы изменить размер содержимого, вы можете выбрать «широкую ширину» или «полную ширину».
Согласно документации, вы должны иметь возможность изменять размер столбцов, регулируя серые границы между ними, но мои тесты в Firefox и Chrome не прошли.
На правой боковой панели есть несколько полезных опций. Здесь вы можете изменить количество столбцов, введя число или переместив ползунок.
Если вы щелкните вкладку «Дополнительно» на этой боковой панели, вы также сможете добавить класс CSS. Создавая класс, вы можете контролировать ширину столбцов.
В приведенном ниже примере вы можете увидеть разницу между «широкой шириной» и «полной шириной».
Стоит отметить, что вы также можете использовать размер изображений для управления шириной столбцов. При уменьшении изображения текстовый блок имеет больше места для заполнения строки, в то время как изображение большего размера заставляет текстовый блок занимать меньше места.
Адаптируются ли колонки Гутенберга?
Да, столбцы Гутенберга автоматически складываются на экранах меньшего размера.Если вы используете упомянутую выше функцию CSS, вам нужно будет убедиться, что ваш стиль адаптируется. Однако, если вы используете стандартный макет с дополнительными классами CSS, ваши столбцы будут складываться очень аккуратно.
Моя мысль о колонке Гутенберга - это
Функциональность столбцов в Gutenberg показывает, что это не полноценный конструктор страниц. И стоит отметить, что некоторые элементы управления немного сложны в использовании. Тем не менее, Gutemberg имеет несколько интересных функций и предлагает гораздо большую гибкость, чем предыдущий редактор.
Больше чтения Гутенберга
Видео знакомство с Гутенбергом
WordPress 5 представляет новый редактор под названием Gutenberg, который меняет способ создания и редактирования сообщений и страниц. Это видео - ваш полный путеводитель по Гутенбергу! Спасибо нашим друзьям из Glowhost за то, что сделали это видео возможным: сэкономьте 60% на вашем первом счете, если вы размещаете свой сайт WordPress с помощью GlowHost. Щелкните здесь и воспользуйтесь купоном «WPGUTENBURG».
Об авторе
Либби Янг родилась в Замбии, но сейчас живет в Кейптауне, Южная Африка, и начинала как журналист.Она выучила HTML, когда 20 лет назад компания, в которой она работала вторым редактором, перешла с CD-Rom на Интернет. С тех пор она разрабатывала богатые контентом веб-сайты, используя различные системы управления контентом с открытым исходным кодом.
CSS Inline vs Inline-Block vs Block
Хорошо, давайте заменим изображения на CSS. Помимо вопросов об алгоритме JavaScript, вы, как Front End-разработчик, также можете получить вопросы, связанные с CSS. Итак, давайте убедимся, что вы готовы, и углубим свои основы работы в Интернете!
Меня действительно спросили об этом в интервью.Я проходил собеседование на роль Front-end, поэтому готовился только к вопросам алгоритма. Так что я немного наткнулся на это 😰 Это лучшая часть ошибок, у вас есть шанс извлечь из них уроки, чтобы не повторять их снова. Вот почему я всегда рекомендую людям подавать заявки в как можно большее количество мест. Собеседование похоже на любой навык: чем больше вы практикуетесь, тем лучше вы становитесь. Теперь этот вопрос меня больше не беспокоит, потому что я буду готов! И вы тоже, давайте начнем!
а.
inline
Отображает элемент как встроенный элемент.Никакие свойства высоты и ширины не будут иметь никакого эффекта.
Свойство отображения
определяет поведение отображения элемента. Это необходимо знать для управления компоновкой элемента. Существует множество значений собственности. Но давайте начнем с основного
inline
.Отображает элемент в строке или в той же строке. Другими словами, встроенные элементы НЕ начинаются с новой строки и занимают ровно столько ширины, сколько ее содержимое. Итак, если вы попытаетесь установить любую ширину и высоту, это не будет иметь никакого эффекта.
inline
elementsВот несколько элементов, которые имеют свойство
inline по умолчанию
:И большинство тегов форматирования также по своей сути
inline
:b.
inline-block
Отображает элемент как контейнер блока встроенного уровня. Вы МОЖЕТЕ установить значения высоты и ширины.
Хорошо, перейдем к
inline-block
. По сути, это то же самое, что иinline
, за исключением того, что вы можете установить значения высоты и ширины.г.
block
Проверить длину строки
До сих пор мы говорили о
inline
. Теперь перейдем к противоположному,блоку
. Помните, чтовстроенных элементов
появляются в одной строке. Итак,блок
начинается с НОВОЙ строки и занимает всю доступную ширину. Это означает, что блочные элементы будут занимать всю ширину своего родительского элемента.block
elementsВот несколько элементов, которые имеют свойство
block
по умолчанию:Объяснение не для разработчиков
Представьте, что если вы посещаете концерт, у вас есть ряды сидений, верно.Если вы назначите своему другу место
inline
, он сядет рядом с вами. Итак, что касается встроенных сиденийи
, все они являются одним и тем же физическим стулом. Вы не можете манипулировать стулом, чтобы сделать его больше или меньше. Один размер подходит всем, что они называют!Теперь ваша подруга Дженнифер хочет присоединиться к вам, но потому что она дочь владельца стадиона. Ей выделяют место
inline-block
. Что ж, она все еще может сидеть рядом с тобой. Потому что она «в русле» с тобой (плохой каламбур, смеется and), и, конечно же, ты хочешь, чтобы она села рядом с тобой.Однако, поскольку она дочь стадиона, ее мама хочет убедиться, что ей комфортно. Поэтому она дает ей специальное сиденье, где ее стул настраивается и может быть отрегулирован, чтобы сделать его больше или меньше. Кумовство в самом лучшем виде 🤫Твоя одноклассница Анджелина тоже на концерте. Теперь твоей подруге Дженнифер она не очень нравится. Поэтому она просит маму выделить ей место
block
. Таким образом, Анджелина не сядет рядом с вами. Вместо этого она сидит в следующем ряду.Окончательное решение
inline Элемент не начинается с новой строки, а занимает только необходимую ширину.Вы не можете установить ширину или высоту.
inline-block Форматируется так же, как встроенный элемент, где он не начинается с новой строки. НО, вы можете установить значения ширины и высоты.
block Элемент начнется с новой строки и займет всю доступную ширину. И вы можете установить значения ширины и высоты.
Вот наглядное изображение того, как выглядят все эти элементы
iplay
:Теперь, в своем техническом собеседовании, вы можете получить вариации на следующие вопросы:
- В чем разница между
inline
иblock
- В чем разница между встроенным блоком
и встроенным блоком
Но независимо от того, какой вариант, вы должны иметь возможность обращаться к ним! Удачи вам с интервью 👍
Ресурсы
.