Содержание

CSS | Flexberry PLATFORM Documentation

Краткое описание

CSS (от англ. Cascading Style Sheets — «каскадные таблицы стилей») — это язык иерархических правил (таблиц стилей), используемый для представления внешнего вида документа, написанного на HTML или XML (включая различные языки XML, такие как SVG и XHTML). CSS описывает, каким образом элемент должен отображаться на экране, на бумаге, голосом или с использованием других медиа средств.

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

LESS — препроцессор языка CSS, позволяющий использовать переменные, функции, циклы и другие технологии для упрощения работы со стилями. «Препроцессор» в данном случае означает, что мы имеем дело с динамическим языком стилей, который преобразуется (компилируется) в CSS.

SASS (от англ. Syntactically Awesome Stylesheets — «синтаксически великолепные таблицы стилей») — еще один популярный препроцессор языка CSS.

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

body {
  font-family: Arial, Verdana,  sans-serif; /* Семейство шрифтов */
  font-size: 11pt; /* Размер основного шрифта в пунктах  */
  background-color: #f0f0f0; /* Цвет фона веб-страницы */
  color: #333; /* Цвет основного текста */ 
}
h2 {
  color: #a52a2a; /* Цвет заголовка */
  font-size: 24pt; /* Размер шрифта в пунктах */
  font-family: Georgia, Times, serif; /* Семейство шрифтов */
  font-weight: normal; /* Нормальное начертание текста  */
}
p {
  text-align: justify; /* Выравнивание по ширине */
  margin-left: 60px; /* Отступ слева в пикселах */
  margin-right: 10px; /* Отступ справа в пикселах */
  border-left: 1px solid #999; /* Параметры линии слева */
  border-bottom: 1px solid #999; /* Параметры линии снизу */
  padding-left: 10px; /* Отступ от линии слева до текста  */
  padding-bottom: 10px; /* Отступ от линии снизу до текста  */
}

«Для тех, кто предпочитает один раз увидеть»

Программное обеспечение

Ресурсы

Перейти

Please enable JavaScript to view the comments powered by Disqus.

Статические файлы форм (класс Media) — Документация Django 1.6

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

Именно здесь используются статические файлы формы. Django позволяет привязать различные файлы к форме и виджетам, которым они нужны. Например, если вы желаете использовать календарь для полей с датами, вы можете определить собственный виджет календаря. Этот виджет может требовать для своей работы CSS и JavaScript. При использовании этого виджета на форме, Django может определить необходимые .css и .js файлы и предоставить список имён этих файлов для их включения в код страницы.

Assets and Django Admin

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

Если вам понравились виджеты интерфейса администратора, то используйте их в своих приложениях. Они все расположены в django.contrib.admin.widgets.

Определение статических файлов

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

Рассмотрим простой пример:

from django import forms

class CalendarWidget(forms.TextInput):
    class Media:
        css = {
            'all': ('pretty.css',)
        }
        js = ('animations.js', 'actions.js')

Этот код определяет CalendarWidget, который унаследован от TextInput. Каждый раз, при использовании CalendarWidget на форме, эта форма будет подгружать CSS из файла pretty.css и JavaScript из файлов animations.js и actions.js.

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

>>> w = CalendarWidget()
>>> print(w.media)
<link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>

Ниже приведён список всех возможных вариантов для Media. Ни один из них не является обязательным.

css

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

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

Ключами словаря являются названия типов устройств отображения. Они идентичны типам, с которыми работает CSS: ‘all’, ‘aural’, ‘braille’, ‘embossed’, ‘handheld’, ‘print’, ‘projection’, ‘screen’, ‘tty’ и ‘tv’. Если вам нужны различные стили для разных типов устройств отображения, то укажите список CSS файлов для каждого типа устройств. Следующий пример определяет CSS для вывода на экран и принтер:

class Media:
    css = {
        'screen': ('pretty.css',),
        'print': ('newspaper.css',)
    }

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

class Media:
    css = {
        'screen': ('pretty.css',),
        'tv,projector': ('lo_res.css',),
        'print': ('newspaper.css',)
    }

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

<link href="http://static. example.com/pretty.css" type="text/css" media="screen" rel="stylesheet" />
<link href="http://static.example.com/lo_res.css" type="text/css" media="tv,projector" rel="stylesheet" />
<link href="http://static.example.com/newspaper.css" type="text/css" media="print" rel="stylesheet" />

js

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

extend

Булево значение, определяющее производится ли наследование Media базового класса.

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

>>> class FancyCalendarWidget(CalendarWidget):
...     class Media:
...         css = {
...             'all': ('fancy. css',)
...         }
...         js = ('whizbang.js',)

>>> w = FancyCalendarWidget()
>>> print(w.media)
<link href="http://static.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
<link href="http://static.example.com/fancy.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://static.example.com/actions.js"></script>
<script type="text/javascript" src="http://static.example.com/whizbang.js"></script>

Виджет FancyCalendar наследует все ресурсы от базового виджета. Если такое поведение вам не подходит, то добавьте extend=False к Media:

>>> class FancyCalendarWidget(CalendarWidget):
...     class Media:
...         extend = False
...         css = {
...             'all': ('fancy.css',)
...         }
...         js = ('whizbang.js',)

>>> w = FancyCalendarWidget()
>>> print(w.
media) <link href="http://static.example.com/fancy.css" type="text/css" media="all" rel="stylesheet" /> <script type="text/javascript" src="http://static.example.com/whizbang.js"></script>

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

Определение путей до ресурсов

Пути, используемые для определения ресурсов, могут быть как относительными, так и абсолютными. Если путь начинается с ‘/’, ‘http://‘ или ‘https://‘, то он будет интерпретирован как абсолютный и оставлен в неизменном виде. Все остальные пути будут дополнены соответствующим префиксом.

Как часть приложения staticfiles добавлены два новых параметра конфигурации, которые относятся к «статическим файлам» (изображения, CSS, Javascript и т.д.), необходимым для отображения полной страницы: STATIC_URL и STATIC_ROOT.

Для того, чтобы найти правильный префикс, Django проверит параметр STATIC_URL на равенство с None и, если это так, то автоматически воспользуется параметром MEDIA_URL. Например, если параметр MEDIA_URL для сайта имеет значение ‘http://uploads.example.com/’, а параметр STATIC_URL равен None:

>>> from django import forms
>>> class CalendarWidget(forms.TextInput):
...     class Media:
...         css = {
...             'all': ('/css/pretty.css',),
...         }
...         js = ('animations.js', 'http://othersite.com/actions.js')

>>> w = CalendarWidget()
>>> print(w.media)
<link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://uploads.example.com/animations.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>

Но если параметр STATIC_URL равен ‘http://static.example.com/’:

>>> w = CalendarWidget()
>>> print(w. media)
<link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>

препроцессоры | Руководство LESS (Примеры)

