Css стили: Базовые CSS-стили различных элементов / Хабр

Стили HTML — CSS

❮ Предыдущая Следующая Глава ❯


Манипулирование текст

Цвета, Ящики


Стайлинг HTML с CSS

CSS означает каскадные таблицы стилей

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

  • Инлайн — с использованием атрибута стиля в HTML — элементов
  • Внутренний — с помощью <style> элемент в HTML <head> раздел
  • Внешний — с помощью одного или нескольких внешних CSS файлов

Самый простой способ добавить стиль, чтобы сохранить стили в отдельных CSS-файлов. Но, в этом учебнике мы используем внутренний стиль, потому что это проще показать, и проще для вас, чтобы попробовать это самостоятельно.

Вы можете узнать гораздо больше о CSS в нашем CSS Учебник .


Встроенный Styling (Inline CSS)

Инлайн моделирования используются для применения уникального стиля для одного HTML элемента:

Встроенный стиль использует style атрибут.

Этот пример изменяет цвет текста <h2> элемента в синий:

пример

<h2>This is a Blue Heading</h2>

Попробуй сам «


Внутренний Styling (Internal CSS)

Внутренний стиль используется для определения стиля для одного HTML-страницы.

Внутренний стиль определяется в <head> сечение HTML страницы, в пределах <style> элемента:

пример

<!DOCTYPE html>
<html>
<head>
<style>
body {background-color:lightgrey;}
h2   {color:blue;}
p    {color:green;}
</style>
</head>
<body>

<h2>This is a heading</h2>
<p>This is a paragraph.</p>

</body>
</html>

Попробуй сам «


Внешний стайлинг (External CSS)

Внешний лист стилей используются для определения стиля для многих страниц.

С внешней таблицы стилей, вы можете изменить внешний вид всего веб — сайта путем изменения одного файла!

Для того, чтобы использовать внешнюю таблицу стилей, добавьте ссылку на него в <head> раздел страницы HTML:

пример

<!DOCTYPE html>
<html>
<head>
  <link rel=»stylesheet» href=»styles. css»>
</head>
<body>

<h2>This is a heading</h2>
<p>This is a paragraph.</p>

</body>
</html>

Попробуй сам «

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

Вот как « styles.css » выглядит:

body {
    background-color: lightgrey;
}

h2 {
    color: blue;
}

p {
    color:green;
}


CSS шрифты

CSS color свойство определяет цвет текста , который будет использоваться для элемента HTML.

CSS font-family свойство определяет шрифт , который будет использоваться для элемента HTML.

CSS font-size свойство определяет размер шрифта , который будет использоваться для элемента HTML.

пример

<!DOCTYPE html>
<html>
<head>
<style>
h2 {
    color: blue;
    font-family: verdana;
    font-size: 300%;
}
p  {
    color: red;
    font-family: courier;
    font-size: 160%;
}
</style>
</head>
<body>

<h2>This is a heading</h2>
<p>This is a paragraph. </p>

</body>
</html>

Попробуй сам «


CSS Box Model

Каждый элемент HTML имеет рамку вокруг него, даже если вы не можете увидеть его.

CSS border свойство определяет видимую рамку вокруг HTML элемента:

пример

p {
    border: 1px solid black;
}

Попробуй сам «

CSS padding свойство определяет отступ (space) внутри границы:

пример

p {
    border: 1px solid black;
    padding: 10px;
}

Попробуй сам «

CSS margin свойство определяет запас (space) за пределами границы:

пример

p {
    border: 1px solid black;
    padding: 10px;
    margin: 30px;
}

Попробуй сам «

Примеры CSS выше использования px определить размеры в пикселях.


id Атрибут

Все приведенные выше примеры использования CSS для стилизации HTML-элементы в общем виде.

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

<p>I am different</p>

затем определить стиль для элемента с конкретным id :

пример

#p01 {
    color: blue;
}

Попробуй сам «


class Атрибут

Для того, чтобы определить стиль для особого типа ( class ) элементов, добавить class атрибут к элементу:

<p>I am different</p>

Теперь вы можете определить различные стили для элементов с определенным классом:

пример

p. error {
    color: red;
}

Попробуй сам «

Используйте id для решения single элемента. Используйте class для решения groups элементов.


