Представление документа пользователю значит его конвертацию в понятную для пользователя форму. Браузеры , такие как Firefox , Chrome или Internet Explorer , предназначены для представления документов визуально, например, на экране компьютера, проектора или принтера.
Как CSS влияет на HTML?Браузер применяет CSS правила к документу, чтобы описать, как он будет отображаться. CSS-правила формируются из:
- Набора свойств , которые имеют значения, устанавливающие, как будет отображаться содержимое(HTML), Например Я хочу, чтобы ширина элемента равнялась 50% ширины родительского элемента, и его фон был красным .
- Селектор , который выбирает (англ. selects) элемент/элементы, к которым вы хотите применить измененные значения. Например, Я хочу применить это CSS-правило ко всем параграфам в моем HTML-документе .
Набор правил CSS, содержащихся в таблице стилей(stylesheet), определяет, как должна выглядеть веб-страница. Более подробно о синтаксисе CSS вы узнаете в следующей статье модуля - .
Краткий пример CSSОписания, приведенные выше могут быть непонятны, поэтому подкрепим теорию небольшим практическим примером. Прежде всего, давайте рассмотрим простой HTML-документ, содержащий и
(заметьте, что таблица стилей применяется к HTML с использованием элемента ):
Мой эксперимент с CSS Hello World!
Это мой первый CSS-пример
Теперь давайте посмотрим на очень простой пример CSS, содержащий два правила:
Первое правило начинается с селектора h1 , который означает, что оно будет применено к элементу . Оно содержит три свойства и три значения(каждая пара свойство/значение называется объявление ):
Второе правило начинается с селектора p , который значит, что оно применится к элементу
. Оно содержит одно объявление, которое меняет цвет текста на красный.
Приведенный выше код в браузере отобразится вот так:
Это не очень красиво, но показывает, как работает CSS.
Активное обучение: Пишем наш первый CSSСейчас мы дадим вам возможность написать свой первый CSS. Вы можете сделать это, используя поле ввода, расположенное ниже, и увидеть это на живом редактируемом примере. У нас есть некоторые простые элементы HTML, а также некоторые свойства CSS. Так же, как показано выше, попробуйте добавить простые объявления в CSS, чтобы определить стиль HTML.
Если вы сделаете ошибку, вы всегда можете сделать сброс, используя кнопку Reset. Если вы чувствуете, что застряли, можете нажать "Показать решение", чтобы посмотреть решение.
Playable code HTML Input Hello World!This is a paragraph.
- This is
- A list
Когда браузер отображает документ, он совмещает содержимое документа с информацией о стиле. Он обрабатывает документ в два этапа:
DOM имеет древовидную структуру. Каждый элемент, атрибут и кусочек текста в языке разметки представляется как узел DOM в этой структуре. Узлы определяются их отношением к другим DOM-узлам. Элементы могут иметь потомков, а потомки могут иметь братские(соседние) элементы.
Понимание DOM поможет вам в проектировании, отладке и поддержке вашего CSS, потому что DOM это место, в котором CSS встречается с содержимым документа.
Представление DOMВместо долгих и скучных объяснений давайте рассмотрим пример, который покажет, как DOM и CSS работают вместе.
Давайте рассмотрим представленный HTML-код:
В DOM узел, соответствующий элементу
Является родителем. Его дети являются текстовыми узлами и соответствуют элементу . Узлы SPAN также являются родителями, а их потомки -- текстовые элементы:
P ├─ "Let"s use:" ├─ SPAN | └─ "Cascading" ├─ SPAN | └─ "Style" └─ SPAN └─ "Sheets"
После интерпретации DOM-дерева браузером на выходе мы получим вот это:
Применение CSS к DOM
Let"s use: Cascading Style Sheets
Мы применим к нему этот CSS:
Span { border: 1px solid black; background-color: lime; }
Браузер проанализирует HTML и создаст DOM из него, а затем разберется с CSS. Поскольку у нас есть только одно правило, описывающее селектор span,то оно будет применено ко всем узлам документа с этим селектором. На выходе получим это.
Как применить ваш CSS к вашему HTMLЕсть три различных варианта применения CSS к HTML-документу, которые встречаются чаще всего. Здесь мы рассмотрим каждый из них.
Внешняя таблица стилейВы уже сталкивались с внешней таблицей стилей в этой статье, но называли ее не так. Внешняя таблица стилей это отдельный файл с расширением.css, в котором и хранится CSS. Вы ссылаетесь на него из HTML при помощи элемента . HTML при этом выглядит так:
My CSS experiment Hello World!
This is my first CSS example
Добавим CSS-файл:
H1 { color: blue; background-color: yellow; border: 1px solid black; } p { color: red; }
Этот метод, вероятно, лучший из всех, поскольку вы можете использовать одну таблицу стилей для нескольких документов. Чтобы обновить стили, достаточно внести изменения лишь в один CSS-файл.
Внутренняя таблица стилейВнутренняя таблица стилей содержится внутри элемента и не требует подключения внешних файлов. Содержится в теге HTML head . HTML с подобным методом подключения стилей выглядит вот так:
My CSS experiment h1 { color: blue; background-color: yellow; border: 1px solid black; } p { color: red; } Hello World!
This is my first CSS example
Это может быть полезно в некоторых ситуациях (возможно, вы работаете с системой управления контентом, где нельзя менять CSS-файлы напрямую), но это не так эффективно, как внешние таблицы стилей. В сайте, в котором больше одной страницы, CSS надо будет повторять на каждой странице, и при изменении стиля надо будет править во многих местах.
Встроенные стилиВстроенные стили - это объявление CSS, которое применимо только к одному элементу, и содержится в атрибуте style :
My CSS experiment Hello World!
This is my first CSS example
Пожалуйста, не делайте этого без крайней необходимости! Это очень плохо для технического обслуживания (вам, возможно, придется обновлять ту же информацию несколько раз за один документ). Смешение CSS и HTML делает код нечитабельным. Разделяя HTML и стили, вы облегчите работу себе в будущем и своим коллегам.
Единственный случай, когда вам, возможно, придется прибегнуть к использованию встроенных стилей, это когда ваше рабочее окружение устанавливает ограничения (например, ваша CMS позволяет только редактировать HTML)
Что дальшеНа этом этапе вы должны были понять, как работает CSS, и как с ним работают браузеры. Далее, вы узнаете о
Presenting a document to a user means converting it into a usable form for your audience. Browsers , like , or Internet Explorer , are designed to present documents visually, for example, on a computer screen, projector or printer.
How does CSS affect HTML?Web browsers apply CSS rules to a document to affect how they are displayed. A CSS rule is formed from:
- A set of properties , which have values set to update how the HTML content is displayed, for example, I want my element"s width to be 50% of its parent element, and its background to be red .
- A selector , which selects the element(s) you want to apply the updated property values to. For example, I want to apply my CSS rule to all the paragraphs in my HTML document .
A set of CSS rules contained within a stylesheet determines how a webpage should look. You will learn a lot more about what CSS syntax looks like in the next article of the module - CSS Syntax .
A quick CSS exampleThe above descriptions may or may not have made sense, so let"s make sure things are clear by presenting a quick example. First of all, let"s take a simple HTML document, containing an and a
(notice that a stylesheet is applied to the HTML using a element):
My CSS experiment Hello World!
This is my first CSS example
Now let"s look at a very simple CSS example containing two rules:
H1 { color: blue; background-color: yellow; border: 1px solid black; } p { color: red; }
The first rule starts with an h1 selector, which means that it will apply its property values to the element. It contains three properties and their values (each property/value pair is called a declaration ):
The second rule starts with a p selector, which means that it will apply its property values to the
element. It contains one declaration, which sets the text color to red.
In a web browser, the code above would produce the following output:
This isn"t too pretty, but at least it starts to give you an idea of how CSS works.
Active learning: Writing your first CSSNow we"ll give you a chance to write your own bit of CSS. You can do this using the Input areas below, in the live editable example. In a similar fashion to what you saw above, you"ve got some simple HTML elements and some CSS properties. Try adding some simple declarations to your CSS, to style the HTML.
If you make a mistake, you can always reset it using the Reset button. If you get really stuck, press the Show solution button to see a potential answer.
Playable code HTML Input Hello World!This is a paragraph.
- This is
- A list
When a browser displays a document, it must combine the document"s content with its style information. It processes the document in two stages:
A DOM has a tree-like structure. Each element, attribute and piece of text in the markup language becomes a DOM node in the tree structure. The nodes are defined by their relationship to other DOM nodes. Some elements are parents of child nodes, and child nodes have siblings.
Understanding the DOM helps you design, debug and maintain your CSS because the DOM is where your CSS and the document"s content meet up.
DOM representationRather than a long, boring explanation, let"s take an example to see how the DOM and CSS work together.
Let"s assume the following HTML code:
In the DOM, the node corresponding to our
Element is a parent. Its children are a text node and the nodes corresponding to our elements. The SPAN nodes are also parents , with text nodes as their children:
P ├─ "Let"s use:" ├─ SPAN | └─ "Cascading" ├─ SPAN | └─ "Style" └─ SPAN └─ "Sheets"
This is how a browser interprets the previous HTML snippet -it renders the above DOM tree and then outputs it in the browser like so:
Applying CSS to the DOMLet"s say we added some CSS to our document, to style it. Again, the HTML is as follows:
Let"s use: Cascading Style Sheets
If we apply the following CSS to it:
Span { border: 1px solid black; background-color: lime; }
The browser will parse the HTML and create a DOM from it, then parse the CSS. Since the only rule available in the CSS has a span selector, it will apply that rule to each one of the three spans. The updated output is as follows:
How to apply your CSS to your HTMLThere are three different ways to apply CSS to an HTML document that you"ll commonly come across, some more useful than others. Here we"ll briefly review each one.
External stylesheetYou"ve already seen external stylesheets in this article, but not by that name. An external stylesheet is when you have your CSS written in a separate file with a .css extension, and you reference it from an HTML element. The HTML file looks something like this:
My CSS experiment Hello World!
This is my first CSS example
Всем-всем привет!
Коли начали мы изучать , значит нужно знать основы HTML и CSS, которые помогут сделать наши сайты лучше и привлекательнее для поисковых систем. Всю эту неделю я буду рассказать Вам о работе с кодом сайта и вот, что Вас ждет:
- . Будем учиться редактировать код сайта с помощью данных редакторов;
- . Поможем поисковому роботу понять структуру страницы;
- . Узнаем насколько правильно составлен код сайта и найдем ошибки;
Как видите, на неделе у нас будет очень много работы, поэтому подписывайтесь на обновления блога Context-UP и получайте все уроки себе на почту, если Вы еще не подписаны.
Основы HTMLHTML (Hyper Text Markup Language) — это язык разметки документов в Интернете. То есть, любая страничка Вашего сайта — документ, а браузер — средство просмотра подобных документов.
Задача HTML — показать браузеру где находиться тот или иной элемент документа. C помощью данного языка, элементы размечаются на странице и занимают определенное место, которые затем отображаются на мониторе посетителя сайта.
Язык разметки состоит из специальных тегов, которые помогают браузеру определить:
- Структуру документа;
- Место нахождения того или иного элемента;
- Предназначение элемента;
- Подключаемые сторонние файлы;
- И много-много другого.
Это понимают и поисковые роботы, поэтому нужно уделить особенное внимание тому, насколько правильно составлен документ с точки зрения SEO и какую структуру имеет.
Структура HTMLЛюбой HTML-документ имеет начальную структуру, которая должна соблюдаться в обязательно порядке. Выглядит она так:
Заголовок страницы Контент страницы 0) { return "thick solid red"; } else if (index % 2 == 1) { return "thick double blue"; } }); });Аргументами, передаваемыми функции, являются индекс элемента в наборе и текущее значение свойства. Переменная this ссылается на объект HTMLElement, соответствующий элементу, а функция возвращает значение, которое требуется установить.
Использование специализированных методов для работы со свойствами CSSВ дополнение к методу css() в jQuery определен ряд специализированных методов, предназначенных для получения или установки значений конкретных свойств. Перечень этих методов приведен в таблице ниже:
height() | Возвращает высоту (в пикселях) первого из элементов, содержащихся в объекте jQuery |
height(значение) | Устанавливает высоту для всех элементов, содержащихся в объекте jQuery |
innerHeight() | Возвращает внутреннюю высоту (т.е. высоту элемента, включая внутренние отступы, но исключая границы и поля) первого из элементов, содержащихся в объекте jQuery |
innerWidth() | Возвращает внутреннюю ширину (т.е. ширину элемента, включая внутренние отступы, но исключая границы и поля) первого из элементов, содержащихся в объекте jQuery |
offset() | Возвращает координаты первого из элементов, содержащихся в объекте jQuery, относительно начала документа |
outerHeight(логическое_значение) | Возвращает высоту первого из элементов, содержащихся в объекте jQuery, включая внутренние отступы и границы. Аргумент определяет, должен ли при этом учитываться размер полей |
outerWidth(логическое_значение) | Получает ширину первого из элементов, содержащихся в объекте jQuery, включая внутренние отступы и границы. Аргумент определяет, должен ли при этом учитываться размер полей |
position() | Возвращает координаты первого из элементов, содержащихся в объекте jQuery, относительно его родительского элемента, у которого задан тип позиционирования |
scrollLeft(), scrollTop() | Получает значение отступа прокрутки слева или сверху для первого из элементов, содержащихся в объекте jQuery |
scrollLeft(значение), scrollTop(значение) | Устанавливает значение отступа прокрутки слева или сверху для всех элементов, содержащихся в объекте jQuery |
width() | Получает ширину первого из элементов, содержащихся в объекте jQuery |
width(значение) | Устанавливает ширину для всех элементов, содержащихся в объекте jQuery |
height(функция), width(функция) | Устанавливает высоту или ширину всех элементов, содержащихся в объекте jQuery, с помощью функции |
Названия большинства этих методов говорят сами за себя, однако некоторые из них нуждаются в дополнительных пояснениях. Методы offset() и position() возвращают объект, имеющий свойства top и left , которые указывают положение элемента. Пример использования метода position() приведен ниже.
CSS является фундаментом для стилизации ваших веб страниц. Его обманчиво простой синтаксис позволяет влиять на визуальный слой веб сервера. А CSS3 открывает еще больше возможностей.
Известно много различных трюков и техник для CSS. В данной коллекции мы приводим всего лишь 10 из них, которые могут стать великолепным дополнением к вашему набору используемых методов и трюков.
1. Установите свойство font-size : 62.5% для тега body , чтобы было проще конвертировать em единицыЕсли вам нравится использовать относительные единицы для установки размера шрифта (em), установите значение 62.5% для свойства font-size тега body . В результате станет очень просто пересчитывать px в em - нужно будет всего лишь разделить значение в px на 10 (например, 24px = 2.4em).
Body { font-size: 62.5%; /* font-size 1em = 10px */ } p { font-size: 1.2em; /* 1.2em = 12px */ }
2. Удаление контура вокруг полей ввода для браузеров WebKitКогда элемент input получает фокус ввода (:focus), то в браузере Safari к нему добавляется голубой контур (а в Chrome - желтый).
Если вы хотите удалить данный контур, то можно использовать правило (в данном случае будет удален контур у текстового поля):
Input:focus { outline: none; }
Обратите внимание, что outline используется для улучшения функциональности интерфейса - контур облегчает обнаружение активного поля ввода. Такое свойство очень полезно в случае, когда пользователю недоступно устройство типа "мышь", и ему приходится использовать альтернативные способы перемещения по элементам страницы, например, клавишу Tab . Контур также полезен в случае использования "быстрых клавиш" для доступа к определенным полям ввода в форме (по наличию контура просто определить активное поле ввода). Поэтому, прежде чем удалить контур, стоит рассмотреть концепцию дизайна полей ввода с учетом индикации активного поля.
3. Используйте правило CSS transform для получения интересных эффектов при наведении курсора мыши на элементДля масштабирования элемента можно использовать свойство transform в большинстве браузеров, поддерживающих CSS3.
Вот правила для трюка с увеличением элемента на 10% при наведении курсора мыши на него:
A { -moz-transform: scale(1.1); -webkit-transform: scale(1.1); -o-transform: scale(1.1); }
4. Указываем правила для IE6 и IE7 без использования условных комментариевНужно указать правило для браузера IE? Есть способ сделать это без условных комментариев (тем не менее, ваш код CSS не пройдет проверку).
Код примера изменяет background-color для элемента div в зависимости от типа используемого пользователем браузера. Так как * указывает на IE версии 7 и ниже, то мы используем правило с _ после него, чтобы для IE6 (и более ранних версий) использовать другой цвет фона, отличный от фона для IE7:
Div { background-color: #999; /* все браузеры */ *background-color: #ccc; /* добавили * перед свойством - для IE7 и ниже> */ _background-color: #000; /* добавили _ перед свойством - для IE6 и ниже */ }
5. Поддержка прозрачности во всех основных браузерахВ примере для элемента div задается 70% прозрачности. Нужно использовать частный код CSS для корректной работы в Internet Explorer (что делает наш код несоответствующим стандартам W3C):
Div { /* для браузеров, совместимых со стандартами */ opacity:0.7; /* следующие строки будут проигнорированы в браузерах, совместимых со стандартами */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; /* IE8 */ filter: alpha(opacity=70); /* IE 5-7 */ }
6. Используйте !important для изменения обычного порядка наследования правил CSSВ CSS, когда два одноименных свойства применяются для элемента, использоваться будет то, которое расположено в листинге дальше. Но с помощью!important в конце значения свойства можно изменить порядок использования одноименных свойств.
Например:
H1 { color: green; } h1 { color: red; }
В данном наборе правил, элемент h1 будет иметь красный цвет.
Если нужно изменить приоритет правил без изменения порядка их объявления, можно сделать так:
H1 { color: green !important; } h1 { color: red; }
Теперь элемент будет зеленым.
Это один из способов центрировать элемент div с фиксированной шириной/высотой во внешнем контейнере. Данный способ можно использовать для центрирования текста, изображений и так далее внутри контейнера. Нужно сделать несложные вычисления для элемента с фиксированными размерами и использовать абсолютные величины для позиционирования и полей. Родительский контейнер должен иметь свойство position: relative , чтобы данный метод сработал.
Div { position: absolute; top: 50%; left: 50%; width: 400px; height: 300px; margin-top: -150px; /* 1/2 высоты вашего элемента */ margin-left: -200px; /* 1/2 ширины вашего элемента */ }
Веб шрифты открывают дополнительные возможности оформления страниц с помощью правила CSS @font-face. Однако в настоящий момент нет унифицированной реализации @font-face в различных браузерах. Если говорить конкретно, типы поддерживаемых файлов шрифтов различаются в разных браузерах (может быть ситуация изменится с введением стандарта WOFF). Кроме того, при использовании шрифтов нужно быть осторожным при соблюдении авторских прав (шрифт может не иметь лицензии для использования в веб пространстве).
Одним из обходных путей в ситуации с @font-face является API Google Font .
Ниже приводится пример использования шрифта Cantarell для элемента с использованием API Google Font.
Для использования шрифта из API Google Font сначала нужно указать ссылку на внешнюю таблицу стилей в теге :
Для использования шрифта для элемента h1 просто указываем его в свойстве font-family .
H1 { font-family: "Cantarell", Arial, serif; /* Используем набор шрифтов (на всякий случай) */ }
Иногда нужно, чтобы текст не переводился на следующую строку, когда исчерпывается ширина содержащего его элемента.
Текст ссылки разорван пробелом, чтобы перенести последнее слово на следующую строку. Но как сделать так, чтобы ссылка все время оставалась на одной строке (то есть предотвратить перенос строки)? Просто. Нужно использовать свойство white-space:
A { white-space: nowrap; }
10. Вертикальное центрирование текстаДля горизонтального центрирования текста можно использовать несколько стандартных методов (например, text-align: center или margin: 0 auto), но вертикальное центрирование текста требует использования трюков.
Для текста, который состоит из одной строки, мы можем использовать свойство line-height . Устанавливая значение свойства line-height для элемента с текстом равным высоте его контейнера, мы получаем центрированный по вертикали текст.
Вот элемент p , который центрирован по горизонтали внутри элемента div с размерами 100×100px, с помощью свойства text-align: center:
Свойство text-align не центрирует текст по вертикали. Мы можем установить значение свойства line-height равным высоте контейнера div (100px).
Div { width:100px; height:100px; } div p { line-height:100px; }
Такое использование свойств предполагает отсутствие у элемента p полей и отступов. Если будут иметься поля или отступы сверху или снизу, то нужно будет их компенсировать или просто установить 0 для padding и margin , чтобы облегчить себе жизнь.
Также, данный трюк не сработает, если текст будет содержать более одной строки (например, в случае переноса текста на следующую строку), потому что между строками будет установлено расстояние равное значению свойства line-height .