Если рассматривать препроцессоры вместе с CSS, то получается картина более понятная, нежели чем рассматривать понятие препроцессора отдельно.

Определение

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

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

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

При помощи препроцессоров вы можете писать код, который нацелен на:

  • Читабельность для человека
  • Структурированность и логичность
  • Производительность

И это лишь малая часть того, что может дать вам препроцессор. Но не стоит забегать вперёд.

Синтаксический сахар

Перед тем, как перейти к дальнейшему рассмотрению CSS-препроцессоров, давайте обновим наш лексикон новым понятием — «синтаксический сахар».

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

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

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

Какие бывают CSS-препроцессоры?

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

И несколько незначительных для нас игроков:

  • Closure Stylesheets
  • CSS Crush

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

Какой смысл использования препроцессоров?

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

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

CSS — это сложно

Стандартный CSS — это сложно. Синтаксис без использования вложенности, которую предлагают CSS-препроцессоры, просто напросто сложен для зрительного восприятия. Кроме того, нужно помнить имя родителя при вложенности. Отсутствие нормальных переменных и «функций» делает CSS-код грязным и узконаправленным.

Доступная документация

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

Простота использования

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

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

Структура и логичность кода

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

1. Родительский селектор
  1.1. Вложенный селектор
  1.2. Вложенный селектор
    1.2.1. Вложенный селектор
  1.3. Вложенный селектор

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

Примеси

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

Модульность

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

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

Почему бы не подождать развития CSS?

Развитие CSS идёт очень маленькими и неуверенными шагами, так как W3C придерживается приоритета скорости срабатывания CSS (производительности). С одной стороны это правильно и очень важно, но с другой — это отсутствие удобства для разработчиков.

В пример поставлю одну из спецификаций CSS4, которую ввели под давлением разработчиков — селектор по родителю. Столь долгий путь от идеи до принятия решения был из-за того, что W3C считало такой селектор медленным и дальнейшее его использование на сайтах привело бы к диким тормозам. Конечно же, речь идёт о повсеместном применении этого селектора, а не о единичных случаях.

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

Разновидности препроцессоров

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

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

Для полной картины, я хочу привести краткую справку по каждому препроцессору:

Less

Собственно, герой этой книги. Самый популярный на момент написания книги препроцессор. Основан в 2009 году Алексис Сельер (Alexis Sellier) и написан на JavaScript (изначально был написан на Ruby, но Алексис вовремя сделал правильный шаг). Имеет все базовые возможности препроцессоров и даже больше, но не имеет условных конструкций и циклов в привычном для нас понимании. Основным плюсом является его простота, практически стандартный для CSS синтаксис и возможность расширения функционала за счёт системы плагинов.

Sass (SCSS)

Самый мощный из CSS-препроцессоров. Имеет довольно большое сообщество разработчиков. Основан в 2007 году как модуль для HAML и написан на Ruby (есть порт на C++). Имеет куда больший ассортимент возможностей в сравнении с Less. Возможности самого препроцессора расширяются за счёт многофункциональной библиотеки Compass, которая позволяет выйти за рамки CSS и работать, например, со спрайтами в автоматическом режиме.

Имеет два синтаксиса:

  • Sass (Syntactically Awesome Style Sheets) — упрощённый синтаксис CSS, который основан на идентации. Считается устаревшим.
  • SCSS (Sassy CSS) — основан на стандартном для CSS синтаксисе.

Stylus

Самый молодой, но в тоже время самый перспективный CSS-препроцессор. Основан в 2010 году небезызвестной в наших кругах личностью TJ Holowaychuk. Говорят, это самый удобный и расширяемый препроцессор, а ещё он гибче Sass. Написан на JavaScript. Поддерживает уйму вариантов синтаксиса от подобного CSS до упрощённого (отсутствуют :, ;, {} и некоторые скобки).

CSS-свойства и media queries — Help Mail.ru. Для разработчиков

Полный список CSS-свойств и  media queries, которые поддерживает Почта Mail.ru, смотрите на caniemail.com.

CSS-свойства

azimuth

сolumn-rule-color

outline

background

column-rule-style

outline-color

background-blend-mode

column-rule-width

outline-style

background-clip

column-span

outline-width

background-color

column-width

overflow

background-image

columns

overflow-x

background-origin

direction

overflow-y

background-position

display

padding

background-repeat

elevation

padding-bottom

background-size

empty-cells

padding-left

border

float

padding-right

border-bottom

font

padding-top

border-bottom-color

font-family

pause

border-bottom-left-radius

font-feature-settings

pause-after

border-bottom-right-radius

font-kerning

pause-before

border-bottom-style

font-size

pitch

border-bottom-width

font-size-adjust

pitch-range

border-collapse

font-stretch

quotes

border-color

font-style

richness

border-left

font-synthesis

speak

border-left-color

font-variant

speak-header

border-left-style

font-variant-alternates

speak-numeral

border-left-width

font-variant-caps

speak-punctuation

border-radius

font-variant-east-asian

speech-rate

border-right

font-variant-ligatures

stress

border-right-color

font-variant-numeric

table-layout

border-right-style

font-weight,height

text-align

border-right-width

image-orientation

text-combine-upwrite

border-spacing

image-resolution

text-decoration

border-style

isolation

text-decoration-color

border-top

letter-spacing

text-decoration-line

border-top-color

line-height

text-decoration-skip

border-top-left-radius

list-style

text-decoration-style

border-top-right-radius

list-style-position

text-emphasis

border-top-style

list-style-type

text-emphasis-color

border-top-width

margin

text-emphasis-style

border-width

margin-bottom

text-indent

box-sizing

margin-left

text-orientation

break-after

margin-right

text-overflow

break-before

margin-top

text-transform

break-inside

max-height

text-underline-position

caption-side

max-width

unicode-bidi

clear

min-height

vertical-align

color

min-width

voice-family

column-count

mix-blend-mode

width

column-fill

object-fit

word-spacing

column-gap

object-position

writing-mode

column-rule

opacity

Media queries

all

min-device-width

max-resolution

screen

max-device-width

and

min-width

orientation only

max-width

min-resolution

prefers-color-scheme

Учебник CSS 3

Введение

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

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

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

Да всё просто.. мир не стоит на месте всё меняется, появляются новые технологии, тенденции.. ну и конечно же веяния моды диктуют вебмастерам всё новые и новые требования к дизайну разрабатываемых ими сайтов.. так с течением времени вебмастерам перестаёт хватать тех инструментов которые есть у них в руках и они вынуждены идти на хитрости, придумывать нестандартные решения, перекладывать какие-то задачи на плечи скриптов или фотошопа. Вот например появилась мода скруглять углы у блоков сайта, а простого инструмента — свойства: border-radius в спецификации CSS 2.1 не было.. вот и приходилось тогда ради этой казалось бы мелочи из шкуры вон лезть делая целую кучу лишних «телодвижений» — посмотрите ради любопытства разве оправдан в этом уроке такой раздутый код? Вот и решили люди всё упростить придумав свойство border-radius которое без труда и велоизобретательства скругляет углы у блочных элементов. Так вот собственно и происходит эволюция CSS и думается мне, что появись повальная новая мода ну, например на вогнутые или ромбоподобные углы у блоков так в будущем в какой нибуть последующей спецификации появятся и соответствующие свойства.

