Поскольку CSS не является языком программирования, это файл конфигурации, который содержит переменные данные для вашей программы.
В настоящее время CSS настолько мощен, что вы можете программировать на нем, но это не главное. По сути, это все еще язык таблиц стилей .
Давайте сделаем шаг назад. Представьте, что у нас есть язык программирования, который можно рисовать на экране. Представьте, что мы хотим запрограммировать его для рисования веб-страницы.
Сначала мы вводим тонны магических чисел в наш код. Ширина поля, высота текста, отступы и т. Д. И т. Д.
jump(100) // The margin
drawTable(500, 500)
writeText("Hello World", 12)
Итак, мы извлекаем магические числа и помещаем их поверх нашего файла.
int margin = 100
int table = 500
int text_size = 12
jump(margin) // The margin
drawTable(table, table)
writeText("Hello World", text_size)
Теперь это немного некрасиво. Мы скорее читаем наши переменные номера из файла конфигурации.
margin 100
table 500
text size 12
Мм, это немного неясно ... Что означают эти цифры? Что означают эти имена? Давайте немного формализуем это.
margin_left 10em
table_width 500px
table_height 500px
font_size 12px
Но вы знаете, мы хотим немного расширить нашу программу. Мы также хотим, чтобы он рисовал страницы с несколькими таблицами, страницы без таблиц, страницы с абзацами или кнопками и многое другое. Давайте добавим селекторы в наш файл конфигурации, чтобы мы могли указать, какой абзац должен иметь больший шрифт или другой цвет текста, возможно, мы можем поддерживать вложенные элементы, возможно, мы можем использовать общее свойство в нашем файле конфигурации, а затем переопределить его с помощью определенного один из нескольких вложенных элементов.
Вы чувствуете, куда это идет, в конечном итоге вы получаете CSS. (И браузер, чтобы сделать это.)
Должны ли мы затем добавить возможности в наш файл конфигурации, чтобы мы могли снова избежать магических чисел? Добавить переменные? Добавить файл конфигурации для нашего файла CSS? Это кажется немного бессмысленным, если вы помните, что наш CSS-файл - это уже тот же самый файл конфигурации.
Но это не так, конечно; Ваш CSS-файл становится все больше и больше, и в конечном итоге вы сталкиваетесь с теми же проблемами, что и с оригинальными магическими числами, повторяющимися везде, иногда с небольшими преобразованиями и т. д.
Современный CSS, однако, позволяет многим избежать этого повторения. Вы можете использовать классы, которые применяются ко многим элементам, вы можете установить стиль для всех элементов, div
но затем переопределить один из них, а CSS 3 даже разрешает использование переменных.
Это не означает, что вам нужно начинать использовать CSS-переменную во всех возможных местах. Используйте его там, где это имеет смысл, и используйте его там, где вы избегаете дублирования или когда другие доступные методы также не работают.
В конце концов, вам не нужно слишком много магических чисел в вашем конфигурационном файле :-)