CSS
Введение
Элементы html
Подключение
Стиль подключается из внешнего файла (ниже "mystyle.css") или описывается в любом месте html-файла:
< head > < link rel = "stylesheet" type = "text/css" href = "mystyle.css" > <!-- стили в файле "mystyle.css" --> < style type = "text/css" > <!-- стили описываются здесь --> canvas {background-color:#fff; border:1px solid black; } </ style > </ head > |
Каждый следующий стиль переопределяет предыдущий. Если сначала подключен внешний файл, а затем идут теги style с другими параметрами, то они пербъют стили файла.
Что переопределяем
Переопределять можно стандартные теги html:
p { text-align : center ; color : red ; } |
p. center { text-align : center ; color : red ; } p. large { font-size : 300% ; } |
< p class = "center" >This paragraph will be red and center-aligned.</ p > < p class = "center large" >This paragraph will be red, center-aligned, and in a large font-size.</ p > |
. center { text-align : center ; color : red ; } |
Уникальные (единожды встречаемые на странице id-шники) описываются так:
#para 1 { text-align : center ; color : red ; } |
< p id = "para1" > Hi! I will be in center and red. </ p > |
Несколько одинаковых стилей для различных тегово можно задавать через запятую
h 1 , h 2 , p { text-align : center ; /* Комментарий */ color : red ; } |
Блочный элемент div
Элемент <div> является универсальным блочным элементом и предназначен для группирования элементов документа. Чтобы видеть, где элемент <div> находится, зададим ему ненулевые размеры и огружающую рамку.
< div style = "width:100px; height:25px; border: 1px solid;" >Abc</ div > < div style = "width:150px; height:25px; border: 1px solid;" >123</ div > |
Как и при использовании других блочных элементов (типа <table>, <p>), содержимое <div> всегда начинается с новой строки. Для изменения этого поведения служит свойство position:
- relative - его положение относительно нормального уточняют параметры top, left, bottom, right;
- absolute - абсолютное положение задаётся top, left, bottom, right, при этом остальные элементы его не замечают. Если div находится внутри другого div с position отличным от static, положение отсчитывается относительно родителя, иначе относительно окна браузера;
- fixed - положение привязывается к указанной точке на экране и не меняется при прокрутке веб-страницы.
- static - поведение элемента по умолчанию;
В отличии от <div>, тег <span> предназначен для определения строчных элементов документа. С его помощью можно выделить часть информации внутри других тегов и установить для нее свой стиль. Например, внутри абзаца (тега <p>) можно изменить цвет и размер первой буквы: <span style="color:red; font-size:1.5em">В</span>
Цвет и фон
Цвета задаются одним из следующих способов: red, rgb(255, 0, 0), #ff0000 или #f00.
Фон можно залить и картинкой. По умолчанию она тайлится вертикально и горизонтально (этим можно управлять при помощи свойства background-repeat):body { background-image : url ( "paper.gif" ); background-repeat : no-repeat ; /* если не надо, чтобы тайлилась */ background-repeat : repeat-x ; /* тайлится только горизонтально (но не вертикально) */ background-position : right top ; /* куда прижать картинку */ background-attachment : fixed ; /* фиксированное положение, не скролится со страницей */ } |
body { background : #ffffff url ( "img_tree.png" ) no-repeat right top ; } |
Бордюр
Бордюр любого элемента: блока <div>, параграфа <p> и т.п. задаётся стилями:
border-style : solid ; /* dotted; dashed; solid; double; groove; ridge; inset; outset; none; hidden; */ border-width : 5px ; /* толщина рамки */ border-color : red ; /* цвет рамки */ border-top-style : dotted ; /* для каждой стороны своя линия */ border-right-style : solid ; border-bottom-style : dotted ; border-left-style : solid ; border-style : dotted dashed solid double ; /* аналогично сверху, по часовой стрелке */ border : 5px solid red ; /* одной строкой */ |
div { /* слева красная жирная полоска */ border-left : 6px solid red ; background : lightgrey; } |
div { /* закруглённый уголок */ border : 2px solid red ; border-radius: 10px ; } |
div{ width : 100px ; height : 50px ; border : 2px solid black ; outline-style : double ; outline-color : green ; outline-width : 10px ; } |
Текст
h 1 { color : red ; /* цвет текста */ text-align : center ; /* позиционирование по горизонтали: center, left, right, justify */ direction : rtl ; /* многострочный текст прижимается вправо */ text-decoration : overline ; /* подчеркивание: overline, line-through, underline */ text-transform : uppercase ; /* преобразование: uppercase lowercase, capitalize */ text-indent : 50px ; /* сдвиг первой строки (русские абзацы) */ letter-spacing : 3px ; /* расстояние между буквами */ line-height : 1.8 ; /* высота линии (шире чем обычно) */ word-spacing : -5px ; /* расстояние между словами */ font-family : Georgia, Arial , Helvetica , Sans- Serif ; /* по очереди предпочтений */ font-size : 14px ; font-style : italic ; /* наклон: italic, normal */ font-weight : bold ; /* жирность: bold, normal */ } |
Отступы
Задание отступов можно объеденять в одной строке:
margin : 100px 150px 100px 80px ; /* top right bottom left */ margin : 25px 50px ; /* top and bottom = 25px, right and left = 50px */ margin : 25px ; /* all four margins are 25px */ margin : auto ; /* horizontally center the element within its container */ |
Аналогично свойство padding создаёт пространство вокруг контента внутри объекта (например, делает отступы для текста внутри рамки):
Размер
Задание размеров объекта может быть в процентах, пикселях или em-ах. Размер 1em равен размеру текущего шрифта (если шрифт = 16px, то 1em=16px).
div { height : 100px ; width : 50% ; /* % of the containing block */ } |
div { max-width : 500px ; } |
width : 90% ; /* для браузеров не поддерживающих calc() */ width : calc( 100% - 80px ); |
<div style= "width:500px; background:#FFA;" > <div style= "width:100px; background:#AAF;" > width : 100px </div> <div style= "width:100px; background:#AAF; padding:0px 30px;" > width : 100px + padding</div> </div> |
Центрирование
< div class = "box" style = "margin: auto;" >Abc</ div > < div class = "box" style = "margin: auto; text-align: center;" >123</ div > |
< br > 123 < span style = "border:1px solid; vertical-align:middle; font-size:2em;" >A</ span > |
123 A
Ещё пример вертикального позиционирования span-элементов:
< div style = "font-size: 2em" > T< span style = "vertical-align: sub" >E</ span >X и L< span style = "vertical-align: 5px; font-size: 0.8em" >A</ span > T< span style = "vertical-align: sub" >E</ span >X </ div > |
div.cntr { height : 100px ; /* фиксировать её высоту */ position : relative ; margin : auto ; /* центр по ширине */ top : calc( 50% - 50px ); /* центр по высоте, где 50px = height/2 */ } |
< div style = "width:182px; height:120px; border:1px solid;" > < div class = "cntr" style = "width:100px; border:1px solid" >A</ div > </ div > |
style = "display: flex; justify-content:center; align-items:center; " |
< div style = "width:182px; height:120px; border:1px solid; display: flex; justify-content:center; align-items:center; " > < div style = "width:100px; height:50px; border:1px solid; max-width:20%; max-height:20%;" >A</ div > </ div > |
Свойство "overflow"
Свойство overflow управляет тем, как ведёт себя содержимое блочного элемента, если его размер превышает допустимую длину/ширину. (Обычно блок увеличивается в размерах при добавлении в него элементов, заключая в себе всех потомков.)- visible - содержимое отображается за границами блока (по умолчанию);
- hidden - переполняющее содержимое не отображается;
- auto - при переполнении отображается полоса прокрутки;
- scroll - полоса прокрутки отображается всегда;
div.overflow { overflow : hidden ; width : 200px ; height : 80px ; border : 1px solid black ; } |
< div class = "overflow" > ЭтотТекстОбрезанСправаЭтотТекстОбрезанСправа Этот текст будет обрезан снизу Этот текст будет обрезан снизу </ div > |
Можно также указать поведение блока при переполнении по ширине в overflow-x и высоте – в overflow-y:
div. scroll { height : 100px ; border : 1px solid black ; overflow-x: hidden ; /* Hide horizontal scrollbar */ overflow-y: scroll ; /* Add vertical scrollbar */ } |
Горячий воздух дик и глух,
И правит окриками пьяными
Весенний и тлетворный дух.
Вдали над пылью переулочной,
Над скукой загородных дач,
Чуть золотится крендель булочной,
И раздается детский плач.
И каждый вечер, за шлагбаумами,
Заламывая котелки,
Среди канав гуляют с дамами
Испытанные остряки.
Над озером скрипят уключины
И раздается женский визг,
А в небе, ко всему приученный
Бесмысленно кривится диск.
И каждый вечер друг единственный
В моем стакане отражен
И влагой терпкой и таинственной
Как я, смирен и оглушен.
div { overflow : hidden ; /* прячем оба скрола */ } |
Плавающие объекты
Свойство float определяет, по какой стороне родителя прижимается блок. Остальные элементы будут обтекать его с других сторон. Когда значение свойства float равно none, элемент выводится на странице как обычно, при этом допускается, что одна строка обтекающего текста может быть на той же линии, что и сам элемент.
img. right { float : right ; /* wrap text around images */ margin : 5px 5px 5px 10px ; } |
< img class = "right" src = "galaxy.jpg" > И каждый вечер, в час назначенный ... |

"Блоки после плавающего блока будут плавать вокруг него. Для избежания этого используют свойство clear в котором указывается с какой стороны блока плавания не будет."
Например, для "цитаты" справа над началом текста (как выше), делаются три абзаца:
< p style = "width:50%; float:right;" > Цитата...</ p > < p style = "clear:right" > </ p >< p > ... собственно текст ... </ p > |
Блоки в строку
При помощи display: inline-block; можно делать прилипающие друг к дугу блоки:Впрочем, тоже можно сделать "по-старинке" при помощи float: left; и clear: left;
Ссылки
a { text-decoration : none ; } a:link { /* unvisited link */ color : red ; } a:visited { /* visited link */ color : green ; } a:hover { /* mouse over link */ color : hotpink; background-color : lightgreen; text-decoration : underline ; padding : 14px 25px ; text-align : center ; display : inline- block ; /* внутри прямоуголька цвета background-color */ } a:active { /* selected link */ color : blue ; } |
Таблицы
См. примеры оформления таблиц на css.CSS и JavaScript
Свойство element.style возвращает объект, который дает доступ к стилю элемента на чтение и запись. С его помощью можно изменять большинство CSS-свойств, например element.style.width="100px" работает так, как будто у элемента в атрибуте прописано style="width:100px". Имена свойств через тире именуются так: elem.style.backgroundColor вместо background-color и т.д. Исключение - свойство float, для которого elem.style.cssFloat. Чтобы сбросить поставленный стиль, присваивают пустую строку: elem.style.width="". Свойство style содержит лишь тот стиль, который указан непосредственно в атрибуте элемента, без учёта каскада CSS.Специальные символы
Специальные символы html не относятся к css. Тем не менее, ниже приведены наиболее полезные из них.
Пробелы: | |   |   | |||||||||||||||||
Операции: | · | · | × | × | ÷ | ÷ | < | < | > | > | ± | ± | ≤ | ≤ | ≥ | ≥ | ≈ | ≈ | ≠ | ≠ |
Логика: | ∨ | ∨ | ∧ | ∧ | & | & | ≡ | ≡ | ∀ | ∀ | ∃ | ∃ | ∈ | ∈ | ∉ | ∉ | ||||
Стрелки: | ← | ← | ↑ | ↑ | → | → | ↓ | ↓ | ↔ | ↔ | ↕ | ↕ | ⇐ | ⇐ | ⇑ | ⇑ |
Большую подброку можно найти тут.
Примеры
Поле ввода
Красивое поле ввода с рамочкой только при фокусе: (кликни сюда: ). Переопределяем стиль:input[type=text], textarea { outline : none ; padding : 2px ; margin : 5px ; border : 0px ; border-bottom : 1px dotted blue ; } input[type=text]:focus, textarea:focus { border-color : #56b4ef ; box-shadow: inset 0 1px 3px rgba( 0 , 0 , 0 ,. 05 ), 0 0 8px rgba( 82 , 168 , 236 ,. 6 ); -webkit-box-shadow: inset 0 1px 3px rgba( 0 , 0 , 0 ,. 05 ), 0 0 8px rgba( 82 , 168 , 236 ,. 6 ); -moz-box-shadow: inset 0 1px 3px rgba( 0 , 0 , 0 ,. 05 ), 0 0 8px rgba( 82 , 168 , 236 ,. 6 ); } |
< input type = "text" name = "x" value = "137" style = "width:1.5em; text-align:center; font-size:1em;" > |