Что позволяет делать CSS 3 ?

Помимо того что спецификация CSS 3 может скруглять углы она позволяет делать ещё целый ряд вещей: создавать градиенты, тени, анимацию на страницах сайта, задавать степень прозрачности тех или иных элементов, так же значительно расширяет набор инструментов при работе с фоном, цветом, текстом – в общем нам будет о чем поговорить в этом учебнике!

Какие браузеры поддерживают CSS 3 ?

Большинство новых свойств вошедших CSS 3 поддерживают все современные браузеры: IE9+, Opera 10+, Firefox 3. 6+, Chrome 12+, Safari 5+ конечно без нюансов о которых в каждом конкретном случае мы поговорим отдельно не обошлось, однако в целом всё исправно работает.

P.S. Разговаривать в этом учебнике мы будем лишь о новых свойствах CSS 3 не вошедших в спецификою CSS 2.1, однако следует понимать, что CSS 3 помимо новых свойств включает в себя так же всё то, что содержит и CSS 2.1 так что если Вы здесь впервые и учите CSS «с нуля» то рекомендую Вам начать обучение с раздела «Учебник CSS».



Визуальное руководство по свойствам Flexbox из CSS3 — CSS-LIVE

Перевод статьи A Visual Guide to CSS3 Flexbox Properties с сайта scotch.io, c разрешения автора— Димитара Стоянова.

Раскладка Flexbox, официально названная CSS-модуль раскладки гибких боксов – новый раскладочный модуль в CSS3, созданный для улучшения выравнивания, направления и порядка элементов в контейнере, даже когда их размер неизвестен или меняется динамически. Основная характерная черта flex-контейнера — это способность изменять ширину или высоту своих дочерних элементов, чтобы как можно лучше заполнить доступную область на экранах разной ширины.

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

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

Основы

Прежде чем начать описание свойств flexbox, давайте немного познакомимся с основами модели flexbox. Flex-раскладка состоит из родительского контейнера, именуемого flex-контейнером, и его непосредственных дочерних элементов – flex-элементов.

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

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

Браузеры с поддержкой последней спецификации flexbox:

  • Chrome 29+
  • Firefox 28+
  • Internet Explorer 11+
  • Opera 17+
  • Safari 6. 1+ (с префиксом -webkit-)
  • Android 4.4+
  • iOS 7.1+ (с префиксом -webkit-)

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

Применение

Чтобы запустить механизм flexbox-раскладки, просто установите свойство display для родительского HTML-элемента:

.flex-container {

 display: -webkit-flex; /* Safari */

 display: flex;

}

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

.flex-container {

 display: -webkit-inline-flex; /* Safari */

 display: inline-flex;

}

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

Есть несколько способов сгруппировать свойства flexbox и безусловно самый лёгкий способ, который я обнаружил, чтобы понять возможности flexbox и их использование – это разделить их на две группы, одну для flex-контейнера, а другую для flex-элементов. Ниже объясняется всё о них и то, как они влияют на раскладку визуально.

Свойства flexbox для контейнера

flex-direction

Это свойство указывает, как flex-элементы выкладываются во flex-контейнере, путём установки направления главной оси flex-контейнера. Они могут выкладываться в двух главных направлениях, горизонтально, как строки и вертикально, как колонки.

Значения:

.flex-container {

 -webkit-flex-direction: row; /* Safari */

 flex-direction: row;

}

С направлением row flex-элементы укладываются в ряд слева направо в ltr-контексте.

.flex-container {

 -webkit-flex-direction: row-reverse; /* Safari */

 flex-direction: row-reverse;

}

С направлением row-reverse flex-элементы укладываются в ряд справа налево в ltr-контексте.

.flex-container {

 -webkit-flex-direction: column; /* Safari */

flex-direction: column;

}

С направлением column flex-элементы укладываются в колонку сверху вниз.

.flex-container {

 -webkit-flex-direction: column-reverse; /* Safari */

 flex-direction: column-reverse;

}

С направлением column-reverse flex-элементы укладываются в колонку снизу вверх.

Свойство по умолчанию: row

Замечание: row и row-reverse зависят от режима письма, поэтому в rtl-контексте они соответственно будут перевёрнуты.

flex-wrap

Первоначальная идея flexbox — контейнер для установки его элементов в одну единственную строку. Свойство flex-wrap управляет тем, как flex-контейнер будет выкладывать свои элементы — в одну строку или в несколько, и направлением, в котором будут укладываться новые строки.

Значения:

.flex-container {

 -webkit-flex-wrap: nowrap; /* Safari */

 flex-wrap: nowrap;

}

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

.flex-container {

 -webkit-flex-wrap: wrap; /* Safari */

 flex-wrap: wrap;

}

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

.flex-container {

 -webkit-flex-wrap: wrap-reverse; /* Safari */

 flex-wrap: wrap-reverse;

}

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

Значение по умолчанию: nowrap

Замечание: эти свойства зависят от режима письма, поэтому в rtl-контексте они соответственно будут перевёрнуты.

flex-flow

Это свойство – сокращённая запись для свойств flex-direction и flex-wrap.

Значения:

