Html-тэги — Наследование атрибутов


Наследование в CSS на примерах

Рад снова всех вас приветствовать на страницах блога Site on! В прошлой статье мы кратко поговорили об основах CSS и разобрали несколько простых примеров. Сегодня наша тема – это такая важная вещь, как наследование в CSS. Наследованием в CSS называется передача свойств от элемента родителя к дочерним элементам. Или если вам будет понятней: передача CSS свойств от верхнего тега к вложенным в него. Причём наследуется ли свойство или не наследуется зависит от самого свойства, а не от тегов, к которым оно применено. Как это работает? Да очень просто, вернёмся к нашему макету, с помощью которого мы научились создавать нашу первую веб-страницу:

Если мы запишем в CSS:

То цвет надписи «И здесь пишем любой интересующий нас текст» как ни странно станет зелёным. А что будет, если мы нашу надпись заключим в блок? То есть вот какой стала интересующая нас часть кода:

То надпись всё равно останется зелёной, так как свойство color наследуется, а значит, передалось от тега body к вложенному в него тегу div и дальше (если бы было куда). И сразу вам задачка: какого цвета будет наша надпись, если мы имеем следующий код

Для справки — тег, который просто обозначает какой-либо участок текста. Если в CSS для него ничего не задано, то он ничего и не делает.

Правильный ответ: красным . Так как тег div перебил наследование от body (но только для тегов, вложенных внутрь div).

Какой приоритет имеет наследование в CSS ?

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

Об этом ярко свидетельствует предыдущий пример, где тег div не дал тегу span унаследовать зелёный цвет текста от тега body, а всё потому, что мы для тега div явно объявили красный цвет, а значит, приоритет у красного цвета наивысший…

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

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

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

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

Ещё один важный момент: если после значения CSS свойства поставить пробел и написать !important, то это свойство всегда и везде будет иметь наивысший приоритет. Пример записи:

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

И напоследок вот что вы должны иметь ввиду, если у вас что-то не получается — если написать так:

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

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

Ещё раз напомню вам о том, что лучший учитель по HTML и CSS – это практика + справочник, который я, между прочим, рекомендовал в статье об основах XHTML (HTML). Также рекомендую подписаться на обновления моего блога, так как после общеобразовательных и вступительных статей я обязательно напишу о некоторых тонкостях и, если можно так выразиться, секретах правильной вёрстки сайта.

Атрибуты и свойства

Когда браузер загружает страницу, он «читает» (также говорят: «парсит») HTML и генерирует из него DOM-объекты. Для узлов-элементов большинство стандартных HTML-атрибутов автоматически становятся свойствами DOM-объектов.

Например, для такого тега у DOM-объекта будет такое свойство body. .

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

DOM-свойства

Ранее мы уже видели встроенные DOM-свойства. Их много. Но технически нас никто не ограничивает, и если этого мало – мы можем добавить своё собственное свойство.

DOM-узлы – это обычные объекты JavaScript. Мы можем их изменять.

Например, создадим новое свойство для document.body :

Мы можем добавить и метод:

Также можно изменять встроенные прототипы, такие как Element.prototype и добавлять новые методы ко всем элементам:

Итак, DOM-свойства и методы ведут себя так же, как и обычные объекты JavaScript:

  • Им можно присвоить любое значение.
  • Они регистрозависимы (нужно писать elem.nodeType , не elem.NoDeTyPe ).

HTML-атрибуты

В HTML у тегов могут быть атрибуты. Когда браузер парсит HTML, чтобы создать DOM-объекты для тегов, он распознаёт стандартные атрибуты и создаёт DOM-свойства для них.

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

Пожалуйста, учтите, что стандартный атрибут для одного тега может быть нестандартным для другого. Например, атрибут «type» является стандартным для элемента (HTMLInputElement), но не является стандартным для (HTMLBodyElement). Стандартные атрибуты описаны в спецификации для соответствующего класса элемента.

Мы можем увидеть это на примере ниже:

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

Конечно. Все атрибуты доступны с помощью следующих методов:

  • elem.hasAttribute(name) – проверяет наличие атрибута.
  • elem.getAttribute(name) – получает значение атрибута.
  • elem.setAttribute(name, value) – устанавливает значение атрибута.
  • elem.removeAttribute(name) – удаляет атрибут.

