CSS: Приоритет стилей
Говоря о каскадности, возникает вопрос: «А что произойдёт, если в разных источниках будут одинаковые правила для элемента, но с разными значениями?». В таком случае есть правила, определяющие приоритеты стилей из разных источников. По степени важности список выглядит следующим образом:
- Стили в атрибуте тега
- Стили в отдельном файле
- Стили по умолчанию, которые добавляет браузер
Значения, указанные в атрибуте style будут важнее свойств в теге , а они будут важнее стандартных стилей браузера.
Приоритеты селекторов
Важной чертой CSS является то, что разные типы селекторов имеют разный приоритет. Если стили противоречат друг другу в разных селекторах, то вступает в дело принцип приоритета.
Разберём на примере. Создадим параграф с классом red и идентификатором blue
Добавим противоречащие друг другу стили для класса, идентификатора и тега:
p < color: black; >.red < color: red; >#blue
Какого цвета будет параграф? Попробуйте выполнить этот пример в редакторе. Вы увидите, что текст будет синего цвета. С чем это связано?
У селекторов также существуют приоритеты. Условно можно расставить селекторы в следующем порядке по приоритету:
- Селектор по идентификатору ( #blue )
- Селектор по классу ( .red )
- Селектор по тегу ( p )
Где 1 — самый высокий приоритет, а 3 — самый низкий.
По этим правилам можно понять, что свойства указанные в селекторе по идентификатору будет обладать большим приоритетом, чем стили у селектора по тегу и классу. Поэтому параграф в прошлом примере был синим.
Это легко запомнить, если селекторы небольшие, но они могут быть сложнее. В качестве селектора может быть комбинация классов, тегов и так далее. Например:
Параграф
.paragraph.color-primary
Здесь использовался селектор из двух классов сразу. Это означает, что стили будет применяться только для элемента, у которого есть оба класса. Такое разделение помогает разработчикам точечно устанавливать стили для схожих элементов. Например:
Параграф
Параграф
.paragraph < color: red; >.paragraph.color-primary
В этом примере все параграфы с классом paragraph будут иметь красный цвет текста, но если дополнительно установлен класс color-primary , то цвет будет голубой. Почему так происходит? У таких селекторов также есть свои приоритеты. В сложных селекторах считается количество вхождений тех или иных селекторов и считается суммарный вес.
Для определения приоритета можно использовать следующие правила, где каждому селектору задаётся его «вес»:
Чтобы узнать, какой селектор будет иметь больший вес, нужно сложить все полученные значения. Например:
- Селектор .paragraph состоит из одного класса, а значит его вес — 10
- Селектор .paragraph.color-primary состоит из двух классов. Его вес — 20
Таким образом свойства у селектора .paragraph.color-primary будут иметь больший приоритет, чем внутри селектора .paragraph .
Вышеприведённый список для вычисления «весов» или, как ещё говорят, «специфичности свойств» не является абсолютно полным, но этого способа достаточно на первых этапах изучения CSS. С практикой вы научитесь самостоятельно определять приоритет селекторов.
Задание
Добавьте в редактор параграф с классом border и id no-border . Установите следующие правила:
- Для класса border установите сплошную рамку любого цвета толщиной 1px. Это можно сделать так: border: 1px solid #000;
- Для id no-border отмените рамку. Используйте значение none у правила border-style
Первым укажите стили для селектора .border , вторым селектор #no-border
Стили запишите в теге
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Атрибут class
Самый частый атрибут, который вы будете использовать. Задаёт класс элементу.
Время чтения: 6 мин
Открыть/закрыть навигацию по статье
Контрибьюторы:
Обновлено 23 марта 2022
Кратко
Скопировать ссылку «Кратко» Скопировано
Универсальный атрибут тега, с помощью которого можно задать имя любому элементу на странице. Имя элемента в дальнейшем используется в качестве селектора в CSS и позволяет управлять стилями элемента. К тому же по имени класса удобно искать и манипулировать элементами на странице при помощи JavaScript.
Пример
Скопировать ссылку «Пример» Скопировано
На странице может быть множество одинаковых тегов. Например, несколько заголовков второго уровня.
.В Санкт-Петербурге
Ветер, по Питерскому обыкновению, дул сразу со всех четырёх сторон.
В России
«Умом Россию не понять. »
В мире
На Брайтон Бич опять идут дожди.
.. h2>В Санкт-Петербургеh2> p>Ветер, по Питерскому обыкновению, дул сразу со всех четырёх сторон.p> h2>В Россииh2> p>«Умом Россию не понять. »p> h2>В миреh2> p>На Брайтон Бич опять идут дожди.p> .
Как при текущей разметке можно изменить цвет текста первого заголовка? Можно обернуть все заголовки в разные дополнительные теги. И использовать их комбинации в качестве селекторов для написания стилей. Но это решение будет неверным. Разметка распухнет, её сложно будет читать. Так делать не нужно.
Чтобы выделить какой-то отдельный элемент или набор элементов и применить стили выборочно можно использовать атрибут class .
.В Санкт-Петербурге
Ветер, по Питерскому обыкновению, дул сразу со всех четырёх сторон.
В России
«Умом Россию не понять. »
В мире
На Брайтон Бич опять идут дожди.
.. h2 class="news__local">В Санкт-Петербургеh2> p>Ветер, по Питерскому обыкновению, дул сразу со всех четырёх сторон.p> h2 class="news__country">В Россииh2> p>«Умом Россию не понять. »p> h2 class="news__world">В миреh2> p>На Брайтон Бич опять идут дожди.p> .
В коде выше каждому заголовку второго уровня заданы разные имена классов. Это позволит без особых проблем написать стили только для первого заголовка.
.news__local color: #ed6742;>.news__local color: #ed6742; >
Цель достигнута, при этом стили остальных заголовков второго уровня остались прежними.
Как понять
Скопировать ссылку «Как понять» Скопировано
Имя класса может быть произвольным. Вы самостоятельно придумываете это название и задаёте его элементу при помощи атрибута class . Чтобы использовать имя класса в качестве селектора достаточно написать его в CSS, поставив перед именем точку. По точке браузер поймёт, что ему нужно искать не тег, а именно класс.
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Атрибут класса можно задать любому тегу в HTML-разметке. Как и любой другой атрибут, класс прописывается внутри треугольных скобок открывающего тега.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
При выборе имени класса следует придерживаться нескольких правил:
- В именах классов используй только английские слова.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="osnovnoy-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
- Имена классов пишутся маленькими буквами.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="Main-Text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
- Для разделения двух слов используются тире ( — ) или знак подчёркивания ( _ ). Не используй camelCase
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="mainText"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="main__text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
- Лучше не использовать больше трёх слов в имени класса.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="daily-news__main-alert-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="news__main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
- Не используй в названиях классов цифры или числительные. Завтра порядок блоков может измениться и нумерация будет сбивать с толку.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.Экзистенциализм сложен.
Художественное переживание последовательно.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.Экзистенциализм сложен.
Художественное переживание последовательно.
p class="text1"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="text-two">Экзистенциализм сложен.p> p class="text3">Художественное переживание последовательно.p> p class="main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="sub-text">Экзистенциализм сложен.p> p class="note-text">Художественное переживание последовательно.p>
- Не задавайте имя класса по контенту или по тегу. Контент — вещь живая. Если он изменится, то класс потеряет свою актуальность, что осложнит чтение и понимание кода. Теги также могут измениться в процессе жизни сайта.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.Экзистенциализм сложен.
Художественное переживание последовательно.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.Экзистенциализм сложен.
Художественное переживание последовательно.
p class="p-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="difficult">Экзистенциализм сложен.p> p class="perezhivanie">Художественное переживание последовательно.p> p class="main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="sub-text">Экзистенциализм сложен.p> p class="note-text">Художественное переживание последовательно.p>
- Не опирайтесь на внешний вид элемента при выборе имени класса. В разработке есть тенденция к быстрым изменениям. Поэтому завтра внешний вид сайта может полностью измениться. При подборе имён классов по смыслу элемента позволит избежать изменения HTML-разметки.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="green-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p> p class="main-text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
- Не используйте пробел для разделения слов внутри одного имени класса.
В примере ниже main и text будут восприниматься браузером как два отдельных класса, а не один, состоящий из двух слов.
Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм.p class="main text"> Его экзистенциальная тоска выступает как побудительный мотив творчества, однако символизм начинает импрессионизм. p>
Есть несколько методологий именования классов. Самой популярной на сегодня является БЭМ. Методология призвана определить дополнительные правила именования классов и облегчить процесс придумывания имён.
Подсказки
Скопировать ссылку «Подсказки» Скопировано
У элемента может быть несколько классов. Перечисляй классы, разделяя их пробелом.
Экзистенциализм сложен.
p class="sub-text news-text">Экзистенциализм сложен.p>
Поскольку стили принято задавать только селекторам по классу, пиши классы всем элементам сразу в процессе создания HTML-разметки.
На практике
Скопировать ссылку «На практике» Скопировано
Алёна Батицкая советует
Скопировать ссылку «Алёна Батицкая советует» Скопировано
Раньше в вёрстке довольно часто использовались идентификаторы — атрибут id . Теперь их лучше не использовать и заменить на класс. Точно не стоит использовать идентификаторы для стилизации элементов.
Причина в том, что идентификатор должен быть уникальным. В разметке может быть только один идентификатор с определённым именем. Это крайне неудобно для написания стилей, поскольку придётся многократно повторять одни и те же стили, но для разных идентификаторов. С классами эта проблема решается просто. Пропиши всем элементам, для которых нужно задать определённый внешний вид, один и тот же класс.
У многих начинающих разработчиков существует представление, что идентификаторы требуются для связи JavaScript и HTML, но это не так. В современном виде JavaScript предоставляет удобные инструменты поиска и манипуляции элементами по их классу. Так что и здесь классы пригодятся!
После того, как разметка и стили написаны, посмотри на них внимательно. Высока вероятность, что написано несколько одинаковых блоков стилей для разных классов. Имеет смысл оптимизировать код и вынести повторяющиеся стили в отдельный блок и задать всем похожим элементам один класс.
Представляй каждый блок, из которого состоит страница, как самостоятельный элемент, который можно будет убрать с текущей страницы и перенести на другую. Задавай такие имена классов, которые не будут привязаны к странице. Думай компонентами
Селекторы CSS – точечное применение свойств CSS к элементам страницы (тегам) | Оптимизация HTML за счёт использования селекторов
Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!
Здравствуйте дорогие подписчики и не менее дорогие гости Site on! Надеюсь, вам были интересны предыдущие статьи раздела HTML + CSS, потому как сегодня скучать точно не придётся, ведь мы рассмотрим такое понятие как селекторы CSS и как с их помощью мы можем сократить нашу разметку HTML, сделав её чище.
Селектор CSS – это тот элемент, к которому мы собираемся применять CSS свойства. Слово «селектор» говорит само за себя, оно обозначает выбор.
p div span ul li
Селекторы class и id
В примере выше мы имеем 3 селектора – это p, div span, ul li. То есть весь наш файл стилей состоит из селекторов и их свойств. Наиболее удобно и наглядно, особенно новичкам, брать за селектор имя класса (class) тега или уникальный идентификатор (id) тега. Чтобы присвоить класс или идентификатор какому-либо тегу, мы должны указать их среди атрибутов этого тега. У конкретного тега может быть максимум 1 идентификатор и бесконечное число классов. Пример:
текст в первом диветекст во втором диветекст в третьем диве
На что стоит обратить внимание:
- Классы и идентификаторы можно присваивать любым (всем) тегам.
- Каждый id уникален и не может повторяться в пределах одной страницы, в отличие от классов!
- Один и тот же класс может быть присвоен любым тегам и может повторяться любое количество раз на странице.
- Если мы хотим задать конкретному тегу несколько классов, мы просто задаём их через пробел.
- Имена классов и идентификаторов могут совпадать, при этом кроме имени, ничего общего между ними не будет.
Как обратиться к классу или id в файле стилей (CSS)?
#first /* обращаемся к id с именем first */ .second /* обращаемся к классу с именем second */ #first .second /* обращаемся к классу с именем second, ТОЛЬКО если он находится ВНУТРИ тега с идентификатором first */ .first .third /* обращаемся к классу с именем third, ТОЛЬКО если он находится ВНУТРИ тега с классом first */
В нашем случае последние две инструкции не сработают, так как у нас нет классов, вложенных внутрь тегов с заданными атрибутами. Как вы могли заметить, чтобы обозначить, что мы обращаемся именно к id, нужно перед его именем без пробелов поставить знак решётки (#), если мы обращаемся к классу, то перед именем класса должны поставить точку (.).
Использование классов и идентификаторов очень удобно, но оно увеличивает нашу HTML разметку, в идеале (которого никогда нет) мы вовсе не должны их использовать, вместо них мы будем использовать комбинации и группировки селекторов, о них и будет вся остальная часть статьи, но! Но это совсем не означает, что вы должны полностью отказаться от использования классов и идентификаторов, просто вы должны иметь ввиду, что очень часто вместо создания нового class или id можно обойтись приёмами, описанными ниже и они также могут быть вполне удобны.
В чём различие class и id?
Кроме приведённых выше различий, стоит ещё отметить, что у свойств заданных id приоритет выше, чем у свойств, заданных классу. То есть, если мы напишем:
#first .blueтекст в диве
То цвет текста станет красным, несмотря на то, что класс находится ниже по коду и если бы у них был равный приоритет текст стал бы синим.
По синтаксису: в случаи с классом мы можем выбрать, у какого именно тега должен находиться данный класс, для этого после имени тега БЕЗ пробела мы должны обратиться к классу. Пример:
.myclass /* применятся ко всем тегам, которые содержат класс myclass */ div.myclass /* применятся только к тегам div, которые содержат класс myclass */
Для id это тоже будет работать, но такая запись лишена всякого смысла, так как id не может повторяться на странице, а значит достаточно просто объявлять id, без тега к которому оно относится:
текст
Вроде бы осталось только одно неоговорённое отличие, и оно касается темы, которую в ближайшем будущем я не планировал затрагивать на этом блоге – Javascript. Но всё же обязан доложить вам о нём: если вы хотите обратиться к элементу с помощью Javascript, то для этой цели очень удобным будет наличие id у этого элемента. Чтобы обратиться к элементу по его классу в Javascript нет такой встроенной возможности, вам придётся использовать вспомогательные функции + это не всегда кроссбраузерно.
Итог: id и class используем, но в меру, при этом всегда спрашивая себя, а можно ли здесь обойтись без них и насколько это целесообразно.
Родственный селектор
Идём дальше. Из статьи о наследовании в CSS вы уже знаете о двух самых простых видах селекторов, это селектор по тегу (элементу) и по потомку. Давайте освежим вашу память:
div p /* Селектор по потомку */ p /* селектор по тегу */
Но как я уже писал в предыдущей статье, в первом случае CSS свойства применятся ко всем тегам p вложенным на ЛЮБУЮ глубину тега div. А что если мы хотим применить свойства только к прямым наследникам, то есть к первому уровню вложенности:
Прямой наследник (первый уровень)
Третий уровень
Прямой наследник (первый уровень)
Второй уровень
Прямой наследник (первый уровень)
В таком случае мы должны использовать так называемый родственный селектор, для его обозначения используется угловая скобка, пробелы можете ставить, можете не ставить, я бы не советовал:
div>p /* только первый уровень вложенности */ div p /* абсолютно все параграфы внутри div */
Универсальный селектор
С этим разобрались, у нас на вооружении уже 3 вида селекторов, теперь хочу вам рассказать о весьма необычном селекторе, который выделяется среди всех остальных – это так называемый универсальный селектор, который обозначается звёздочкой (*):
Так у меня начинается каждый новый проект, советую вам делать также. Универсальный селектор распространяется на все элементы страницы (теги), но имеет нулевой приоритет (ниже только отсутствие приоритета вовсе). Его обычно используют, чтобы перебить CSS свойства, которые браузеры устанавливают по умолчанию для некоторых тегов. Представьте себе, и такое имеет место быть! Достаточно многим тегам браузеры по умолчанию устанавливают свои свойства, например, тегу гиперссылки синий цвет текста и подчёркивание, тегу body они задают поля (padding) и тд. Нам это запоминать, знать и использовать совсем не к чему, поэтому самые банальные свойства мы сразу же убираем с помощью универсального селектора, однако я бы не советовал дописывать в него что-то ещё (или дописывать, но аккуратно), несмотря на наименьший (нулевой) приоритет универсального селектора, он в некоторых случаях всё же может перебить вам другие свойства, так что имейте это в виду.
Кстати говоря, при работе с селекторами, как и при любой работе связанной с вёрсткой макета очень удобно использовать просмотр элементов страницы. Если вы ещё не в курсе таких вещей как Opera Dragonfly, Firebug и веб-инспекторы в целом, то вам без преувеличений срочно нужно прочесть статью по ссылке выше! А кто уже использовал подобные вещи, прошу дальше за мной.
Псевдо-классы
В отличие от классов, псевдо-классы не нужно указывать в HTML разметке, они сами вычисляются браузером. У нас есть 4 статических псевдо-класса и 3 динамических псевдо-класса, без учёта CSS 3, о нём ближе к концу. К статическим относятся ( :first-child, :link, :visited, : lang() ):
Прямой наследник (первый уровень)
Третий уровень
Прямой наследник (первый уровень)
Второй уровень
Прямой наследник (первый уровень)

Естественно можно комбинировать селекторы как захотим, например:
div>span p:first-child /*сработает, если p является первым ребёнком своего родителя и находится внутри тега span, который является прямым потомком тега div */
Название представленного выше псевдо-класса говорит само за себя first-child — первый ребёнок.
Следующие два статических псевдо-класса применяются только к тегу гиперссылки (:link, :visited), они применяют CSS свойства в зависимости от того, посещалась данная ссылка конкретным пользователем или нет:
a:link /* у не посещённых ссылок задаём синий цвет, и по умолчанию они подчёркнуты */ a:visited /* у посещённых ссылок текст будет зелёным, убираем подчёркивание */
Псевдо-класс :lang() используется для задания разного стиля оформления в зависимости от языка. В скобочках указывается язык, к которому нужно применить оформление. Это можно использовать, например, для задания разных стилей кавычек в цитатах:
q:lang(de) /* кавычки для немецкого языка */ q:lang(en) /* кавычки для английского языка */ q:lang(ru) /* кавычки для русского языка */
Это, пожалуй, единственный из всех возможных видов селекторов, который я никогда не использовал.
Динамические псевдо-классы
Динамические псевдо-классы – это :active, :hover, :focus. Динамические псевдо-классы срабатывают по определённому действию на странице, они работают для всех тегов, а не только для ссылок как многие думают и даже утверждают в своих блогах! Рассмотрим их применение:
p:active /* стиль, который применится к тегу по нажатию на него (клику мышью) */ input:focus /* стиль, который применится к элементу, на котором в данный момент фокус (работает, к примеру, для текстовых полей ввода: textarea, input). В данном случае по взятию в фокус, ширина input станет равна 400 пикселей, удобно использовать для красивого эффекта удлинения поля по клику. */ div:hover /* срабатывает по наведению курсора на элемент, в основном применяется для создания красивого эффекта при наведении на ссылки. */
Примените данные стили к нашему примеру выше, и вы сами всё увидите.
Смежные селекторы
Смежные селекторы – это ближайший сосед ниже по коду, не ребёнок! Очень удобный селектор:
текст в параграфе первого div
текст в параграфе ВНЕ div
текст в спанетекст в параграфе второго div
снова параграф вне div

Обобщённые смежные селекторы
Обобщённые смежные селекторы действуют точно также как и обычные смежные селекторы, за исключением того, что свойства применяются не только к первому соседу ниже, а ко всем заданным соседям ниже:
div~pтекст в дивепараграф
параграф
параграф
текст в спанепараграф
параграф
параграф в диве
параграф в диве
текст в спанепараграф
Селекторы атрибутов
Селекторы атрибутов позволяют нам обратиться к тегам, имеющим необходимый нам атрибут или даже конкретное его значение:
p[align] /* применить ко всем тегам p, у которых есть атрибут align */
p[align="center"] /* где значение атрибута align равно center */
p[align^="center"] /* где значение атрибута align начинается на center */
p[align*="center"] /* где значение атрибута align содержит center */
p[class~="site"] /* где site может находиться среди других слов, отделенных пробелами ( ) */
p[class|="site"] /* где значение атрибута class состоит только из слова site или начинается им, после чего ставится дефис и пишется остальная часть значения ( или ) */
p[class$="site"] /* где значение атрибута align заканчивается на site */
CSS 3 псевдо-классы
Вы уже ознакомились со всеми основными селекторами и вам на первых парах этого должно хватить с горкой. Однако в CSS 3 появилось множество новых псевдо-классов, теперь мы можем брать не только первого ребёнка, но и любого другого по счёту, можем идти от обратного, брать не первого, а последнего ребёнка и так далее и тому подобное. Всё это очень удобно и практично, разве что у вас могут возникнуть проблемы со старыми версиями IE. Давайте соберём все силы в кулак и пробежимся по всем оставшимся селекторам, чтобы потом уже вы могли иметь их ввиду при вёрстке собственного макета.
:last-child – аналог :first-child, только берёт не первого, а последнего ребёнка.
:only-child – сработает, если элемент (тег) является единственным ребёнком.
:only-of-type — сработает, если элемент (тег) является единственным ребёнком своего типа.
:nth-child() – обращается к потомкам по их порядковым номерам, можно обращаться ко всем чётным или нечётным (even или odd) числам. Например:
параграф
параграф
параграф
текст в спанепараграф
параграф
параграф
параграф
параграф
параграф

:nth-last-child – работает также как и предыдущий, но отчёт начинается с конца.
:first-of-type – первый ребёнок своего типа в рамках прямого родителя.
:last-of-type – последний ребёнок своего типа в рамках прямого родителя.
:empty – сработает для тех тегов, внутри которых нет ни одного символа (без текста).
:not() – делает исключение для заданных элементов. Пример:
параграф с классом roll
параграф
параграф
параграф с классом roll

Управление полями, формами, переключателями и флажками в CSS
:enabled — применяется к доступным элементам интерфейса как формы, кнопки, переключатели и тд. По умолчанию все элементы интерфейса являются доступными.
:disabled — применяется к заблокированным элементам интерфейса как кнопки, формы и так далее. Элементы интерфейса являются заблокированными, если к ним в HTML добавить атрибут disabled или в XHTML disabled=”disabled”.
:checked – применяется к элементам интерфейса типа переключатели (radio) и флажки (checkbox), когда они находятся во включённом положении.
Псевдо-элементы
Псевдо-элементы, аналогично псевдо-классам вычисляются браузером автоматически, нам об этом заботиться не нужно. Чтобы не путать псевдо-элементы с псевдо-классами в спецификации CSS 3 было решено использовать двойное двоеточие, вместо одинарного, как было в CSS 2. Поэтому в Интернете вы можете встретить псевдо-элементы как с одинарным двоеточием так и с двойным – и тот и тот вариант верен. Однако для лучшей совместимости с IE рекомендуют использовать одинарное двоеточие.
:first-line – первая строка внутри блочного или табличного элемента.
:first-letter – первая буква внутри блочного элемента.
:before и :after – используются чтобы с помощью CSS вставить содержимое до или после элемента, к которому они относятся, лично я ими не пользовался, поэтому сильно расписывать не буду. А как часто вы используете данные псевдо-элементы в своих проектах? Можете поделиться своим опытом в комментариях к данной статье.
Итоги: теперь вы знаете и можете использовать всю мощь каскадных таблиц стилей, однако это не значит, что нужно сразу ринуться верстать макеты сайтов, используя как можно больше изученных сегодня селекторов, псевдо-классов и псевдо-элементов. Я перечислил все возможные инструменты, а вы должны выбрать лишь самое нужное для себя.
Преимущества оптимизации HTML за счёт CSS
Суть всего написанного выше отчасти заключается в том, чтобы отказаться от повсеместного использования атрибутов class и id в HTML, тем самым возложив всё на плечи могучих таблиц стилей.
Внешние файлы стилей, как и внешние файлы Javascript отлично кэшируются, а это значит, что зайдя первый раз на любую страницу вашего сайта, браузер пользователя запоминает эти файлы и более их не скачивает, в отличие от самой страницы сайта, то есть вашей HTML разметки, картинок и текста, которую браузер загружает снова и снова. Тоже самое касается и поисковых систем, им вообще нет дела до ваших внешних файлов, но вот до объёма и содержания вашей HTML разметки им дело есть. Поисковым системам приходится сканировать всю структуру страницы и в ваших же интересах помочь им в этом, сосредоточить их усилия на контенте, а не на громоздкой стене разметки состоящей из кучи классов и идентификаторов или того хуже – Javascript обработчиков событий и CSS стилей прямо в атрибутах тегов (и такое до сих пор бывает).
Вы можете со мной поспорить, мол, мы можем заставить клиентский браузер скачивать себе в локальную среду все подключаемые файлы, картинки, закэшировать всю страницу целиком и так далее и тому подобное. На таком фоне подобная мелочь совсем теряется, но так или иначе максимально сократив HTML разметку, вы только выигрываете, при этом ничего не потеряв, кроме возможной привычки.
Подытожим: благодаря оптимизации и сокращению HTML мы имеем совсем небольшой выигрыш в скорости загрузки сайта и в SEO (поисковой оптимизации), а также более чистый код.
CSS классы и идентификаторы: полное руководство для начинающих

Представьте, что вы разрабатываете интернет-страницу. Вы хотите, чтобы группа заголовков имела крупный красный текст, группа кнопок ─ средний белый текст, а группа абзацев − маленький синий текст.
Смелый выбор. Но, благодаря CSS классам, вы можете сделать именно это. Классы CSS позволяют применять уникальные свойства стиля к группам HTML элементов для достижения желаемого внешнего вида интернет-страницы.
Основные термины, которые нужно знать: классы CSS, селектор класса и специфичность CSS. Итак, как создать класс в CSS? Как использовать классы в CSS для оформления страниц?
Что такое CSS класс?
CSS класс элемента — это атрибут, используемый для определения группы HTML элементов с целью применения уникального стиля и форматирования к этим элементам с помощью CSS.
Давайте посмотрим на пример того, как работают CSS классы. Ниже у нас есть простая HTML-страница с тремя заголовками (элементы h2) и тремя абзацами (элементы p).
Обратите внимание, что второй заголовок, третий заголовок и последний абзац оформлены иначе, чем остальные, так как этим элементам присвоен класс .bright. Селектор класса CSS .bright применяет свои правила стиля ко всем элементам с атрибутом >
Первый заголовок
Первый абзац.
Второй абзац.
.bright

Вы можете использовать классы CSS для группировки HTML элементов, а затем применять к ним пользовательские стили. Вы можете создавать CSS класс элемента для текста, кнопки, отступа, таблицы, изображения или любому другому элементу страницы, который только сможете придумать. Давайте теперь подробнее рассмотрим, как использовать классы в CSS для оформления элементов страницы.
Как создать класс в CSS?
Давайте попробуем задать класс CSS с нуля. Допустим, вы хотите создать абзац текста и оформить определенные слова для большей выразительности. Вы можете сделать это, создав класс CSS для этих специальных слов, затем присвоив этот класс отдельным словам с помощью тегов span.
Начните с написания HTML элементов, которые вы хотите стилизовать. В данном случае это абзац текста.
Наше маркетинговое программное обеспечение и сервисная платформа предоставляют вам инструменты, необходимые дляпривлечения посетителей, превращения их в потенциальных клиентов и завоевания их доверия в качестве клиентов.
Здесь размещены теги вокруг слов, которые поможет оформить CSS класс элемента. Разберёмся, как задать стиль классу CSS.
Давайте добавим атрибуты класса к этим тегам. Для этого добавьте атрибут к открывающему тегу целевого элемента и замените name уникальным идентификатором класса.

В нашем примере HTML выглядит следующим образом:
Наше и предоставляют вам инструменты, необходимые для посетителей, их в потенциальных клиентов и в качестве клиентов.
Здесь мы добавили два CSS класса к нашим тегам span: orange-text и blue-text.
Теперь давайте рассмотрим некоторые вопросы, которые у вас могут возникнуть о CSS классах.
Куда можно добавить CSS классы в HTML?
Классы CSS могут быть добавлены к любому HTML элементу.
Самые популярные:
- Абзац (
)
- Body ()
- Title ()
- Заголовки ()
- Цитаты ()
- Span ()
- Div ()
- Изображения (
)
- Кнопки ()
- Ссылки ()
- Нумерованные списки и элементы списка (
и - соответственно)
- Маркированные списки и элементы списка (
-
и соответственно)
- Таблицы ()
Проще говоря, если у вас есть HTML элемент, вы можете добавить CSS класс.
Сколько CSS классов можно добавить к элементу?
Часто использование классов в CSS заключается в добавлении определенного стиля к конкретному элементу.
Вы не ограничены одним классом для каждого элемента. Хотя вы можете указать классы CSS для всех абзацев на вашей странице (задать размер шрифта или цвет фона), вы также можете указать классы для отдельных абзацев, чтобы изменить их цвет или отступы, сохраняя при этом общие правила стиля.
На практике вы можете задать в CSS несколько классов одному элементу. Можно добавить к одному элементу столько классов, сколько захотите, но стоит внимательно следить за всеми изменениями, чтобы убедиться, что вы можете вернуться к предыдущим версиям, если финальный результат не оправдал ожидания.
Чем отличаются классы и ID в HTML?
Классы и идентификаторы в CSS имеют одно маленькое отличие: идентификаторы уникальны, а классы − нет.
На практике разница между классом и идентификатором в CSS означает, что несколько элементов на странице могут иметь класс, в то время как элементы могут иметь только один идентификатор, и каждая страница может иметь только один элемент с этим идентификатором.
Представьте комментарий к посту WordPress. Хотя вы можете использовать класс “item” для определения всех комментариев на одной странице, вы также можете назначить динамически генерируемое значение WordPress для комментария в качестве его уникального идентификатора.
Это единственный идентификатор, который может иметь элемент, и его нельзя повторить нигде на странице. Использование идентификаторов позволяет вам легко находить определенные элементы, а для правильного отображения вашего HTML-кода во внешнем интерфейсе важно убедиться, что один и тот же идентификатор не повторяется между элементами.
Когда нужно использовать идентификатор, а не класс?
Хотя не существует жёсткого правила как использовать классы и ID, по общему мнению, ID стоит использовать для элементов, которые появляются один раз на странице (для верхних и нижних колонтитулов или меню), а классы ─ для элементов, которые появляются больше одного раза (для абзацев, ссылок и кнопок).
Классы и идентификаторы в CSS можно использовать совместно. Два элемента button могут иметь одинаковые классы для определения их базового размера и стиля, но разные идентификаторы для определения их положения на странице.
После того как вы добавили класс к элементу, вам нужно создать наборы правил для этих классов в CSS. “Наборы правил” или CSS стиль класса — это строки кода, которые сообщают браузеру, как эти элементы должны выглядеть во внешнем интерфейсе вашего сайта. Мы можем начать создавать наборы правил, используя селекторы классов CSS и блоки кода, содержащего правила стиля.
Нужно создать наборы правил для этих классов в CSS. Мы делаем это с помощью селекторов классов CSS и блоков.
Что такое селектор класса CSS?
В CSS селектор классов форматируется как символ точки (.), за которым следует название класса. Он выбирает все элементы с этим атрибутом класса, чтобы уникальные блоки CSS могли быть применены к этим конкретным элементам, не затрагивая другие элементы на странице.
В нашем примере создадим блоки кода для обоих CSS классов с помощью селекторов .orange-text и .blue-text.
/* declaration for our first CSS class */ .orange-text < color: orange; font-weight: bold; >/* declaration for our second CSS class */ .blue-text
Когда мы объединяем наши HTML и CSS вместе, мы видим, как наши классы CSS нацелены на определённые элементы с помощью нашего пользовательского стиля.
Наше и предоставляют вам инструменты, необходимые для посетителей, их в потенциальных клиентов и в качестве клиентов.
/* declaration for our first CSS class */ .orange-text < color: orange; font-weight: bold; >/* declaration for our second CSS class */ .blue-text

Обратите внимание, что атрибут класс сам по себе не изменяет содержимое или стиль HTML документа. Простое добавление атрибута класса к элементу без какого-либо CSS не изменит внешний вид или форматирование элемента во внешнем интерфейсе. В каком случае вы сможете изменить CSS класс и увидеть, что на сайте что-то поменялось? В том случае, когда CSS класс элемента получит определённые правила стиля.
Это также помогает создавать названия классов HTML CSS или имена классов, описывающие элемент в классе. В приведенном выше примере мы использовали названия классов CSS .orange-text и .blue-text, потому что мы создавали цветной текст. Эти названия достаточно наглядны, чтобы кто-то, читающий CSS, понял назначение класса.
Как называть классы в CSS?
Имя CSS класса может состоять из одного или нескольких слов. Если имя вашего класса состоит из нескольких слов, используйте дефисы там, где вы бы ставили пробелы. Кроме того, обычной практикой является написание имён классов в нижнем регистре. Логичные названия классов CSS: .bright-blue и .fancy-text.
Как сделать класс в CSS?
Теперь, когда мы понимаем, что такое CSS класс и как он отображается в разделе body HTML файла, давайте подробнее рассмотрим использование классов в CSS.
Откройте HTML документ
Чтобы использовать CSS классы, мы на самом деле не начинаем с CSS кода. Сначала нужно открыть HTML документ в редакторе кода или в редакторе админки сайта.
Найдите или создайте элемент, который вы хотите изменить
Найдите HTML элемент, который вы хотите оформить с помощью уникального CSS класса. Это может быть любой HTML элемент: кнопка, раздел, абзац, заголовок, ссылка, таблица и что-то другое.
Это также поможет найти соответствующий элемент во внешнем интерфейсе сайта, чтобы можно было задать CSS стиль класса и увидеть внесённые изменения по мере их появления.
Добавьте объявление класса CSS в открывающий тег HTML элемента
Как записать класс в CSS? Технически этот шаг может быть выполнен на любом этапе этого процесса, но лучше добавлять класс CSS в открывающий тег сразу после проверки HTML документа. Однако можно перейти к следующему шагу и подумать, как указать класс в CSS, после того, как закончите.
Это div, который останется без редактирования.Откройте CSS файл
Откройте CSS-файл в редакторе кода админки сайта или получите доступ к нему на сервере.
В качестве альтернативы, получите доступ к тегам в заголовке HTML документа.
Создайте класс CSS и его правила
Чтобы присвоить класс CSS, добавьте точку (.), а затем напишите имя CSS класса. Это должно выглядеть примерно так:
.class-example
Вставьте правила вашего стиля между открытыми фигурными скобками. Это может быть что угодно, от отступов до цвета фона и цвета текста.
Не забывайте постоянно обновлять сайт, чтобы увидеть, как отображаются ваши изменения
Примените класс CSS к нескольким элементам HTML
Если вас устраивают внесенные изменения, вернитесь в свой HTML-код и примените класс CSS ко всем элементам, которые вы хотели бы оформить с помощью этих же правил стиля.
Это div, который останется без изменений.Есть некоторая разница между классом и идентификатором в CSS. В отличие от CSS ID, классы CSS можно использовать для нескольких элементов, но имейте в виду, что вы должны поддерживать согласованный тип элемента. Например, если вы создали класс для оформления div, то вам следует использовать его только для div, а не, например, для div и таблиц.
Как используется CSS стиль класса?
Bootstrap CSS-классы
Многие CSS-фреймворки интенсивно используют CSS-классы. Например, Bootstrap CSS использует классы для определения элементов страницы.
Давайте посмотрим пример того, как Bootstrap использует CSS классы. В Bootstrap CSS класс CSS .btn может использоваться с HTML-элементом (а также с элементами и ).
Bootstrap содержит CSS, который автоматически форматирует любые элементы, определенные с помощью класса .btn определённым образом. Простое добавление атрибута к элементу изменяет его внешний вид.
Точнее, добавление класса .btn к элементу задаёт шрифт и размер шрифта, и если посетитель нажимает на текст кнопки, появляется контур кнопки со скруглёнными краями.
В Bootstrap также есть классы для оформления кнопок другими способами, такими как цвет фона. Если мы добавим класс .btn-success или .btn-danger, кнопка будет отображаться зелёным или красным цветом соответственно.
С помощью CSS классов Bootstrap позволяет быстро стилизовать элементы страницы, просто добавив одно или несколько имён классов. Классы CSS позволяют форматировать различные типы элементов при написании меньшего объёма кода.
Псевдо классы
На странице можно увидеть не только содержимое HTML. Большое количество информации об активности пользователя передаётся во время его взаимодействия со страницей. Часть этой информации отражает то, что они делают.
Рассмотрите возможность размещения ссылки в вашем контенте. Пользователь может взаимодействовать со ссылкой, а может и не взаимодействовать. Вы можете использовать псевдо классы для сбора временной информации о пользователе, например, когда он наводит курсор, кликает на ссылку и переходит по ссылке.
Псевдо классы обозначаются двоеточием, за которым следует класс. Они появятся после CSS селектора без пробела.
Распространённые псевдо классы для оформления ссылок:
- :link предназначена для ссылки, которую пользователь не посещал.
- :visited указывает на ссылку, которую пользователь посещал ранее.
- :hover применим в ситуации, когда курсор пользователя наведён на ссылку.
- :active нацелен на ссылку, которая нажимается.
Давайте посмотрим на конкретном примере. Допустим, вы хотите убрать подчёркивание только с определённых ссылок во всех состояниях. Это означает, что независимо от того, посетил ли пользователь ссылку, навёл на неё курсор или активно нажимает на неё, подчеркивание не появится под этими конкретными ссылками.
В этом случае вам нужно добавить атрибут класс только к ссылкам, с которых вы хотели бы убрать подчёркивание. Добавьте четыре набора правил с помощью селектора классов и четырех соответствующих псевдо классов. В каждом блоке правил стиля установите для свойства text-decoration значение none.
.underline-removed:link < text-decoration: none; >.underline-removed:visited < text-decoration: none; >.underline-removed:hover < text-decoration: none; >.underline-removed:active
Селекторы-потомки
Цель CSS классов − применить форматирование к определённым элементам. С этой целью селекторы-потомки являются отличным дополнением к вашему инструментарию.
Селекторы-потомки позволяют настраивать таргетинг на элементы внутри других элементов. Например, возможно, вы уже создали класс для определения общего стиля текста абзаца или заголовка, но хотите, чтобы определённые слова внутри абзаца были оформлены по-своему.
Селекторы-потомки позволяют добавлять эти специальные стили к определённым словам, не затрагивая окружающий текст и не изменяя HTML документ.
Допустим, вы применили класс .blue-text к заголовку, но хотите изменить цвет слова в заголовке. Заключите слово в элемент span, затем добавьте другой набор правил с потомственным селектором: после селектора класса CSS .blue-text добавьте пробел, а затем селектор типа span.
стильный заголовок
.blue-text < color: blue; font-weight: bold; >.blue-text span
Однако будьте осторожны и не переусердствуйте с этим. Чрезмерное использование селекторов-потомков может привести к созданию запутанных правил, которые затруднят внесение изменений в дальнейшем.
CSS класс против селекторов идентификаторов
В CSS классы группируют несколько элементов, в то время как идентификаторы используются для идентификации одного элемента. Используйте селектор класса CSS для оформления нескольких HTML элементов одного класса и селекторы идентификаторов для оформления одного уникального HTML элемента.
Хотя у вас может быть несколько экземпляров класса на HTML странице, у вас может быть только один экземпляр CSS ID на странице. Чтобы присвоить элементу идентификатор, добавьте атрибут к его открывающему тегу и замените name уникальным идентифицирующим именем. В CSS соответствующий селектор идентификаторов начинается со знака фунта (#) вместо точки.
Атрибуты ID предоставляют цель для фрагментов URL (таких как привязки страниц), поэтому они должны быть уникальными. Фрагменты помогают направить пользователя к определённой части страницы — фрагмент выглядит как селектор идентификатора, размещённый в конце URL.
Специфика CSS
Иногда правила CSS конфликтуют. Например, если несколько селекторов нацелены на один и тот же элемент в документе, какие правила должны применяться? Это определяется спецификой CSS. В CSS разные селекторы имеют разный вес. Когда два или более правил конфликтуют в отношении одного и того же элемента, применяется более конкретное правило.
Иерархия специфичности различных селекторов
- Встроенный CSS. Встроенный CSS отображается в виде атрибутов стиля в открывающем теге HTML-элементов. Поскольку этот CSS наиболее близок к HTML, он обладает наивысшим уровнем специфичности.
- Селекторы идентификаторов. Идентификатор уникален для элемента страницы и, следовательно, очень специфичен.
- Селекторы классов, селекторы атрибутов и селекторы псевдо классов. Эти три типа селекторов обладают одинаковой специфичностью. Если все три типа применяются к одному и тому же HTML-элементу, то тот, который отображается последним в таблице стилей, будет применяться и переопределять остальные.
- Селекторы типов. Они выбирают все HTML-элементы, которые имеют заданное имя узла и имеют синтаксический элемент. Это имена элементов и псевдо элементы.
Поскольку селекторы идентификаторов очень специфичны, почти любой другой тип селектора, который сталкивается с ними, проигрывает. С другой стороны, универсальный селектор (*) будет проигрывать каждый раз из-за своей низкой специфичности.
Иногда, после применения класса CSS к диапазону элементов, вы можете захотеть переопределить правила стиля для определённого элемента на странице. Давайте рассмотрим, как вы можете легко это сделать.
Как переопределить CSS класс?
Определите класс, который вы хотите переопределить
Для начала точно определите класс, который вы хотите переопределить, и, в частности, правило, которое вы хотите изменить. Это может быть цвет шрифта, размер, расположение. Сам класс не так важен, как определение того, где находится класс и как он связан с окружающими его элементами. В идеале вы должны изменить CSS класс, так чтобы получилось минимальное нарушение работы CSS при выполнении переопределения.
Создайте более конкретное правило стиля
В CSS два класса могут спорить друг с другом. Когда дело доходит до двух конфликтующих классов, побеждает тот, у кого сформулировано более конкретное правило стиля. Например, селекторы идентификаторов более специфичны, чем селекторы классов, а селекторы классов более специфичны, чем селекторы типов.
На практике это означает, что добавление селектора класса к элементу, имеющему только селектор типа, переопределит текущий класс, в то время как добавление селектора идентификатора переопределит любой конкурирующий класс или селектор типа.
Если в CSS два класса спорят, используйте команду !important
Вы также можете использовать слово !important в качестве команды для переопределения CSS-класса. В CSS !important имеет чёткое назначение: данная директива важна и должна быть применена. При размещении в конце правил стиля !important будет задавать приоритет над другими классами.
Эта команда эффективно нарушает естественную каскадную функцию CSS, что, в свою очередь, затрудняет отладку кода, поэтому её лучше использовать в особых случаях.
Начните использовать классы в HTML и CSS
CSS класс кнопки
Код CSSa.green < border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.08); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.08); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.08); color: #fff; display:block; width:100px; text-align: center; font-family: Arial, Helvetica, sans-serif; font-size: 14px; padding: 8px 16px; margin: 20px auto; text-decoration: none; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: background-color 0.1s linear; -moz-transition: background-color 0.1s linear; -o-transition: background-color 0.1s linear; transition: background-color 0.1s linear; >a.green < background-color: rgb( 43, 153, 91 ); border: 1px solid rgb( 33, 126, 74 ); >a.green:hover
Стоимость Код CSSa.a-btn-3 < color: #FFFFFF; text-decoration: none; font-family: 'Oswald',Arial,sans-serif; >a.a-btn-3 < background:#80a9da; background:-webkit-gradient(linear,left top,left bottom,color-stop(#80a9da,0),color-stop(#6f97c5,1)); background:-webkit-linear-gradient(top, #80a9da 0%, #6f97c5 100%); background:-moz-linear-gradient(top, #80a9da 0%, #6f97c5 100%); background:-o-linear-gradient(top, #80a9da 0%, #6f97c5 100%); background:linear-gradient(top, #80a9da 0%, #6f97c5 100%); filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#80a9da', endColorstr='#6f97c5',GradientType=0 ); padding-left:20px; padding-right:80px; height:38px; display:block; margin: 20px auto; text-align:center; width:70px; position:relative; border:1px solid #5d81ab; -webkit-box-shadow:0px 1px 1px rgba(255,255,255,0.8) inset, 1px 1px 3px rgba(0,0,0,0.2), 0px 0px 0px 4px rgba(188,188,188,0.5); -moz-box-shadow:0px 1px 1px rgba(255,255,255,0.8) inset, 1px 1px 3px rgba(0,0,0,0.2), 0px 0px 0px 4px rgba(188,188,188,0.5); box-shadow:0px 1px 1px rgba(255,255,255,0.8) inset, 1px 1px 3px rgba(0,0,0,0.2), 0px 0px 0px 4px rgba(188,188,188,0.5); -webkit-border-radius:20px; -moz-border-radius:20px; border-radius:20px; overflow:hidden; -webkit-transition:all 0.3s linear; -moz-transition:all 0.3s linear; -o-transition:all 0.3s linear; transition:all 0.3s linear; >.a-btn-3-text < padding-top:5px; display:block; width:0px; font-size:18px; white-space:nowrap; text-shadow:0px 1px 1px rgba(255,255,255,0.3); color:#446388; -webkit-transition:all 0.2s linear; -moz-transition:all 0.2s linear; -o-transition:all 0.2s linear; transition:all 0.2s linear; >.a-btn-3-slide-text < position:absolute; height:100%; top:0px; right:52px; width:0px; background:#63707e; text-shadow:0px -1px 1px #363f49; color:#fff; font-size:18px; white-space:nowrap; text-transform:uppercase; text-align:left; text-indent:10px; overflow:hidden; line-height:38px; -webkit-box-shadow:-1px 0px 1px rgba(255,255,255,0.4), 1px 1px 2px rgba(0,0,0,0.2) inset; -moz-box-shadow:-1px 0px 1px rgba(255,255,255,0.4), 1px 1px 2px rgba(0,0,0,0.2) inset; box-shadow:-1px 0px 1px rgba(255,255,255,0.4), 1px 1px 2px rgba(0,0,0,0.2) inset; -webkit-transition:width 0.3s linear; -moz-transition:width 0.3s linear; -o-transition:width 0.3s linear; transition:width 0.3s linear; >.a-btn-3-icon-right < position:absolute; right:0px; top:0px; height:100%; width:52px; border-left:1px solid #5d81ab; -webkit-box-shadow:1px 0px 1px rgba(255,255,255,0.4) inset; -moz-box-shadow:1px 0px 1px rgba(255,255,255,0.4) inset; box-shadow:1px 0px 1px rgba(255,255,255,0.4) inset; >.a-btn-3-icon-right span < width:38px; height:38px; opacity:0.7; position:absolute; left:50%; top:50%; margin:-20px 0px 0px -20px; background:transparent url('http://sait.ru/papka-s-kartinkoj/arrow_right.png') no-repeat 50% 55%; -webkit-transition:all 0.3s linear; -moz-transition:all 0.3s linear; -o-transition:all 0.3s linear; transition:all 0.3s linear; >.a-btn-3:hover < padding-right:140px; -webkit-box-shadow:0px 1px 1px rgba(255,255,255,0.8) inset, 1px 1px 3px rgba(0,0,0,0.2); -moz-box-shadow:0px 1px 1px rgba(255,255,255,0.8) inset, 1px 1px 3px rgba(0,0,0,0.2); box-shadow:0px 1px 1px rgba(255,255,255,0.8) inset, 1px 1px 3px rgba(0,0,0,0.2); >.a-btn-3:hover .a-btn-3-text < text-shadow:0px 1px 1px #5d81ab; color:#fff; >.a-btn-3:hover .a-btn-3-slide-text < width:57px; >.a-btn-3:hover .a-btn-3-icon-right span < opacity:1; >.a-btn-3:active
Для вывода стрелочки → используйте HTML код:
Вам ещё нужно скачать и использовать в коде вот такую картинку.


