Корзина
Светлая тема
Войти
DEVNEW.ORG » Блог » Уроки по HTML » Урок 9. Уроки CSS. Наследование css-свойств, каскадирование
Урок 9. Уроки CSS. Наследование css-свойств, каскадирование
admin
24-10-2023, 20:13 163 0

Урок 9. Уроки CSS. Наследование css-свойств, каскадирование

В предыдущих уроках кратко упоминали, что при знакомстве с таблицей стилей CSS, правилами, свойствами и селекторами стоит уяснить для себя правила наследования стилей. Мы знаем, что весь HTML- документ условно можно представить в виде иерархии, где одни элементы содержат в себе другие. Между элементами существуют различные связи. Они могут быть соседними, а могу иметь свзять родитель-дочерний элемент. У каждого элемента только один непосредственный родитель, это тот, который содержит его явно. Родителя нет только у корневого элемента, в Html-файлах это тег <html>.

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

Какие css-свойства (стили) наследуются

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

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

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

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

Каскадирование CSS, каскадные таблицы стилей

Мы уже знаем о расшифровке аббревиатуры CSS, с таблицей стилей все в принципе понятно, а что же такое каскадная? Каскадирование - один из базовых механизмов при работе с css-правилами. Для одного и того же элемента может быть задано множество пересекающихся стилей. Стили могут задаваться через атрибут style, через селектор тега, класса, идентификатора, могут наследоваться от родителя и т.д. Вопрос в том, какие же стили применяться к элементу в конечном итоге, давайте разбираться.

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

Теперь на примерах:

  • Если задаем стили для элемента по одинаковому селектору, по тегу, по классу, например, то применяются те свойства, которые стоят ниже в css-файле. Ведь специфичность и приоритет в этом случае будут одинаковы. 
  • Если одно правило в качестве селектора использует класс, а другое тег с уточняющим классом, то применяются стили второго правила, т.к. более специфичный. Например, для <p  class="first sec"> зададим правила с использованием селекторов .first и p.secondВ конечном итоге приоритетными будут свойства второго селектора.
  • Если в качестве селектора использовать идентификатор (id), то такие правила будут приоритетнее. Это происходит потому что элемент с данным Id единственный на страницу, значит специфичность его больше. 
  • Еще более приоритетны свойства записанные через атрибут style
  • Чтобы переопределить стили через атрибут style можно использовать ключевое слово !important применимое к любому свойства. Оно переопределяет все. Однако злоупотреблять им не стоит, использовать в крайних случаях

Перекрестное наследование стилей

Далее расскажем про еще один популярный и удобный прием в задании css-свойсв. У большинства сайтов есть похожие друг на друга элементы, которые отличаются лишь незначительно. Одним из таких популярных html-элементов являются кнопки. Как правило, они имеют одинаковые отступы, размеры, закругления, тени, цвет текста и т.д. Здесь и удобно применять перекрестное наследование стилей

  • Вынесем общие стили в основной класс .button
  • Зададим вспомогательные стили еще в нескольких классах. Например, .button-red и .button-blue
  • Пропишем у всех сходных элементов базовый класс, а следом при необходимости один или несколько вспомогательных
<div class="catalog">
    <div class="catalog-item">
...
<a class="button button-red"></a>
</div>
<div class="catalog-item">
...
<a class="button button-blue"></a>
</div>
</div>

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




Cмотрите также

Игры для Linux 17-04-2023, 19:46
[xfnotgiven_posterlogo]

Mindustry Linux

[/xfnotgiven_posterlogo] [xfgiven_posterlogo][/xfgiven_posterlogo]

Mindustry — игра в жанре Tower Defense с элементами стратегии. Строительство башен, защита от врагов, производство материалов для строительства.

Возможности

  • Жанр Tower Defense с элементами стратегии.
  • Создание конвейеров для подачи боеприпасов в башни.
  • Производство/добыча материалов для строительства.
  • Создание материалов.
  • Создание дронов для автоматической добычи ресурсов.
  • Одиночная кампания.
  • Обучающий уровень в рамках кампании.
  • Сетевая игра.
  • Пользовательская игра — настраиваемые условия.
  • Редактор уровней.

    Установка через Flatpak

    Установка:

    flatpak install flathub com.github.Anuken.Mindustry

    Запуск:

    flatpak run com.github.Anuken.Mindustry

    Установка через Snap

    sudo snap install mindustry