Этим методы работают именно с тем, что написано в HTML.

Кроме этого, получить все атрибуты элемента можно с помощью свойства elem.attributes : коллекция объектов, которая принадлежит ко встроенному классу Attr со свойствами name и value .

Вот демонстрация чтения нестандартного свойства:

У HTML-атрибутов есть следующие особенности:

  • Их имена регистронезависимы ( id то же самое, что и ID ).
  • Их значения всегда являются строками.

Расширенная демонстрация работы с атрибутами:

Пожалуйста, обратите внимание:

  1. getAttribute(‘About’) – здесь первая буква заглавная, а в HTML – строчная. Но это не важно: имена атрибутов регистронезависимы.
  2. Мы можем присвоить что угодно атрибуту, но это станет строкой. Поэтому в этой строчке мы получаем значение «123» .
  3. Все атрибуты, в том числе те, которые мы установили, видны в outerHTML .
  4. Коллекция attributes является перебираемой. В ней есть все атрибуты элемента (стандартные и нестандартные) в виде объектов со свойствами name и value .

Синхронизация между атрибутами и свойствами

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

В примере ниже id модифицируется как атрибут, и можно увидеть, что свойство также изменено. То же самое работает и в обратную сторону:

Но есть и исключения, например, input.value синхронизируется только в одну сторону – атрибут → значение, но не в обратную:

  • Изменение атрибута value обновило свойство.
  • Но изменение свойства не повлияло на атрибут.

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

DOM-свойства типизированы

DOM-свойства не всегда являются строками. Например, свойство input.checked (для чекбоксов) имеет логический тип:

Есть и другие примеры. Атрибут style – строка, но свойство style является объектом:

Цукерберг рекомендует:  Blur - Помогите новичку в CSS

Хотя большинство свойств, всё же, строки.

При этом некоторые из них, хоть и строки, могут отличаться от атрибутов. Например, DOM-свойство href всегда содержит полный URL, даже если атрибут содержит относительный URL или просто #hash .

Если же нужно значение href или любого другого атрибута в точности, как оно записано в HTML, можно воспользоваться getAttribute .

Нестандартные атрибуты, dataset

При написании HTML мы используем много стандартных атрибутов. Но что насчёт нестандартных, пользовательских? Во-первых, давайте посмотрим, полезны они или нет? Для чего они нужны?

Иногда нестандартные атрибуты используются для передачи пользовательских данных из HTML в JavaScript, или чтобы «помечать» HTML-элементы для JavaScript.

Также они могут быть использованы, чтобы стилизовать элементы.

Например, здесь для состояния заказа используется атрибут order-state :

Почему атрибут может быть предпочтительнее таких классов, как .order-state-new , .order-state-pending , order-state-canceled ?

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

Но с пользовательскими атрибутами могут возникнуть проблемы. Что если мы используем нестандартный атрибут для наших целей, а позже он появится в стандарте и будет выполнять какую-то функцию? Язык HTML живой, он растёт, появляется больше атрибутов, чтобы удовлетворить потребности разработчиков. В этом случае могут возникнуть неожиданные эффекты.

Чтобы избежать конфликтов, существуют атрибуты вида data-*.

Все атрибуты, начинающиеся с префикса «data-», зарезервированы для использования программистами. Они доступны в свойстве dataset .

Например, если у elem есть атрибут «data-about» , то обратиться к нему можно как elem.dataset.about .

Атрибуты, состоящие из нескольких слов, к примеру data-order-state , становятся свойствами, записанными с помощью верблюжьей нотации: dataset.orderState .

Вот переписанный пример «состояния заказа»:

Использование data-* атрибутов – валидный, безопасный способ передачи пользовательских данных.

Пожалуйста, примите во внимание, что мы можем не только читать, но и изменять data-атрибуты. Тогда CSS обновит представление соответствующим образом: в примере выше последняя строка (*) меняет цвет на синий.

Итого

  • Атрибуты – это то, что написано в HTML.
  • Свойства – это то, что находится в DOM-объектах.