.flex-container {

 -webkit-flex-flow: <flex-direction> || <flex-wrap>; /* Safari */

 flex-flow: <flex-direction> || <flex-wrap>;


Значение по умолчанию: row nowrap

justify-content

Свойство justify-content выравнивает flex-элементы по главной оси текущей строки flex-контейнера. Оно помогает распределить оставшееся свободное пространство, в случаях, если все flex-элементы в строке негибкие, или гибкие, но достигли своего максимального размера.

Значения:

.flex-container {

 -webkit-justify-content: flex-start; /* Safari */

 justify-content: flex-start;

}

Flex-элементы выравниваются по левой стороне flex-контейнера в контексте ltr.

.flex-container {

 -webkit-justify-content: flex-end; /* Safari */

 justify-content: flex-end;

}

Flex-элементы выравниваются по правой стороне flex-контейнера в контексте ltr.

.flex-container {

 -webkit-justify-content: center; /* Safari */

 justify-content: center;

}

Flex-элементы выравниваются по центру flex-контейнера.

.flex-container {

 -webkit-justify-content: space-between; /* Safari */

 justify-content: space-between;

}

Flex-элементы отображаются с равным интервалом между ними, а первый и последний flex-элементы выравниваются по краям flex-контейнера.

.flex-container {

 -webkit-justify-content: space-around; /* Safari */

 justify-content: space-around;

}

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

Значение по умолчанию: flex-start

align-items

Flex-элементы могут быть выровнены вдоль поперечной оси текущей строки flex-контейнера, подобно justify-content, но в перпендикулярном направлении. Это свойство устанавливает выравнивание по умолчанию для всех flex-элементов, в том числе и для анонимных flex-элементов.

Значения:

.flex-container {

 -webkit-align-items: stretch; /* Safari */

 align-items: stretch;

}

Flex-элементы заполняют всю высоту (или ширину) от поперечного начала к поперечному концу flex-контейнера.

.flex-container {

 -webkit-align-items: flex-start; /* Safari */

 align-items: flex-start;

}

Flex-элементы прижимаются к поперечному началу flex-контейнера.

.flex-container {

 -webkit-align-items: flex-end; /* Safari */

 align-items: flex-end;

}

Flex-элементы прижимаются к поперечному концу flex-контейнера.

.flex-container {

 -webkit-align-items: center; /* Safari */

 align-items: center;

}

Flex-элементы укладываются по центру поперечной оси flex-контейнера.

.flex-container {

 -webkit-align-items: baseline; /* Safari */

 align-items: baseline;

}

Flex-элементы выравниваются по базовой линии.

Значение по умолчанию: stretch

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

align-content

Свойство align-content выравнивает строки flex-контейнера во flex-контейнере, когда есть дополнительное пространство по поперечной оси, подобно тому, как justify-content выравнивает отдельные элементы по главной оси.

Значения:

.flex-container {

 -webkit-align-content: stretch; /* Safari */

 align-content: stretch;

}

Flex-элементы отображаются с распределённым пространством после каждого ряда flex-элементов.

(прим. перев.: такая картина, как на рисунке, будет только при значении align-items: flex-start. Корректнее было бы сказать, что align-content: stretch поровну делит общую высоту контейнера между всеми строками флекс-элементов, а внутри каждой строки они выравниватся с помощью align-items, так же как и в случае одной строки. )

.flex-container {

 -webkit-align-content: flex-start; /* Safari */

 align-content: flex-start;

}

Ряды flex-элементы прижаты к поперечному началу flex-контейнера.

.flex-container {

 -webkit-align-content: flex-end; /* Safari */

 align-content: flex-end;

}

Ряды flex-элементы прижаты к поперечному концу flex-контейнера.

.flex-container {

 -webkit-align-content: center; /* Safari */

 align-content: center;

}

Ряды flex-элементов укладываются по центру поперечной оси flex-контейнера.

.flex-container {

 -webkit-align-content: space-between; /* Safari */

 align-content: space-between;

}

Ряды flex-элементов отображаются с равным интервалом между ними, а первый и последний ряд выравнивается по краям flex-контейнера.

.flex-container {

 -webkit-align-content: space-around; /* Safari */

 align-content: space-around;

}

Flex-элементы отображаются с равным интервалом вокруг каждого ряда flex-элементов.

Значение по умолчанию: stretch

Замечание: это свойство работает только в случае, если flex-контейнер содержит несколько строк flex-элементов. Если элементы размещены в единственной строке, то это свойство не влияет на раскладку.

Замечания для flex-контейнеров

  • любые свойства column-* не влияют на flex-контейнер.
  • псевдоэлементы ::first-line and ::first-letter не применяются к flex-контейнеру.

Свойства flexbox для элемента

order

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

Значения:

.flex-item {

 -webkit-order: <целое число>; /* Safari */

 order: <целое число>;

}

Flex-элементы могут быть упорядочены при помощи этого простого свойства, без изменения структуры HTML-кода.

Значение по умолчанию: 0

flex-grow

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

Значения:

.flex-item {

 -webkit-flex-grow: <число>; /* Safari */

 flex-grow: <число>;

}

Если всем flex-элементам задано одно и тоже значение flex-grow, тогда все элементы в контейнере будут одинакового размера.

Второй flex-элемент занимает больше места относительно размера других flex-элементов.

Значение по умолчанию: 0

Замечание: отрицательные значения игнорируются.

flex-shrink

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

Значения:

.flex-item {

 -webkit-flex-shrink: <число>; /* Safari */

 flex-shrink: <число>;

}

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

Значение по умолчанию: 1

Замечание: отрицательные значения игнорируются.

flex-basis

Это свойство принимает те же самые значения, что width and height, и указывает исходный главный размер flex-элемента, прежде чем свободное пространство распределится в соответствии с факторами гибкости.

Значения:

.flex-item {

 -webkit-flex-basis: auto | <ширина>; /* Safari */

 flex-basis: auto | <ширина>;

}

flex-basis указывается для 4-го flex-элемента и диктует его исходный размер.

Значение по умолчанию: auto

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

Прим. перев. в текущем редакторском черновике предлагается решить проблему с помощью введения дополнительного значения content: c этим значением базовый главный размер будет определяться по содержимому, а со значением auto — по значению свойства главного размера (width или height в зависимости от flex-direction)

flex

Это свойство – сокращённая запись для свойств flex-grow, flex-shrink и flex-basis. Наряду с другими значениями, его можно установить также в auto (1 1 auto) и none (0 0 auto).

.flex-item {

 -webkit-flex: none | auto | [ <flex-grow> <flex-shrink>? || <flex-basis> ]; /* Safari */

 flex: none | auto | [ <flex-grow> <flex-shrink>? || <flex-basis> ];

}

Значение по умолчанию: 0 1 auto

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

align-self

Свойство align-self переопределяет выравнивание по умолчанию (или то, что указано в align-items) для отдельных flex-элементов. Для понимания доступных значений смотрите пояснения align-items для flex-контейнера.

Значения:

.flex-item {

 -webkit-align-self: auto | flex-start | flex-end | center | baseline | stretch; /* Safari */

 align-self: auto | flex-start | flex-end | center | baseline | stretch;

}

Для 3-го и 4-го элемента переопределено выравнивание при помощи свойства align-self.

Значение по умолчанию: auto

Замечание: значение auto для align-self вычисляется как значение align-items родительского элемента, либо stretch, если родительского элемента нет.

Замечания для flex-элементов

  • float, clear и vertical-align не влияют на flex-элемент и не вырывают его из потока.

Игровая площадка с Flexbox

Здесь представлена площадка для игр с flexbox, где можно поиграть с различными flex-свойствами и изучить силу раскладки flexbox. Комбинируйте некоторые flex-свойства, чтобы получить сложные раскладки.

See the Pen yNNZxr by Ilya Streltsyn (@SelenIT) on CodePen.

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

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

Методология CSS-модулей

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

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

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

Что такое CSS-модуль ?

Начнем с определения из официального репозитория проекта:

CSS-модуль это файл CSS, в котором названия классов и анимаций по умолчанию заданы локально.

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

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

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

CSS-модули надо подключать в сборочный процесс, это значит, что они не работают сами по себе. Плагины есть для webpack или Browserify. На базовом уровне это работает так: при импорте файла в модуль JavaScript (например, в компонент React), CSS-модули переопределят объект с названиями классов из файла в динамически задаваемые пространства имен классов, которые можно использовать как строки в JavaScript. Проиллюстрируем это на примере:

Ниже показан очень простой файл CSS. Класс .base не является уникальным в проекте и это не то название класса, которое будет присвоено элементу. Это своего рода псевдоним внутри таблицы стилей, который будет использован в модуле JavaScript.

.base {
  color: deeppink;
  max-width: 42em;
  margin: 0 auto;
}

И вот его использование в тестовом компоненте JavaScript:

import styles from './styles.css';

element.innerHTML = `<div>
  CSS Modules are fun.
</div>`;

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

<div>CSS Modules are fun.</div>
._20WEds96_Ee1ra54-24ePy {
  color: deeppink;
  max-width: 42em;
  margin: 0 auto;
}

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

Возможные возражения

Итак, мы разобрались, как это работает. И теперь вы думаете: “Что же с этим делать? Ведь это…”. ОК, я вас понимаю. Сейчас мы разберем все возражения по отдельности.

Это выглядит ужасно!

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

Их трудно отлаживать!

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

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

Это препятствует многократному использованию стилей

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

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

:global(.clearfix::after) {
  content: '';
  clear: both;
  display: table;
}

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

.base {
  composes: appearance from '../AnoherModule/styles.css';
}

Они требуют webpack, Browserify или другие инструменты?

Точно также как требуется Sass для компиляции .scss в обычный CSS, PostCSS необходим для обработки стилей, чтобы сделать их понятными браузеру. От этапа сборки никуда не деться.

Почему мы вообще это обсуждаем?

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

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

Начало работы с CSS-модулями

Как уже было сказано, нам нужен webpack или Browserify для работы CSS-модулей.

Webpack

Начнем с версии для webpack. В файл webpack.config.js добавьте следующую конфигурацию, чтобы webpack обрабатывал файлы CSS с помощью CSS-модулей:

{
  test: /\.css$/,
  loader: 'style-loader!css-loader?modules'
}

С такой настройкой полученные стили будут размещаться внутри элемента <style> на странице. Это не самое лучшее решение, поэтому мы сконфигурируем вывод итоговых стилей в отдельный файл благодаря плагину извлечения текста для webpack:

{
  test: /\.css$/,
  loader: ExtractTextPlugin.extract('style-loader', 'css-loader?modules')
}

Этого достаточно для работы с webpack.

Browserify

Я всегда использовал Browserify только через командную строку, так что это оказалось немного сложнее. Я добавил скрипт npm в файл package.json:

{
  "scripts": {
    "build": "browserify -p [ css-modulesify -o dist/main.css ] -o dist/index.js src/index.js"
  }
}

Эта строчка сообщает Browserify, что надо трансформировать src/index.js, в dist/index.js и скомпилировать файл dist/main.css с помощью плагина css-modulesify. Если вы хотите добавить автопрефиксер, то вы можете завершить команду так:

{
  "scripts": {
    "build": "browserify -p [ css-modulesify --after autoprefixer -o dist/main. css ] -o dist/index.js src/index.js"
  }
}

Как видите, вы можете использовать опцию --after для обработки стилей после их компиляции.

Заключение

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

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

В качестве дальнейшего чтения по теме я рекомендую введение в CSS-модули от Глена Мэддерна, автора этого проекта.

CSS: каскадные таблицы стилей | MDN

Каскадные таблицы стилей ( CSS ) — это язык таблиц стилей, используемый для описания представления документа, написанного в HTML или XML (включая диалекты XML, такие как SVG, MathML или XHTML). CSS описывает, как элементы должны отображаться на экране, на бумаге, в речи или на других носителях.

CSS является одним из основных языков открытого Интернета и стандартизирован для всех веб-браузеров в соответствии со спецификациями W3C.Ранее разработка различных частей спецификации CSS велась синхронно, что позволяло создавать версии последних рекомендаций. Возможно, вы слышали о CSS1, CSS2.1, CSS3. Однако CSS4 так и не стал официальной версией.

Начиная с CSS3, объем спецификации значительно расширился, и прогресс по различным модулям CSS стал настолько отличаться, что стало более эффективно разрабатывать и выпускать рекомендации отдельно для каждого модуля. Вместо управления версиями спецификации CSS, W3C теперь периодически делает снимок последнего стабильного состояния спецификации CSS.

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

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

Начать

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

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

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

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

Стиль текста
После изучения основ языка CSS следующая тема CSS, на которой вы должны сосредоточиться, — это стилизация текста — одна из самых распространенных вещей, которые вы будете делать с помощью CSS. Здесь мы рассмотрим основы стилизации текста, включая настройку шрифта, полужирности, курсива, межстрочного и буквенного интервала, теней и других функций текста. В завершение модуля мы рассмотрим применение пользовательских шрифтов к вашей странице, а также стили списков и ссылок.
Макет CSS
На этом этапе мы уже рассмотрели основы CSS, то, как стилизовать текст, и как стилизовать и манипулировать блоками, внутри которых находится ваш контент.Теперь пришло время посмотреть, как разместить ваши блоки в нужном месте по отношению к области просмотра и друг к другу. Мы рассмотрели необходимые предварительные условия, поэтому теперь мы можем углубиться в макет CSS, изучить различные настройки отображения, современные инструменты макета, такие как flexbox, CSS-сетку и позиционирование, а также некоторые устаревшие методы, о которых вы, возможно, все еще захотите узнать.
Используйте CSS для решения общих проблем
Этот модуль предоставляет ссылки на разделы контента, объясняющие, как использовать CSS для решения общих проблем при создании веб-страницы.
  • Справочник по CSS: Этот исчерпывающий справочник для опытных веб-разработчиков описывает все свойства и концепции CSS.
  • Ключевые концепции
  • CSS:

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

CSS-расширений Mozilla — CSS: каскадные таблицы стилей

Приложения

Mozilla, такие как Firefox, поддерживают ряд специальных расширений Mozilla для CSS , включая свойства, значения, псевдоэлементы и псевдоклассы, at-правила и медиа-запросы. Эти расширения имеют префикс -moz- .

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

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

  • A

  • -moz-animation Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-animation-delay Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Префиксная версия все еще принимается]
  • -moz-animation-direction Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-animation-duration Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-animation-fill-mode Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-animation-iteration-count Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Префиксная версия все еще принимается]
  • -moz-animation-name Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-animation-play-state Этот устаревший API больше не должен использоваться, но, вероятно, будет работать. [Префиксная версия все еще принимается]
  • -moz-animation-timer-function Этот устаревший API больше не следует использовать, но, вероятно, он все еще будет работать. [Префиксная версия все еще принимается]
  • -moz-appearance Это экспериментальный API, который не следует использовать в производственном коде.
  • B

  • -moz-backface-visibility Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-background-clip Устарело, начиная с Gecko 2
  • -moz-background-origin Устарело, начиная с Gecko 2
  • -moz-background-inline-policy Устарело, начиная с Gecko 32 [Заменено стандартной версией box-decoration-break ]
  • -moz-background-size Устарело, начиная с Gecko 2
  • -moz-border-end Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Заменено стандартной версией border-inline-end ]
  • -moz-border-end-color Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией border-inline-end-color ]
  • -moz-border-end-style Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией border-inline-end-style ]
  • -moz-border-end-width Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией border-in-line-end-width ]
  • -moz-border-image Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.
  • -moz-border-start Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией border-inline-start ]
  • -moz-border-start-color Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Заменено стандартной версией border-inline-start-color ]
  • -moz-border-start-style Этот устаревший API больше не должен использоваться, но, вероятно, будет работать. [Заменено стандартной версией border-inline-start-style ]
  • -moz-border-start-width Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией border-inline-start-width ]
  • -moz-box-sizing Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • С

  • clip-path Это экспериментальный API, который не следует использовать в производственном коде. [Применимо к более чем SVG]
  • -moz-column-count Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-column-fill Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-column-gap Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Префиксная версия все еще принимается]
  • -moz-column-width Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-column-rule Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-column-rule-width Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-column-rule-style Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Префиксная версия все еще принимается]
  • -moz-column-rule-color Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-context-properties Это экспериментальный API, который не следует использовать в производственном коде.
  • F – M

  • filter Это экспериментальный API, который не следует использовать в производственном коде. [Применимо к более чем SVG]
  • -moz-font-feature-settings Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-font-language-override Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-hyphens Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-margin-end Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией margin-inline-end ]
  • -moz-margin-start Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Заменено стандартной версией margin-inline-start ]
  • маска Это экспериментальный API, который не следует использовать в производственном коде. [Применимо к более чем SVG]
  • O

  • -moz-opacity Устарело, начиная с Gecko 1. 9.1
  • -moz-outline Устарело, начиная с Gecko 1.9.2
  • -moz-outline-color Устарело, начиная с Gecko 1.9.2
  • -moz-outline-offset Устарело, начиная с Gecko 1.9,2
  • -moz-outline-style Устарело, начиная с Gecko 1.9.2
  • -moz-outline-width Устарело, начиная с Gecko 1.9.2
  • P

  • -moz-padding-end Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Заменено стандартной версией padding-inline-start ]
  • -moz-padding-start Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Заменено стандартной версией padding-inline-end ]
  • -moz-перспектива Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-перспектива-origin Этот устаревший API больше не следует использовать, но, вероятно, он все еще будет работать. [Префиксная версия все еще принимается]
  • события-указатели Это экспериментальный API, который не должен использоваться в производственном коде.[Применимо к более чем SVG]
  • T – U

  • -moz-tab-size Это экспериментальный API, который не следует использовать в производственном коде.
  • -moz-text-align-last Устарело с Gecko 53
  • -moz-text-decoration-color Устарело, начиная с Gecko 39
  • -moz-text-decoration-line Устарело, начиная с Gecko 39
  • -moz-text-decoration-style Устарело, начиная с Gecko 39
  • -moz-text-size-adjust Это экспериментальный API, который не следует использовать в производственном коде.
  • -moz-transform Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-transform-origin Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-transform-style Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-transition Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.[Префиксная версия все еще принимается]
  • -moz-transition-delay Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-transition-duration Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-transition-property Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-transition-timer-function Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать. [Префиксная версия все еще принимается]
  • -moz-user-select Это экспериментальный API, который не следует использовать в производственном коде.

Глобальные значения

-moz-appearance
  • кнопка
  • кнопка со стрелкой вниз
  • кнопка-стрелка-вперед
  • кнопка-стрелка-предыдущий
  • кнопка со стрелкой вверх
  • пуговица с фаской
  • флажок
  • чекбокс-контейнер
  • галочка-метка
  • checkmenuitem
  • диалог
  • групповой ящик
  • список
  • стрелка меню
  • menucheckbox
  • изображение меню
  • элемент меню
  • текст меню
  • менюлист
  • кнопка меню
  • текст-менюлист
  • текстовое поле меню
  • всплывающее меню
  • меню радио
  • разделитель меню
  • -moz-mac-unified-toolbar
  • -моз-беспроигрышное-стекло
  • -moz-win-browsertabbar-toolbox
  • -moz-win-communications-набор инструментов
  • -моз-вин-стекло
  • -moz-win-media-toolbox
  • -moz-окно-кнопочный ящик
  • -moz-окно-кнопка-поле-развернуто
  • -moz-окно-кнопка-закрыть
  • -moz-окно-кнопка-развернуть
  • -moz-окно-кнопка-свернуть
  • -moz-окно-кнопка-восстановить
  • -moz-окно-заголовок
  • -moz-window-titlebar-maximized
  • индикатор выполнения
  • прогрессчанк
  • радио
  • радиоконтейнер
  • радио-метка
  • радиоменюйтем
  • изменение размера
  • размер панели
  • масштаб по горизонтали
  • масштабирование большого пальца руки по горизонтали
  • масштабирование пальцем по вертикали
  • вертикальная шкала
  • полоса прокрутки, кнопка вниз
  • полоса прокрутки - левая кнопка
  • полоса прокрутки - правая
  • полоса прокрутки, кнопка вверх
  • маленькая полоса прокрутки
  • scrollbarthumb-горизонтальный
  • scrollbarthumb-вертикальный
  • scrollbartrack горизонтальный
  • scrollbartrack вертикальный
  • сепаратор
  • вертушка
  • поворотная кнопка вниз
  • текстовое поле счетчика
  • поворотная кнопка
  • строка состояния
  • панель состояния
  • вкладка
  • панели вкладок
  • табуляция-стрелка-прокрутка-назад
  • табуляция-стрелка-прокрутка вперед
  • текстовое поле
  • многострочное текстовое поле
  • панель инструментов
  • панель инструментов, раскрывающееся меню
  • Ящик для инструментов
  • всплывающая подсказка
  • treeheadercell
  • treeheadersortarrow
  • элемент дерева
  • ветвистая
  • ветвисто открытый
  • вид дерева
  • окно

фоновое изображение
  • Градиенты
  • Элементы
  • Дополнительные изображения

цвет границы

стиль границы и стиль контура
  • -moz-bg-inset Устарело, начиная с Gecko 1. 9
  • -moz-bg-outset Устарело, начиная с Gecko 1.9
  • -moz-bg-solid Устарело с Gecko 1.9

<цвет> ключевых слов
  • -moz-activehyperlinktext
  • -moz-hyperlinktext
  • -moz-visithyperlinktext
  • -moz-button по умолчанию
  • -moz-застежка-пуговица
  • -moz-buttonhovertext
  • -moz-default-background-color
  • -moz-default-color
  • -moz-cellhighlight
  • -moz-cellhighlighttext
  • -моз-поле
  • -moz-fieldtext
  • -moz-диалог
  • -moz-dialogtext
  • -moz-dragtargetzone
  • -moz-mac-accentdarkestshadow
  • -moz-mac-accentdarkshadow
  • -moz-mac-accentface
  • -moz-mac-accentlightesthighlight
  • -moz-mac-accentlightshadow
  • -moz-mac-accentregularhighlight
  • -moz-mac-accentregularshadow
  • -moz-mac-chrome-active
  • -moz-mac-chrome-неактивный
  • -moz-mac-фокусировка
  • -moz-mac-menuselect
  • -moz-mac-menushadow
  • -moz-mac-menutextselect
  • -moz-menuhover
  • -moz-menuhovertext
  • -moz-win-communicationstext
  • -moz-win-mediatext
  • -moz-nativehyperlinktext

дисплей
  • -moz-box Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.
  • -moz-inline-block Это устаревший API, работа которого больше не гарантируется.
  • -moz-inline-box Этот устаревший API больше не следует использовать, но, вероятно, он по-прежнему будет работать.
  • -moz-inline-grid Устарело с Gecko 62
  • -moz-inline-stack Устарело с Gecko 62
  • -moz-inline-table Это устаревший API, работа которого больше не гарантируется.
  • -moz-grid Устарело с Gecko 62
  • -moz-grid-group Устарело с Gecko 62
  • -moz-grid-line Устарело, начиная с Gecko 62
  • -moz-groupbox Это устаревший API, работа которого больше не гарантируется.
  • -moz-deck Устарело с Gecko 62
  • -moz-popup Устарело, начиная с Gecko 62
  • -moz-stack Устарело, начиная с Gecko 62
  • -moz-marker Устарело с Gecko 62

пустые ячейки
  • -moz-show-background (значение по умолчанию в режиме причуд)

шрифт
  • -кнопка moz
  • -moz-info
  • -moz-настольный
  • -moz-dialog (тоже цвет)
  • -моз-документ
  • -моз-рабочее пространство
  • -моз-окно
  • -моз-список
  • -моз-раскрывающееся меню
  • -моз-поле (тоже цветное)

font-family

рендеринг изображения

<длина>

тип списка
  • -moz-арабский-индика
  • -моз-бенгальский
  • -moz-cjk-earthly-branch
  • -moz-cjk-небесный ствол
  • -моз-деванагари
  • -moz-ethiopic-halehame
  • -moz-ethiopic-halehame-am
  • -moz-ethiopic-halehame-ti-er
  • -moz-ethiopic-halehame-ti-et
  • -моз-этиопско-числовой
  • -моз-гуджарати
  • -моз-гурмухи
  • -моз-хангыль
  • -моз-хангыль-согласный
  • -moz-японский-формальный
  • -moz-японский-неформальный
  • -moz-каннада
  • -моз-кхмерская
  • -moz-lao
  • -моз-малаялам
  • -moz-myanmar
  • -моз-рия
  • -моз-персидский
  • -moz-simp-китайский формальный
  • -moz-simp-китайский-неформальный
  • -моз-тамильский
  • -моз-телугу
  • -moz-тайский
  • -moz-trad-китайский-формальный
  • -moz-trad-китайский-неформальный
  • -moz-urdu

переполнение

выравнивание текста
  • -моз-центр
  • -моз-левый
  • -моз-правый

оформление текста

-moz-user-select

ширина , минимальная ширина и максимальная ширина
  • -моз-мин-содержание
  • -moz-fit-content
  • -moz-max-content
  • -моз-в наличии

CSS все свойство


Пример

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

div {
цвет фона: желтый;
цвет: красный;
все: начальные;
}

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

Определение и использование

Свойство all сбрасывает все свойства, кроме unicode-bidi и direction к их начальному или унаследованному значению.

Значение по умолчанию: нет
Унаследовано: нет
Анимация: нет. Прочитать о анимационном
Версия: CSS3
Синтаксис JavaScript: объект .style.all = «initial»

Поддержка браузера

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

Имущество
все 37,0 79,0 27,0 9,1 24,0

Синтаксис CSS

все: начальное | наследование | отключено;

Значения свойств

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


CSS · Документы WebPlatform

Сводка

Каскадные таблицы стилей (CSS) — это язык представления веб-контента. Консорциум World Wide Web поддерживает стандарт CSS.

Ознакомьтесь с нашей документацией по CSS

Селекторы CSS

Справочное руководство по всем доступным селекторам CSS.

At-rules

Справочное руководство по различным доступным @правилам CSS (at-rules).

Медиа-запросы

Справочное руководство по различным типам доступных медиа-запросов.

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

Фон

Каскадные таблицы стилей (CSS) — это язык, который применяет представление (стили, макет, анимацию) к разметке содержимого (например, HTML, XHTML, SVG или XML). Это один из основных компонентов открытой веб-платформы.

CSS позволяет вам стилизовать ваш контент с помощью набора селекторов и свойств.

  • Первая версия: Рекомендация CSS 1 была описана Хоконом Виум Ли и Бертом Босом и впервые опубликована в 1996 году.
  • Текущая стабильная версия: рекомендация CSS 2 была впервые опубликована в 1998 году, но не была полностью завершена до 2011 года, несмотря на то, что была фактически стабильной в течение ряда лет до этого.Некоторые модули из CSS3 также стабильны на момент написания (декабрь 2012 г.). См. «Текущая и будущая работа».
  • Текущая и будущая работа: Рабочая группа CSS работает над рядом «модулей», которые описывают различные части технологического набора, известного как CSS3. Некоторые из этих модулей являются стабильными, а некоторые находятся в экспериментальном состоянии и не имеют большой поддержки в разных браузерах. Также ведется работа над различными модулями CSS4, хотя пройдет некоторое время, прежде чем они будут готовы к производственной работе.См. Страницу текущей работы рабочей группы CSS для получения дополнительной информации о том, какие модули / спецификации находятся на какой стадии завершения.

Вклад в технологию CSS

Разработкой CSS занимается рабочая группа CSS. Чтобы узнать больше, в том числе о том, как принять участие, перейдите на домашнюю страницу рабочей группы CSS. Для предоставления отзывов и вопросов, связанных с внесением вклада в спецификации, хорошее место — это список рассылки в стиле www. Имейте в виду, что это не подходящее место для вопросов типа «как использовать CSS для стилизации моей веб-страницы».Список всех свойств CSS можно найти здесь Свойства CSS3 Ссылка

Создание справочных страниц CSS

По мере развития CSS мы продолжим улучшать документацию. В настоящее время мы работаем над свойствами CSS. Чтобы присоединиться к этому проекту, см. WPD / CSS_property_guide.