Игры для Linux 17-04-2023, 19:49
[xfnotgiven_posterlogo]

Эмулятор Game Boy Advance Linux

[/xfnotgiven_posterlogo] [xfgiven_posterlogo][/xfgiven_posterlogo]

mGBA — эмулятор портативной игровой консоли Game Boy Advance.

Возможности

  • Эмуляция аппаратной части Game Boy Advance.
  • Эмуляция аппаратной части Game Boy/Game Boy Color.
  • Быстрая работа даже на слабых компьютерах.
  • Вариации интерфейса на Qt и SDL.
  • Поддержка картриджей с датчиками движения и вибрацией (только для игровых контроллеров).
  • Поддержка real-time clock.
  • Поддержка Game Boy Camera и Game Boy Printer.
  • Встроенная реализация BIOS и поддержка загрузки внешних файлов BIOS.
  • Возможность создания скриншотов.
  • Запись видео, GIF, WebP, APNG.
  • Загрузка ZIP и 7z файлов.
  • Поддержка патчей IPS, UPS и BPS.
  • Поддержка отладки игр через интерфейс командной строки и GDB.
  • И другое...


    Установка через Flatpak

    Установка:

    flatpak install flathub io.mgba.mGBA

    Запуск:

    flatpak run io.mgba.mGBA

    Установка через Snap

    sudo snap install mgba

    Установка в Ubuntu (LinuxMint)

    sudo apt install mgba-qt

    Установка в ArchLinux (Manjaro)

    sudo pacman -S mgba-qt

    Установка в openSuse

    sudo zypper install mgba
Игры для Linux 17-04-2023, 19:43
[xfnotgiven_posterlogo]

GeForce Now (Electron) Linux

[/xfnotgiven_posterlogo] [xfgiven_posterlogo][/xfgiven_posterlogo]

GeForce Now (Electron) — клиент сервиса GeForce Now для Linux. Используется для облачного гейминга. Игры запускаются на мощном компьютере в облаке.

Установка через Snap

sudo snap install geforcenow

Установка в ArchLinux из AUR

git clone https://aur.archlinux.org/geforcenow-electron.git
cd geforcenow-electron
makepkg -sri
Программы для Linux 17-04-2023, 19:10
[xfnotgiven_posterlogo]

PikoPixel Linux

[/xfnotgiven_posterlogo] [xfgiven_posterlogo][/xfgiven_posterlogo]

PikoPixel — программа для рисования пиксельных изображений.

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

Основные возможности

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

    Установка в ArchLinux из AUR

    git clone https://aur.archlinux.org/pikopixel.git
    cd pikopixel
    makepkg -sri

    Установка в Gentoo

    sudo emerge -a gnustep-apps/pikopixel
Игры для Linux 17-04-2023, 19:37
[xfnotgiven_posterlogo]

KGoldrunner Linux

[/xfnotgiven_posterlogo] [xfgiven_posterlogo][/xfgiven_posterlogo]

KGoldrunner — аркада, в которой герой бегает по лабиринту, поднимается по лестницам, выкапывает ямы и уклоняется от врагов.

Возможности

  • Необходимо собрать все золотые самородки и пройти на следующий уровень. Враги также охотятся за золотом и за героем.
  • Простая 2D графика.
  • В игре представлено сотни различных уровней. От простых до очень сложных.
  • Два режима игры: классический и KGoldrunner-mode, в котором враги более умные.
  • Управление выполняется с помощью клавиатуры и мыши.
  • Сохранение и загрузка игры.
  • Поддерживается изменение темы оформления.
  • Воспроизведение решения, подсказки, демонстрация прохождения.
  • Доступен редактор уровней.

    Установка через Flatpak

    Установка:

    flatpak install flathub org.kde.kgoldrunner

    Запуск:

    flatpak run org.kde.kgoldrunner

    Установка через Snap

    sudo snap install kgoldrunner

    Установка в Ubuntu (LinuxMint)

    sudo apt install kgoldrunner

    Установка в ArchLinux (Manjaro)

    sudo pacman -S kgoldrunner

    Установка в Fedora

    sudo dnf install kgoldrunner

    Установка в openSuse

    sudo zypper install kgoldrunner

    Установка в Gentoo

    sudo emerge -a kde-apps/kgoldrunner

Отзывы (0)

Кликните на изображение чтобы обновить код, если он неразборчив