Свойства Атрибуты
Тип Любое значение, стандартные свойства имеют типы, описанные в спецификации Строка
Имя Имя регистрозависимо Имя регистронезависимо

Методы для работы с атрибутами:

  • elem.hasAttribute(name) – проверить на наличие.
  • elem.getAttribute(name) – получить значение.
  • elem.setAttribute(name, value) – установить значение.
  • elem.removeAttribute(name) – удалить атрибут.
  • elem.attributes – это коллекция всех атрибутов.

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

  • Нужен нестандартный атрибут. Но если он начинается с data- , тогда нужно использовать dataset .
  • Мы хотим получить именно то значение, которое написано в HTML. Значение DOM-свойства может быть другим, например, свойство href – всегда полный URL, а нам может понадобиться получить «оригинальное» значение.


Задачи

Получите атрибут

Напишите код для выбора элемента с атрибутом data-widget-name из документа и прочитайте его значение.

Наследуемые свойства

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

font-size , font-family , font-style , font-weight , color , text-align , text-transform , text-indent , line-height , letter-spacing , word-spacing , white-space , direction и т. д.

Также к наследуемым свойствам относятся list-style , cursor , visibility , border-collapse и некоторые другие. Но они используются значительно реже.

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

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

  • index.html Сплит-режим
  • style.css Сплит-режим

Строка текста в первом блоке

Ещё одна строка текста в первом блоке

  • Первый элемент списка
  • Второй элемент списка
  • Третий элемент списка

Строка текста во втором блоке

Ещё одна строка текста во втором блоке

  • Первый элемент списка
  • Второй элемент списка
  • Третий элемент списка

Когда тег «a» не наследует атрибут цвета родительского тега?

Вот мой код: css part

Я каким-то образом вызвал то, что помешало тегу «a» унаследовать цвет родительского тега (здесь «span» ).

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

Проверьте разницу между этими двумя на странице (я не понимаю, как ее отобразить в сообщении):

Следующая ссылка на w3 c:

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

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

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

Я собирался опубликовать это как комментарий, но он немного прибавил. Так что это ответ на вопрос, а также ответ на Ответ Кевина и его комментарии.

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

