Лабораторная работа 3.
CSS. Виды селекторов
Основные виды селекторов CSS представлены в таблице 1.
Таблица 1 – Виды селекторов CSS
Виды селекторов
|
Пример
|
Селекторы элементов
|
p {font-family: Garamond, serif;}
|
Селекторы классов
|
.note {color: red; background: yellow; font-weight: bold;}
|
Селекторы идентификаторов
|
#paragraph1 {margin: 0;}
|
Селекторы атрибутов
|
a[href="#"]{font-weight:bold;}
|
Селекторы потомков (контекстные селекторы)
|
div#paragraph1 p.note {color: red;}
|
Селекторы дочерних элементов
|
p.note > b {color: green;}
|
Селекторы сестринских элементов
|
h1 + p {font-size: 24pt;}
|
Селекторы псевдоклассов
|
a:active {color:yellow;}
|
Селекторы псевдоэлементов
|
p:first-letter {font-size: 32px;}
|
Также в CSS существует так называемый универсальный селектор, обозначающий любой элемент, встречающийся в документе. Например, *{color:red;}. Перед любым селектором, задающим класс или идентификатор, можно поставить знак универсального селектора, в результате получится эквивалентное выражение, например, .first {...} и *.first {...} имеют один и тот же смысл.
Использование псевдоклассов и псевдоэлементов
Самые известные псевдоклассы:это :link, :hover, :visited и :active.
Обычно псевдоклассы используют в основном для задания стилей ссылок, например :link для непосещенной ссылки, :hover для ссылки при наведении, :active для нажатой и удерживаемой ссылки и :visited для посещенной.
Примеры использования псевдоклассов
#d3{ border:solid yellow 2px;}
#d3:hover{border:solid blue 4px;}
.btn{border:solid grey 1px;
box-shadow: 0 1px 1px #777;
border-radius: 7px;
color:yellow;}
.btn:active{ border:solid red 2px;
box-shadow: 0 1px 1px #555;
border-radius: 15px;
color:blue;
font-size:24px;
font-style:bold;}
Всего существует 33 псевдокласса, но не все браузеры их поддерживают.
Название и назначение псевдоклассов
:link — отвечает за стили непосещенной ссылки;
:hover — состояние объекта (не обязательно ссылки) при наведении на него мышкой;
:active — состояние активного объекта (например, для ссылки и зажатие ее мышкой);
:visited — состояние посещенной ссылки;
:focus —устанавка фокуса (в случае с текстовым полем - это постановка курсора в это поле);
:first-child — первый дочерний элемент текущего элемента;
:last-child — соответственно, последний дочерний элемент элемента;
:only-child — применяет стиль к элементу, если он единственный дочерний элемент;
:nth-child() — какой-то по счету с начала дочерний элемент, например p:nth-child(4);
:nth-last-child() — аналогично, только отчет с конца; интересно, что в этом и предыдущем селекторах можно задавать не только конкретные цифры, но и счетность, к примеру вот так: ul li:nth-last-child(2n+1);
:lang() — если у элемента указан язык (с помощью атрибута lang, например lang="en"), то этот элемент можно выбрать таким образом;
:root — дает указание применить стиль к корневому элементу (в html документе это тег );
:not() — дает ограничение на применение стилей по селектору (то есть селектор .red-block:not(div) применит указанный стиль ко всем элементам с классом .red-block, только есть этот элемент не
);
:empty — выбирает пустые элементы;
:first-of-type — применяет стиль к первому элементу этого типа, то есть если у вас есть два дива, стиль будет работать только для первого из них;
:last-of-type — аналогично предыдущему, только для последнего элемента;
:only-of-type — применяет стили к элементу, если он имеет уникальный тип внутри своего родителя;
:nth-of-type() — выбирает указанный по счету с начала элемент текущего типа;
:nth-last-of-type() — то же самое, но отсчет с конца;
:target — например, если у вас адрес имеет вид index.html#anchor, то этот псевдокласс задаст правило для элемента с id="anchor";
:enabled — выбирает активные «инпуты»;
:disabled — а этот неактивные;
:checked — отмеченные «чекбоксы» и выбранные «радиобаттоны»;
:indeterminate — для «радиобаттонов» и «чекбоксов» опеределяет состояние, когда они не выбраны;
:default — элемент по умолчанию, например, кнопка отправки формы;
:valid — стиль для правильного «инпута» (когда указана data type в HTML 5);
:invalid — когда, соответственно, «инпут» не валиден;
:in-range — когда значение «инпута» находится в заданных границах (type="range", задан min и max, но это все только в HTML 5);
:out-of-range — когда не попадает в границы;
:required — все обязательные поля;
:optional — все необязательные;
:read-only — те элементы, которые доступны только для чтения;
:read-write — для чтения и записи.
Практическое задание
Откройте файл, созданный на предыдущей лабораторной работе, и примените к элементам псевдоклассы.
Взаимодействие CSS и JavaScript
Иногда возникает проблема изменения свойств стилей объектов не напрямую через HTML код, а в теле скрипта JavaScript. Для этих целей применяются аналоги свойств CSS в JavaScript.
Для этого используется универсальный вариант с применением метода getElementById():
document.getElementById(object).style.js_свойство = "новое_свойство_CSS"
Например:
document.getElementById("div1").style.fontSize = "10"
Ниже приведена таблица основных свойств CSS и их аналогов в JavaScript.
Свойство CSS
|
Аналог JavaScript
|
background-attachment
|
backgroundAttachment
|
background-color
|
backgroundColor
|
background-image
|
backgroundImage
|
background-position
|
backgroundPosition
|
background-repeat
|
backgroundRepeat
|
border
|
border
|
border-bottom
|
borderBottom
|
border-bottom-color
|
borderBottomColor
|
border-bottom-style
|
borderBottomStyle
|
border-bottom-width
|
borderBottomWidth
|
border-color
|
borderColor
|
border-left
|
borderLeft
|
border-left-color
|
borderLeftColor
|
border-left-style
|
borderLeftStyle
|
border-left-width
|
borderLeftWidth
|
border-right
|
borderRight
|
border-right-color
|
borderRightColor
|
border-right-style
|
borderRightStyle
|
border-right-width
|
borderRightWidth
|
border-style
|
borderStyle
|
border-top
|
borderTop
|
border-top-color
|
borderTopColor
|
border-top-style
|
borderTopStyle
|
border-top-width
|
borderTopWidth
|
border-width
|
borderWidth
|
clear
|
clear
|
clip
|
clip
|
color
|
color
|
cursor
|
cursor
|
display
|
display
|
filter
|
filter
|
font
|
font
|
font-family
|
fontFamily
|
font-size
|
fontSize
|
font-variant
|
fontVariant
|
font-weight
|
fontWeight
|
height
|
height
|
left
|
left
|
letter-spacing
|
letterSpacing
|
line-height
|
lineHeight
|
list-style
|
listStyle
|
list-style-image
|
listStyleImage
|
list-style-position
|
listStylePosition
|
list-style-type
|
listStyleType
|
margin
|
margin
|
margin-bottom
|
marginBottom
|
margin-left
|
marginLeft
|
margin-right
|
marginRight
|
margin-top
|
marginTop
|
overflow
|
overflow
|
padding
|
padding
|
padding-bottom
|
paddingBottom
|
padding-left
|
paddingLeft
|
padding-right
|
paddingRight
|
padding-top
|
paddingTop
|
page-break-after
|
pageBreakAfter
|
page-break-before
|
pageBreakBefore
|
position
|
position
|
float
|
styleFloat
|
text-align
|
textAlign
|
text-decoration
|
textDecoration
|
text-decoration: blink
|
textDecorationBlink
|
text-decoration: line-through
|
textDecorationLineThrough
|
text-decoration: none
|
textDecorationNone
|
text-decoration: overline
|
textDecorationOverline
|
text-decoration: underline
|
textDecorationUnderline
|
text-indent
|
textIndent
|
text-transform
|
textTransform
|
top
|
top
|
vertical-align
|
verticalAlign
|
visibility
|
visibility
|
width
|
width
|
z-index
|
zIndex
|