Краткое содержание главы

  • Используйте HTML style атрибут для встроенного стиля
  • Используйте HTML <style> элемент для определения внутреннего CSS
  • Используйте HTML <link> элемент ссылаться на внешний файл CSS
  • Используйте HTML <head> элемент для хранения <style> и <link> элементы
  • Используйте CSS color свойство для цвета текста
  • Используйте CSS font-family свойства для текстовых шрифтов
  • Используйте CSS font-size свойство для размеров текста
  • Используйте CSS border свойство для видимых границ элементов
  • Используйте CSS padding свойства для пространства внутри границы
  • Используйте CSS margin свойство для пространства за пределами границы

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

Упражнение 1 » Упражнение 2» Упражнение 3 » Упражнение 4» Упражнение 5 » Упражнение 6»


HTML Style Теги

Тег Описание
<style> Определяет информацию о стиле для HTML документа
<link> Определяет связь между документом и внешним ресурсом

❮ Предыдущая Следующая Глава ❯

SVG: Используем стили CSS

Немного о CSS внутри SVG-документа мы упомянули в статье о структуре файла.

Продолжим изучение темы при использовании стандартных стилей CSS.

Фон в SVG является прозрачным. Можно через CSS указать нужный фон.


svg { 
    background: #fcedd6; 
}

Можно вынести свойства в отдельный блок style в html-документе.


<style>
#sample rect {
	fill: yellow;
	stroke: green;
	stroke-width: 4;
	transition: all 350ms;
}

#sample rect:hover {
	fill: magenta;
}
</style>

<svg id="sample" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
    <rect x="4" y="4" />
</svg>

При наведении мыши цвет изменится (мы определили :hover).

Можно сослаться на внешний CSS-файл.


<?xml-stylesheet type="text/css" href="style.css"?>

Элементы SVG могут быть сгруппированы с помощью элемента <g>, который можно использовать как контейнер с общими стилям для всех элементов в группе:


<svg xmlns="http://www. w3.org/2000/svg" viewBox="0 0 200 100">
<g style="fill:red; stroke:blue; stroke-width:4; fill-opacity: 0.5;">
	<rect x="90" y="5"/>
	<circle cx="70" cy="50" r="44"/>
</g>
</svg>

Рассмотрим практичный. Создадим цветочный орнамент.

Измените ширину браузера, чтобы увидеть изменения в SVG-картинке

Фигура состоит из множества элементов path, которым можно присвоить идентификатор id. А затем мы можем настроить нужный элемент через CSS (как внутри SVG, так и в HTML-документе).

Далее, мы можем дать другой цвет нужному элементу, например, нижнему левому фрагменту.


path#left-outer-flourish {
	opacity: 0.6;
	fill: #f00;
}

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


svg#flourish path {
	transition: .6s opacity;

}

@media screen and (max-width: 900px)  {
	path#right-outer-flourish, path#left-outer-flourish { 
		opacity: 0;
	}
}

Если теперь постепенно уменьшать ширину окна браузера, то можно заметить, как исчезают отдельные элементы орнамента.

Источник: the new code – Create Adaptive SVG Illustrations With CSS

Стили можно выносить не только в html-документ или отдельный файл, но и внутри самой SVG-разметки. В веб-документе указывать

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


<svg >
    <title>Светофор</title>
    <style type="text/css">
        rect, circle {
            stroke: black;
            stroke-width: 3;
        }
        .light {
            stroke-width: 2;
        }
    </style>

    <rect x="20" y="20" />
    <g>
        <circle cx="70" cy="80" r="30" />
        <circle cx="70" cy="160" r="30" />
        <circle cx="70" cy="240" r="30" />
    </g>
</svg>
Светофор

В этом примере стиль класса light переопределяет толщину обводки, заданную для фигур rect и circle.

Управление контурами через CSS

Вернуться в раздел SVG

Реклама

каскадных таблиц стилей (CSS) | Commerce Frontend Development

Изменить в GitHubLog проблему

Приложения Adobe Commerce и Magento Source включают Less, препроцессор CSS, упрощающий управление сложными файлами CSS. Чтобы определить стили для магазина, вы можете использовать таблицы стилей как CSS, так и Less.

Приложение Commerce предоставляет встроенную библиотеку Less UI, которую можно дополнительно расширить.

Чтобы настроить стили витрины, необходимо создать собственную тему оформления. Затем вы можете использовать один из следующих подходов:

  • Если ваша тема наследуется от стандартной темы Blank или Luma, вы можете переопределить файлы Less по умолчанию. Например, чтобы изменить значения переменных, используемых в файлах по умолчанию.
  • Создайте свои собственные файлы Less, используя встроенный препроцессор Less.
  • Создавайте собственные файлы CSS, при желании скомпилировав их с помощью стороннего препроцессора CSS.

О чем следует помнить при работе со стилями


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

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

Слияние CSS, минимизация и производительность

Есть несколько вариантов, которые помогут с CSS и производительностью сайта.

  • Объедините файлы CSS, чтобы уменьшить количество HTTP-запросов, необходимых для загрузки страницы.

  • Минификация файлов CSS уменьшает размер отправляемых файлов. Он делает это, удаляя пробелы в файле.

  • Используйте критический путь CSS, чтобы исключить ресурсы CSS, блокирующие рендеринг.

Чтобы включить или отключить эти настройки, перейдите в Администрирование > Магазины > Настройки > Конфигурация > Расширенный > Разработчик > Настройки CSS .

Пошаговое руководство


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

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

  1. Создайте новую тему Orange, которая наследует тему Blank.

  2. В каталог темы Orange добавьте переопределяющий app/design/frontend/ExampleCorp/orange/web/css/source/_theme.less со следующим кодом:

     

    // Основная кнопка @button-primary__color: @цвет-белый; @button-primary__hover__color: @color-white; @button-primary__background: @color-orange-red1; @button-primary__hover__background: @color-orange-red4; @button-primary__border: 1px сплошной @color-orange-red2; @button-primary__hover__border: 1px сплошной @color-orange-red2; Скопировано в буфер обмена

     

    1// Основная кнопка

    2@button-primary__color: @color-white;

    3@button-primary__hover__color: @color-white;

    4@button-primary__background: @color-orange-red1;

    5@button-primary__hover__background: @color-orange-red4;

    6@button-primary__border: 1px сплошной @color-orange-red2;

    7@button-primary__hover__border: 1px сплошной @color-orange-red2;

ExampleCorp хочет изменить цвет основных кнопок на собственный цвет. В каталог оранжевой темы добавьте переопределение файл app/design/frontend/ExampleCorp/orange/web/css/source/_theme.less со следующим кодом:

 

// Основная кнопка @btn-color-text: #2e3138; @btn-color-background: #d5d7dd; @btn-color-background-hover: #d9dbe0; @button-primary__color: @btn-color-text; @button-primary__hover__color: @btn-color-text; @button-primary__background: @btn-color-background; @button-primary__hover__background: @btn-color-background-hover; @button-primary__border: 1px сплошной @btn-color-background; Скопировано в буфер обмена

 

1// Основная кнопка

2@btn-color-text: #2e3138;

3@btn-color-background: #d5d7dd;

4@btn-color-background-hover: #d9dbe0;

5@button-primary__color: @btn-color-text;

6@button-primary__hover__color: @btn-color-text;

7@button-primary__background: @btn-color-background;

8@button-primary__hover__background: @btn-color-background-hover;

9@button-primary__border: 1px сплошной @btn-color-background;

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

Перенос пользовательских шаблонов электронной почты

Краткое руководство

Последнее обновление 03. 04.2023

Было ли это полезно?

Современный сброс CSS/глобальные стили

Введение

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

Долгое время я использовал знаменитый CSS Reset Эрика Мейера. Это солидный кусок CSS, но на данный момент он немного длинноват; он не обновлялся более десяти лет, и очень сильно изменился с тех пор!

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

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

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

Без лишних слов, вот он:

Он относительно короткий, но в этой небольшой таблице стилей упаковано много материала. Давайте погрузимся в это!

Педантичное примечание

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

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

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

Мой сброс CSS может не соответствовать классическому определению «сброса CSS», но я беру на себя эту творческую свободу.

Ссылка на эту рубрику

1. Коробочная модель

Викторина! Измеряя видимой розовой рамкой, насколько широк элемент .box в следующем сценарии, при условии, что никакие другие CSS не применялись?

Наш элемент .box имеет ширину : 100% . Поскольку его родитель имеет ширину 200 пикселей, эти 100% разрешатся в 200 пикселей.

Но где применяется ширина 200 пикселей? По умолчанию этот размер применяется к блоку содержимого .

Если вы не знакомы, «блок содержимого» — это прямоугольник в модели блока, который фактически содержит содержимое внутри границы и отступов:

Объявление width: 100% установит .box Поле содержимого на 200 пикселей. Отступ добавит дополнительные 40 пикселей (по 20 пикселей с каждой стороны). Граница добавляет последние 4 пикселя (по 2 пикселя с каждой стороны). Когда мы посчитаем, видимый розовый прямоугольник будет иметь ширину 244 пикселя.

Когда мы пытаемся втиснуть блок размером 244 пикселя в родителя шириной 200 пикселей, он переполняется:

Code Playground

Результат

Включить клавиша «tab»

Странное поведение, верно? К счастью, мы можем изменить его, установив следующее правило:

При применении этого правила проценты будут разрешаться на основе border-box . В приведенном выше примере наш розовый блок будет иметь размер 200 пикселей, а внутренний блок содержимого уменьшится до 156 пикселей (200 пикселей - 40 пикселей - 4 пикселя).

На мой взгляд, это обязательное правило. Это делает CSS значительно приятнее в работе.

Мы применяем его ко всем элементам и псевдоэлементам, используя селектор подстановочных знаков ( * ). Вопреки распространенному мнению, это неплохо для производительности.

Наследование box-sizing

Я видел в Интернете несколько рекомендаций, как сделать это вместо этого:

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

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

Ссылка на этот заголовок

2. Удалить поля по умолчанию

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

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

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

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

Ссылка на этот заголовок

3. Высота в процентах

Вы когда-нибудь пытались использовать высоту в процентах в CSS, но обнаруживали, что это не имеет никакого эффекта?

Вот пример:

Code Playground

HTML

Hello World

Результат

Включить клавиша 'tab'

Основной элемент имеет height: 100% , но элемент вообще не растет!

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

Ширина элемента рассчитывается на основе его родителя, но высота элемента вычисляется на основе его дочерних элементов .

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

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

Code Playground

HTML

Hello World

Результат

Включить клавиша 'tab'

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

Например, в моих проектах Next.js я обновляю правило следующим образом:

Почему бы не использовать vh?

Вам может быть интересно: зачем вообще возиться с высотой в процентах? Почему бы вместо этого не использовать блок vh ?

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

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

Ссылка на этот заголовок

4 Настройка высоты строки

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

Это безразмерное число представляет собой соотношение, основанное на размере шрифта. Он работает так же, как блок em . При высоте строки , равной 1,2, каждая строка будет на 20% больше, чем размер шрифта элемента.

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

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

Code Playground

Этот абзац имеет 1,5-кратное соотношение

для высоты строки, и кажется, что

неплохо, правда? Я думаю

этот текст разборчив и приятен.

Но это многовато по заголовкам!

Результат

Включить клавишу «Tab»

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

Более разумная высота строки с помощью «calc»

Я экспериментировал с альтернативным способом управления высотой строки. Вот он:

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

Ссылка на эту рубрику

5. Сглаживание шрифта

Хорошо, это немного спорно.

На компьютерах с MacOS браузер будет использовать «субпиксельное сглаживание» по умолчанию. Это метод, направленный на облегчение чтения текста за счет использования цветов R/G/B в каждом пикселе.

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

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

Физическое расположение пиксельных светодиодов также изменилось. Если вы посмотрите на современный монитор под микроскопом, вы больше не увидите упорядоченной сетки линий R/G/B.

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

Как ни странно, браузеры MacOS, такие как Chrome и Safari, по-прежнему используют субпиксельное сглаживание по умолчанию. Нам нужно явно отключить его, установив -webkit-font-smoothing на antialiased .

Вот разница:

Сглаживание

Субпиксельное сглаживание

MacOS — единственная операционная система, использующая субпиксельное сглаживание, поэтому это правило не действует на Windows, Linux или мобильные устройства. Если вы работаете на компьютере MacOS, вы можете поэкспериментировать с рендерингом в реальном времени:

Code Playground

В этом абзаце используется субпиксельное сглаживание по умолчанию.

<р> В этом абзаце не используется субпиксельное сглаживание.

Результат

Включить клавишу «Tab»

Ссылка на этот заголовок

встроенные" элементы. Это означает, что их следует использовать в середине абзаца, например или .

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

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

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

Я также установил max-width: 100% . Это делается для того, чтобы большие изображения не переполнялись, если они помещены в контейнер, который недостаточно широк для их размещения.

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

Если изображение имеет «родной» размер 800×600, элемент также будет иметь ширину 800 пикселей, даже если мы поместим его в родительский элемент шириной 500 пикселей.

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

Ссылка на этот заголовок

7. Наследование шрифтов для элементов управления формы

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

Например,