В Firefox вы можете увидеть это в Firebug, если вы переключите «Показать пользовательский агент CSS» (или вы можете посмотреть внутренние таблицы стилей Firefox. Вы можете увидеть настройки браузера в Webkit Web Inspector и Opera Dragonfly. Я не думаю, что вы можете в IE.

Я не знаю ни одного сайта, на котором есть обзор всех настроек браузера. CSS2 «информативный» таблица стилей HTML4, а также YUI reset stylesheet была бы хорошей отправной точкой, но ни один из них не упоминает о каких-либо (link) цветах (в таблице стилей HTML4 упоминается подчеркивание).

Чтобы узнать, какие свойства наследуются вообще, вы можете использовать таблицу индексов свойств ссылочного свойства CSS2 (см. столбец «Унаследованный?» ). SitePoint также упоминает его в ссылка CSS.

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

Вы можете установить его для разных псевдокласс в отдельности (например, :visited , :hover и :active ) или для тега a .

Однако IE6 и IE7 не поддерживают ключевое слово inherit , поэтому, если вы тоже хотите их поддержать, должны установить цвет явно.

Html-тэги — Наследование атрибутов

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

Однако поскольку и элемент p, и элемент h2 находятся в элементе body, то они наследуют от этого контейнера — элемента body многие стили. И чтобы не дублировать определение стиля, мы могли бы написать так:

В итоге определение стилей стало проще, а результат остался тем же.

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

При нескольких уровнях вложенности элементы наследуют стили только ближайшего контейнера:

Здесь веб-страница имеет следующую структуру:

Для элемента div переопределяется цвет текста. И так как элемент h2 и один из параграфов находятся в элементе div, то они наследуют стиль именно элемента div. Второй параграф находится непосредственно в элементе body и поэтому наследует стиль элемента body.

Однако не ко всем свойствам CSS применяется наследование стилей. Например, свойства, которые представляют отступы (margin, padding) и границы (border) элементов, не наследуются.

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

Атрибуты HTML-тегов

С тем, что такое HTML теги, мы уже разобрались. Мы выяснили, что у них есть содержимое. Однако это ещё не всё. У тегов также есть атрибуты, которые расширяют их возможности, а у атрибутов, в свою очередь, есть значения. С их помощью элементу можно задавать параметры, определять стиль оформления. Например, тегом

вы обозначили абзац. Но как сделать, чтобы он был выровнен по правому краю? Для этого понадобится определённый атрибут с соответствующим значением. Как некоторые теги не имеют пары, так и некоторые атрибуты могут употребляться без значений.

Как писать атрибуты?

Атрибуты — зарезервированные слова (как и теги, только без угловых скобок), значения же их могут быть разными. Так же, как и теги, атрибуты со значениями рекомендуется писать маленькими буквами, хотя браузерам, в общем-то, безразлично — это просто правило хорошего тона: по-русски ведь ТОЖЕ НЕ ПРИНЯТО ПИСАТЬ ПРИ ВКЛЮЧЕННОМ CAPS LOCK. А чем HTML хуже?

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

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

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

Универсальные атрибуты

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

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

В качестве значения атрибута могут выступать цифры 0-9 или буквы латинского алфавита:

  • class позволяет связать тег с заранее заданным с помощью CSS оформлением. Использование атрибута позволяет существенно уменьшить код, ведь вместо того, чтобы повторять ввод одного и того же блока CSS, можно просто ввести имя соответствующего ему класса.
  • С помощью contenteditable можно разрешить пользователю редактировать любой элемент HTML-страницы: удалять, вставлять, изменять текст. Этот же атрибут даёт возможность редактирование и запретить. Значения имеет всего два: true — правку разрешить, false — запретить.
  • При помощи атрибута contextmenu вы можете наделить любой элемент документа уникальными пунктами контекстного меню на своё усмотрение. Само меню создаётся в теге , а атрибуту contextmenu присваивается его идентификатор.
  • dir определяет направление текста: слева направо (ltr) или справа налево (rtl).
  • draggable позволяет запретить (false) или разрешить (true) пользователю перетаскивать наделённый этим атрибутом элемент страницы.
  • dropzone указывает браузеру, что делать с перетаскиваемым элементом: копировать (значение copy), перемещать (move) или создать на него ссылку (link).
  • h >
  • translate разрешает (yes) или запрещает (no) перевод содержимого тега.
  • align задаёт выравнивание элемента. Например, с его помощью можно выровнять текст по левому краю (значение left), по правому краю (right), по центру (center) или по ширине (justify). Для изображений (тег ) также доступно выравнивание по верхней границе самого высокого элемента строки (top), по нижней границе (bottom), а значение middle делает так, что средняя линия картинки совпадает с базовой линией строки.

Стоит иметь в виду, что использовать атрибут align не рекомендуется, а выравнивать текст лучше с помощью CSS.

Пример использования атрибутов

В качестве примера рассмотрим строку HTML-кода:

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

Разберём каждый элемент строки.

— открывающий тег контейнера, хранящего абзац.

Между символами > и

Полезные ссылки:

  • Основы HTML — бесплатный 2-х часовой видеокурс по основам HTML;
  • Бесплатный курс по верстке сайта — пример блочной вёрстки с чистого листа;
  • Вёрстка сайта с нуля 2.0 — полноценный платный курс.

Теги и атрибуты HTML

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

В пояснениях я буду приводить ссылки на спецификацию, а также на её перевод, о котором упоминал на странице HTML это.. . Упоминание о переводе А. Пирамидина имеется в официальной спецификации HTML, так что перевод можно считать качественным.

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

В среде HTML цепочка выполнения команд следующая:

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


Теги выглядят следующим образом:

Чтобы увидеть (если интересно) внутренности html-страницы, в обозревателе кликните правой клавишей мыши и нажмите на пункт Искодный код или Код страницы (везде по-разному).

Ниже приведён фрагмент кода главной страницы портала mail.ru с 2530 по 2547 строку:

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

Полный перечень тегов можно найти в спецификации HTML. Их там чуть менее ста. Каждый отвечает за свои конкретные функции. Поэтому у некоторых может возникнуть резонный вопрос — неужели этого хватает для получения того многообразия оформления, которое на сегодняшний день присутствует в сети интернет?

Атрибуты тегов

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

Теперь изменим значения ширины, чтобы получить прямоугольник:

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

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

Итак, атрибуты бывают:

  1. Обязательные для некоторых тегов.
  2. Необязательные.

Снова о тегах

Идём дальше. Надо кое-что добавить и о тегах — в языке HTML их два вида:

  1. Строковые (inline). Их ещё называют инлайновые .
  2. Блоковые (block).

Если мы заключим гипертекст в тег

, то на странице он сформируется в отдельный блок (так как это блоковый тег) и образует абзац текста. Абзацы на этой странице сформированы как раз таким образом. Пример ниже:

Все заблуждаются в меру своих возможностей.

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

Все заблуждаются в меру своих возможностей.

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

Эти два элемента необычны для HTML тем, что могут обрабатывать элементы уровня блока или инлайн-элементы (но не те и другие вместе). Они могут содержать одно или более слов в параграфе или один или более элемент уровня блока, такой как параграфы, списки или таблицы. Спецификация HTML 4.01 в переводе Пирамидина А.

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

производит действие над гипертекстом, формируя из него абзац, а тег включает в гипертекст внешний объект, но на сам гипертекст повлиять не может. Теги, не влияющие непосредственно на гипертекст, называют пустыми (empty) . Закрывающий тег у пустышек указывать запрещено!

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

  1. Закрывающий тег ( ) обязателен.
  2. Закрывающий тег ( ) не обязателен.
  3. Закрывающий тег ( ) запрещён.

Указываем ссылку на другой документ

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

и . Возьмём для примера таблицу:

Каждый новый элемент ячейки таблицы

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

. Ряд таблицы

автоматически закроет тег тела таблицы

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

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

  1. Строковые (inline). Их ещё называют инлайновые .
  2. Блоковые (block).

Конечный (/закрывающий) тег может быть:

  1. Закрывающий тег ( ) обязателен.
  2. Закрывающий тег ( ) не обязателен.
  3. Закрывающий тег ( ) запрещён.

атрибуты у тегов могут быть:

Эту информацию по каждому конкретному тегу можно получить в спецификации. Как ею пользоваться написано ниже. И ещё один важный момент касательно использования различных символов в HTML.

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

Вложенность тегов

Теги могут быть вложенными друг в друга как матрёшки. При этом они делятся на родительские и дочерние элементы. Поясню на примере:

Дочерние элементы наследуют характеристики родительских. Таким образом зачёркнутый текст будет также и подчёркнутым.

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

Использование спецификации

Официальной на данный момент (март 2012) является версия HTML 4.01, версия HTML 5.0 находится в активной разработке, но стандартом ещё не является, несмотря на многочисленные публикации в сети на тему HTML 5.

Теперь о том, как пользоваться спецификацией. Допустим, нас интересуют вышеупомянутые таблицы. Открываем краткое содержание и выбираем соответствующий пункт (№11) — Таблицы.

Перевод Пирамидина А.

Открываем спецификацию, меню разделов:

Откроется меню элемента TABLE. Можно почитать введение и общую информацию по таблицам (лишней не будет). Далее следует непосредственно само описание тега

.

Переходим по ссылке к подробному описанию — синтаксису и списку атрибутов.

Тут можно получить информацию по каждому атрибуту.

  1. Требования закрывающего тега ( ). В данном случае начальный и конечный теги обязательны.
  2. Названия атрибутов данного тега.
  3. Список значений каждого атрибута.
  4. Статус атрибута (Актуальный/Устаревший/Запрещённый).
  5. Тип данных (значений) атрибута.
  6. Список общих атрибутов, которые используются с любыми тегами.

Важное замечание. На скриншоте выше атрибут align имеет статус Deprecated (не рекомендован). Такой атрибут не будет работать (и будет ошибкой) в DOCTYPE Strict. Так что использовать deprecated-элементы я крайне не рекомендую. Статус любого элемента можно посмотреть в общем списке.

Уточнения по тегам:

  1. Название тега.
  2. Статус открывающего тега в документе html:
    • O — optional (не обязателен)
  3. Статус закрывающего тега в документе html:
    • O — optional (не обязателен)
    • F — forbidden (запрещён)
  4. Предполагается ли содержимое (гипертекст):
    • E — Empty (без содержимого)
  5. Статус тега (D, L и F):
    • D — deprecated (не рекомендован).
    • L — loose (допускается в переходной спецификации Transitional).
    • F — Frameset (допускается в спецификации Frameset).
  6. Комментарий, назначение тега.

Уточнения по атрибутам:

  1. Название атрибута.
  2. Принадлежность к тегу (группе тегов).
  3. Варианты значений атрибута.
  4. Обязательный/необязательный для указанного тега (группы тегов).
  5. Статус атрибута (D, L и F)
    • D — deprecated (не рекомендован).
    • L — loose (допускается в переходной спецификации Transitional).
    • F — forbiden (запрещён).

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

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

CSS урок 2. Наследование

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

Видеоверсия:
[iframe />Что такое наследование

Как было сказано выше, наследование является одним из важнейших явлений в CSS. Например, если мы придадим всем абзацам желтый цвет и шрифт Verdana размером в 14px, эти свойства будут унаследованы тегами вложенными в тег p.

В первом абзаце нашей веб-страницы есть два вложенных тега — strong и em. Правило, которое мы прописали для абзацев были приняты этими двумя вложенными тегами.

Наследование от абзаца

Как видно на скриншоте, слова находящиеся внутри вложенных тегов также отображаются шрифтом Verdana размером в 14px, хотя и имеют жирное и курсивное начертание.

Следующим шагом давайте придадим те же CSS свойства для тега body, при этом удалив предыдущее.

Дальше, по логике мы можем ожидать наследование свойств тега body всеми дочерними и потомственными элементами, что и происходит после обновления веб-страницы:

Наследование от тега body

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

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

Зачем нужно наследование

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

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

Наследуемые и ненаследуемые свойства

Возможно, вы уже догадались о том что не все свойства могут наследоваться. Например, возьмем тот же тег border (граница). Давайте пропишем ее для тега body:

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

свойство border не наследуется

Мы были правы в своих предположениях. Граница появляется только у тела документа. То, как выглядела бы веб-страница в случае наследования свойства border:

Вид страницы если бы свойство border наследовалась

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

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

На этом у меня все. Надеюсь, данный материал оказался для вас полезным. Если это так:

  1. Сделайте репост данной статьи в социальных сетях, чтобы больше людей получили от нее пользу
  2. [popup_trigger >Подписывайтесь [/popup_trigger] на мою рассылку, чтобы не пропустить полезные и интересные публикации на моем блоге

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

Как установить атрибуты CSS для значений по умолчанию для определенного элемента (или предотвратить наследование)

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

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

Здесь я использую элемент input в качестве примера, но я говорю о любом элементе. Я не спрашиваю, как установить различные атрибуты CSS для этого конкретного элемента, я спрашиваю, как reset его по умолчанию.

Различные элементы имеют разные атрибуты по умолчанию, такие как padding , когда они не установлены. Например, button , который имеет прописку 0 в CSS, обернет текст без какого-либо пробела. Вы можете позже установить его дополнение к другому значению, но как бы вы установили его на заполнение по умолчанию?

Заранее благодарим за любые комментарии!

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

HTML5 Doctor (CSS reset с включенными элементами HTML5)

Если вы говорите, что ручной стиль сбрасывает и игнорирует наследование, чем до сих пор, нет способа полностью стирать reset до тех пор, пока вы не повторно объявите свои значения, например,

Как валидно добавить тегу свои атрибуты?

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

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

С приходом HTML5 пришло и решение этой проблемы. Разработчики стандарта предусмотрели добавление пользовательских атрибутов. Для этого можно использовать атрибуты, которые начинаются с data- . Продолжение же атрибута — ваше пользовательское представление.

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

А вот пример с изображением и пользовательским описанием:

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

Цукерберг рекомендует:  Angular2 - angular2 и coffeescript
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих