Синтаксис CSS

Rate this item
(2 votes)

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

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

Сложно? А вот и нет!!! Сейчас покажу...

Для начала синтаксис. Запомните правило CSS - селектор -> { -> свойство -> : -> значение -> ; -> }
Выглядит это так:

p{color:red} /*пропущен знак ; после значения*/
div{height:50px; width:40px;} /*здесь пропустить ";" не получится*/
DIV{height:50px; width:40px;}/*А что регистр? А ничего, можно и так...*/

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

Сразу оговорим стиль кодирования... В CSS игнорируются пробелы и enter-ы, не чувствителен к регистру селекторы тегов (ВНИМАНИЕ!!! к регистру не чувствительны ТОЛЬКО селекторы тегов, селекторы классов должны быть абсолютно идентичны названиям классов в HTML документе. Другими словами .main и .Main - два разных класса) по этому Вы вольны выбирать для себя удобный и понятный для Вас стиль, ну, или придерживаться принятого в Вашей группе разработчиков стиля (все равно заставят...).
Вот пример того, как можно писать:

div{height:50px;width:40px;} /*Стиль в строчку без пробелов*/
div{height:50px; width:40px;} /*Стиль в строчку с пробелами*/
div
{
   height:50px; 
   width:40px;
} /*Вариант стиля "каскадом"*/
div{
   height:50px; 
   width:40px;
} /*Наиболее популярный вариант стиля "каскадом"*/

Все четыре записи идентичны, выбирайте свой. Как видно из примера комментарии заключаются в /* */. Комментарии могут быть расположены где угодно, до или после объявления стиля, внутри {} после любого правила.

Теперь о том, как же строятся селекторы. Как уже говорилось мы можем задавать стили для html-тегов. Для этого просто объявляем тег и задаем правила.
Показываю:

p{color:red;} /*Все теги P (параграфы) будут иметь красный цвет текста*/
p span{color:green;} /*Все теги SPAN, но только те, которые вложены в тег P будут иметь зеленый цвет*/

Как видно, можно задавать стиль не просто тегам, а только тем, которые отвечают определенным условиям.
Далее рассмотрим работу с классам. Имеем HTML:

Простой параграф, который выводит какой-то текст, таких в нашем документе... да, все :)


Этот параграф имеет назначенный класс и его можно выделить из общего текста.

Так будут выглядеть наши стили:

p{
  font-size:12px;
  font-family:verdana; /*С таким стилем у нас будут все параграфы*/
}
p.special{
  font-size:24px;
  color:red; /*Для параграфа с классом special у нас особые стили*/
}
.special{
  font-size:24px;
  color:red; /*Если класс special задается только параграфам то определять можно только класс не уточняя тег*/
}

CSS-cелектор, указывающий на класс начинается с "." (точка). Между точкой и названием класс пробела быть не должно. Если нам необходимо определить не только класс, но и элемент которому от присвоен (например, когда класс special может быть присвоен не только параграфу, но и, к примеру блоку div) необходимо сначала указать селектор тега и затем селектор класса. При этом НИ КАКИХ ПРОБЕЛОВ.

Селекторы, указывающие на ID элемента начинаются со знака #. Синтаксис такой же, как и с классами. Рассмотрим сразу более сложный пример.
Имеем html код:

Простой параграф внутри div-а

Параграф, который будет особенным

Еще один простой параграф внутри div-а

А это простой параграф, но уже вне нашего div-a.

Теперь придадим стилей:

p{      /*Стиль для всех параграфов на странице*/
    color: #000;
    font-size: 12px;
    font-family: verdana;
}
#main{  /*Стили для DIV-а*/
    border: 4px solid red;
    padding: 10px;
}
#main p{/*Стили для всех параграфов в DIV-е*/
    color: green;
    font-size: 16px;
}
#main .inside{/*Стили для параграфа с классом inside в DIV-е*/
    font-family: arial;
    font-size: 26px;
    color:blue;
}

Обратите внимание на селекторы "#main p" и "#main .inside". Сначала идет селектор для ID, потом ПРОБЕЛ, за тем селектор тега (во втором случае класса). Это означает, что стиль будет применен, в первом случае, ко всем параграфам внутри DIV-а, а во втором случае только к параграфам, имеющим класс inside.

Вот, что должно получиться:

Простой параграф внутри div-а

Параграф, который будет особенным

Еще один простой параграф внутри div-а

А это простой параграф, но уже вне нашего div-a.

Кроме того, мы видим, что DIV-у назначен не только ID, но и CLASS. Да,да - мы можем назначать одновременно и ID и CLASS, и даже несколько CLASS-ов.

К чему это я? Еще один ньюанс:

#main{  /*Абсолютно правильная запись*/
    border: 4px solid red;
    padding: 10px;
}
#main.inside{  /*Но, иногда требуется написать именно так*/
    border: 4px solid blue;
    padding: 50px;
}

Запись "#main.inside" не должна содержать ПРОБЕЛОВ. И читается она примерно так "Назначить стили элементу с ID main И классом inside". Причем, приоритет будет отдан второй записи "#main.inside", потому, что она более конкретизирована.

Вот, что получиться:

Простой параграф внутри div-а

Параграф, который будет особенным

Еще один простой параграф внутри div-а

А это простой параграф, но уже вне нашего div-a.

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

Запишем последние стили следующим образом:

p{      /*Стиль для всех параграфов на странице*/
    color: #000;
    font-size: 12px;
    font-family: verdana;
}
div#main{  /*Стили для DIV-а*/
    border: 4px solid red;
    padding: 10px;
}
div#main p{/*Стили для всех параграфов в DIV-е*/
    color: green;
    font-size: 16px;
}
div#main p.inside{/*Стили для параграфа с классом inside в DIV-е*/
    font-family: arial;
    font-size: 26px;
    color:blue;
}

Что изменилось? Да, ничего! Одновременное определение тега и класса мы рассматривали выше, тоже самое и с ID.

Так строятся основные (простые) селекторы, основанные только на классах и идентификаторах. В следующей статье рассмотрим применение псевдоклассов.

Read 7411 times
More in this category: « Что такое CSS

Недостаточно прав для комментирования
You have no rights to post comments