Указатель всех тем CSS

Список свойств CSS, приведенный ниже, включает только рекомендованные W3C значения или возможные / предлагаемые рекомендации. Используйте страницу Special: PrefixIndex / css / search, чтобы найти все статьи, организованные на этой странице, или страницу категорий CSS для всех связанных с CSS страниц в вики.

Подразделы CSS

Список всех стандартных свойств CSS

Опции для программного документирования CSS

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

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

Недавно я был вовлечен в проект с более чем 1500 страницами документации, написанной в… Microsoft Word. Он был устаревшим и неорганизованным. Настоящая катастрофа. Должен быть способ лучше!

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

Подобно JSDoc, в мире CSS есть несколько способов описать ваши компоненты прямо в исходном коде как / * комментарии * / . После того, как код будет описан с помощью подобных комментариев, можно будет сгенерировать руководство по стилю для проекта.Надеюсь, я достаточно подчеркнул слово , живущее , поскольку считаю, что это ключ к успешному обслуживанию. Исходя из того, что я испытал, такой способ документирования кода дает ряд преимуществ, которые вы сразу почувствуете:

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

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

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

Теперь давайте взглянем на самые популярные варианты документации в CSS:

Таблицы стилей Knyle (KSS)

KSS — это формат спецификации документации и руководства по стилю. Он пытается предоставить методологию для написания поддерживаемого документированного CSS внутри команды. Большинство разработчиков в моей сети используют его из-за его популярности, выразительности и простоты.

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

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

  // Основная кнопка
//
// Используйте этот класс для основной кнопки призыва к действию.
// Обычно вы хотите использовать элемент `
//  Нажми меня 
//
// Styleguide Components.Buttons.Primary
.btn - primary {
    отступ: 10 пикселей 20 пикселей;
    преобразование текста: прописные буквы;
    font-weight: жирный;
    цвет фона: желтый;
}  

Бенджамин Робертсон подробно описывает свой опыт работы с kss-node, который является Node. js реализация KSS. Кроме того, существует множество генераторов, которые используют нотацию KSS для создания руководств по стилю из таблиц стилей. Стоит упомянуть популярный вариант — генератор стилей SC5. Более того, их синтаксис документирования расширен опциями для введения разметки оболочки, игнорирования обрабатываемых частей таблицы стилей и других полезных улучшений.

Другие иногда полезные (но, на мой взгляд, в основном модные) вещи:

  • С помощью инструмента дизайнера вы можете редактировать переменные Sass, Less или PostCSS непосредственно через веб-интерфейс.
  • На каждом устройстве есть предварительный просмотр стилей в реальном времени.

Кто знает, в некоторых случаях они могут быть полезны. Вот интерактивная демонстрация SC5.

Руководство по стилю GitHub (Primer) создано на основе KSS.

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

MDCSS

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

  / * ---
title: Основная кнопка
раздел: Кнопки
---

Используйте этот класс для основной кнопки призыва к действию.
Обычно вам нужно использовать элемент 
 Нажми меня 
``
* /
.btn - primary {
    преобразование текста: прописные буквы;
    font-weight: жирный;
    цвет фона: желтый;
}  

Содержимое раздела документации анализируется Markdown и превращается в HTML, что очень приятно! Кроме того, содержимое раздела может быть автоматически импортировано из другого файла, что очень полезно для более подробных объяснений:

  / * ---
title: Кнопки
импорт: buttons. md
--- * /  

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

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

Ядро

Nucleus — это живой генератор руководств по стилю для компонентов на основе атомарного дизайна. Nucleus считывает информацию из аннотаций DocBlock.

Atomic Design — это руководство по написанию модульных стилей, проектирующих различные уровни сложности в (био) химической шкале. Это приводит к низкой специфичности селектора и позволяет составлять сложные объекты из простых элементов.Если вы плохо знакомы с атомарным дизайном, вначале процесс обучения может показаться несколько утомительным. Сущности для Nucleus включают:

  • Нуклиды: не могут использоваться напрямую в их собственных стилях (миксины, настройки, переменные).
  • Атомы: одноклассный элемент или правила селектора (кнопки, ссылки, заголовки, вводы…).
  • Molecules: одно или несколько вложенных правил, но каждое из них не более чем Atom
  • Структуры: самые сложные типы, могут состоять из нескольких молекул или других структур.
  • … и еще несколько.

Пример кнопки, который мы используем в этой статье, обозначает Atom — очень простой элемент таблицы стилей (одноклассный элемент или селектор). Чтобы пометить его как атом, нам нужно пометить его тегом @atom , за которым следует имя компонента:

  / **
 * Кнопка @atom
 * @section Navigation> Кнопки
 * @modifiers
 * .btn - primary - используйте этот класс для основной кнопки призыва к действию.* @markup
 * 
 * 
 *  Нажми меня 
 * /
.btn - primary {
    преобразование текста: прописные буквы;
    font-weight: жирный;
    цвет фона: желтый;
}  

Вот интерактивная демонстрация.

Заключение

Еще не было явного победителя с точки зрения инструмента или общего определения синтаксиса для программного документирования CSS.

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

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

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

Каскадных таблиц стилей (CSS) | Документация разработчика Magento 2

Обзор

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

Приложение

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

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

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

Что нужно помнить при работе со стилями

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

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

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

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

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

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

  • Используйте критический путь CSS для устранения ресурсов CSS, блокирующих отображение.

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

Изменение стилей: прохождение

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

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

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

      // Основная кнопка
    @ button-primary__color: @ белый цвет;
    @ button-primary__hover__color: @ белый цвет;
    @ button-primary__background: @ цвет-оранжевый-красный1;
    @ button-primary__hover__background: @ цвет-оранжевый-красный4;
    @ button-primary__border: сплошной 1px @ color-orange-red2;
    @ button-primary__hover__border: сплошной 1px @ color-orange-red2;
      

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

В этой главе

Другие темы этой главы описывают следующее:

Структура CSS — Документы WooCommerce

Внутри каталога assets / css / вы найдете таблицы стилей, отвечающие за стили макета WooCommerce по умолчанию.

Ищите файлы woocommerce.scss и woocommerce.css .

  • woocommerce.css — это минимизированная таблица стилей — это CSS без пробелов, отступов и т. Д. Это позволяет очень быстро загружать файл. Этот файл ссылается на плагин и объявляет все стили WooCommerce.
  • woocommerce.scss не используется напрямую плагином, а командой разработчиков WooCommerce. Мы используем SASS в этом файле для упрощения и ускорения сценария CSS в первом файле.

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

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

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

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

 а. Кнопка,
button.button,
input.button,
#review_form #submit {
  фон: черный;
} 

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

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

Если вы вносите свой вклад в ядро ​​WooCommerce и вам нужно отредактировать стиль, отредактируйте файлы Sass, а затем скомпилируйте их с помощью Grunt.