<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
<stylesheet type="text/css">
.body{font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
}
.p{margin:0.5em 0 0 0.3em; padding:0.2em; text-align:justify;
}
</stylesheet>
<description>
<title-info>
<genre>sf_history</genre>
<author>
<first-name>Имя автора</first-name>
<last-name>Фамилия автора</last-name>
</author>
<book-title>Название книги</book-title>
<annotation></annotation>
<date>Дата</date>
<lang>ru</lang>
</title-info>
<document-info>
<author><nickname></nickname>
</author>
<program-used>Lib converter jcms</program-used>
<date value=""></date>
<src-url>http://johncms.com</src-url>
<id></id>
<version>1.0</version>
<history><p>book</p></history>
</document-info>
</description>
<body>
<title><p>Оптимизация css(5 свойств)</p>
</title>
<section><p>Оптимальный CSS играет важную роль в создании сайта. В этой статье показаны варианты краткой записи для пяти основных свойств css.</p>
<p></p>
<p>Отличный способ оптимизации CSS – это использование сокращенного синтаксиса. Проработав с большим количеством кода, я надежно заучил массу вариантов CSS-верстки, но все равно мне порой приходится обращаться к какому-нибудь письменному источнику, чтобы освежить память. В этом топике я покажу вам правила сокращенной записи для следующих свойств:</p>
<p>Свойства шрифтов.</p>
<p>Свойства списков.</p>
<p>Свойства фона.</p>
<p>Свойства границ и контуров</p>
<p>Свойства переходов (для CSS3)</p>
<p></p>
<p>Это топ 5 в моем списке самых сложных и часто используемых сокращенных свойств. Есть и другие, даже в CSS3, но им я посвящу отдельный пост. Ладно, хватит обо мне, давайте приступим.</p>
<p>Свойства шрифтов</p>
<p></p>
<p>Стилизация шрифтов включает в себя ряд отдельных свойств. Можно сэкономить довольно много места, используя сокращенный метод записи, но надо быть осторожным с их порядком, например font-size и font-family должны располагаться именно в такой последовательности. Вот все 6 свойств шрифта в значениях по умолчанию:</p>
<p></p>
<p>/* свойства шрифтов со значениями по умолчанию */</p>
<p>font-variant: normal</p>
<p>line-height: normal</p>
<p>font-family: varies</p>
<p>font-weight: normal</p>
<p>font-style: normal</p>
<p>font-size: medium</p>
<p></p>
<p>Эти 6 строчек можно объединить в одно правило, основываясь на спецификациях W3C:</p>
<p></p>
<p>/* краткая запись для свойств шрифта */</p>
<p>font: [font-style] [font-variant] [font-weight] [font-size]/[line-height] [font-family];</p>
<p></p>
<p>/* ПРИМЕРЫ */</p>
<p>font: 14px Georgia, serif;</p>
<p>font: 14px/1.4 Georgia, serif;</p>
<p>font: italic lighter 14px/1.4 Georgia, serif;</p>
<p>font: italic small-caps lighter 14px/1.4 Georgia, serif;</p>
<p></p>
<p>Как видите, код в одну строку заменяет весь блок свойств. Согласитесь, так куда элегантнее.</p>
<p>Свойства списков</p>
<p></p>
<p>В CSS есть 3 свойства, позволяющие работать со списками. Все три простейшие: вид маркера, адрес изображения, позиция в тексте (type, image, и position). Вот они, заданные по умолчанию:</p>
<p></p>
<p>/* свойства списка по умолчанию */</p>
<p>list-style-position: outside;</p>
<p>list-style-image: none;</p>
<p>list-style-type: disc;</p>
<p></p>
<p>Давайте упростим, согласно правилам W3C:</p>
<p></p>
<p>/* краткая форма для свойств списка */</p>
<p>list-style: [list-style-type] [list-style-position] [list-style-image];</p>
<p></p>
<p>/* ПРИМЕРЫ */</p>
<p>list-style: none;</p>
<p>list-style: disc;</p>
<p>list-style: disc outside;</p>
<p>list-style: disc outside url(bg.png);</p>
<p></p>
<p>Вот так просто: сокращаем название каждого свойства в любой комбинации и все.</p>
<p>Свойства фона</p>
<p></p>
<p>Многие таблицы стилей содержат несколько селекторов со свойствами фона. Каждое из пяти свойств представляет из себя много кода. Вот они, во всей своей красе, по умолчанию:</p>
<p></p>
<p>/* свойства фона в значении по умолчанию */</p>
<p>background-attachment: scroll;</p>
<p>background-color: transparent;</p>
<p>background-position: top left;</p>
<p>background-repeat: repeat;</p>
<p>background-image: none;</p>
<p></p>
<p>К счастью, большинству дизайнеров знакома сокращенная форма записи, а не индивидуальное название каждого свойства. Для экономии, эти пять строк можно превратить в одну, все так же основываясь на спецификациях W3C:</p>
<p></p>
<p>/* краткая форма записи свойств фона */</p>
<p>background: [background-color] [background-image] [background-repeat] [background-attachment] [background-position];</p>
<p></p>
<p>/* ПРИМЕРЫ */</p>
<p>background: #777;</p>
<p>background: url(http://domain.tld/images/bg.png) 0 0;</p>
<p>background: #777 url(http://domain.tld/images/bg.png) repeat-x 0 0;</p>
<p>background: #777 url(http://domain.tld/images/bg.png) repeat-x fixed 0 0;</p>
<p></p>
<p>Есть несколько нюансов, касающихся правильного использования сокращенного синтаксиса и записи свойств фона с его помощью, со всеми можно ознакомиться в официальной документации разработчиков.</p>
<p>Свойства границ и контуров. Границы (border)</p>
<p></p>
<p>Стилизовать границы и контуры намного проще, записывая свойства в сокращенном виде. Вот как 3 свойства border выглядят по умолчанию:</p>
<p></p>
<p>/* свойства границ по умолчанию */</p>
<p>border-width: none;</p>
<p>border-style: none;</p>
<p>border-color: none; </p>
<p></p>
<p>Объединяем согласно спецификации W3C:</p>
<p></p>
<p>/* краткая запись свойств границы */</p>
<p>border: [border-width] [border-style] [border-color];</p>
<p></p>
<p>/* ПРИМЕРЫ */</p>
<p>border: 1px solid #111;</p>
<p>border: 2px dotted #222;</p>
<p>border: 3px dashed #333;</p>
<p></p>
<p>Можно также упростить форму записи для каждой из границ рамки:</p>
<p></p>
<p>border-bottom: 1px solid #777;</p>
<p>border-right:  2px solid #111;</p>
<p>border-left:   2px solid #111;</p>
<p>border-top:    1px solid #777;</p>
<p></p>
<p>На самом деле, с границами можно колдовать намного больше. Если хотите узнать подробнее, почитайте вот этот скучный пост – информация крайне сухая, но очень полезная. Также много интересного можно найти о создании в CSS красивых закругленных углов.</p>
<p>Контуры (outline)</p>
<p></p>
<p>Очень схожи с border. Вот три отдельных свойства:</p>
<p></p>
<p>/* свойства контуров */</p>
<p>outline-width: thin;</p>
<p>outline-style: dotted;</p>
<p>outline-color: inherit;</p>
<p></p>
<p>И краткий вариант:</p>
<p></p>
<p>/* shorthand notation for outline properties */</p>
<p>outline: [outline-width] [outline-style] [outline-color];</p>
<p></p>
<p>/* ПРИМЕРЫ */</p>
<p>outline: 1px solid #111;</p>
<p>outline: 2px dotted #222;</p>
<p>outline: 3px dashed #333;</p>
<p></p>
<p>Несколько замечаний по поводу контуров (outline): </p>
<p> Не все браузеры поддерживают свойство outline </p>
<p> Контуры не противоречат размещению – они располагаются над элементом </p>
<p> Дизайнеры часто удаляют ненужные границы на графических ссылках </p>
<p> Если вы убираете стили контуров, устанавливая таблицу заново, не забудьте использовать альтернативный стиль</p>
<p>Свойства переходов (CSS3) ↩</p>
<p></p>
<p>Анимированные переходы в CSS находятся на стадии разработки, так что корректно их пока поддерживают только основанные на Webkit браузеры, такие как Сафари. Заставить работать transition в Firefox, Chrome, и Opera можно, добавив несколько строчек к коду. Вот 4 свойства переходов, как всегда, по умолчанию:</p>
<p></p>
<p>/* свойства переходов в значениях по умолчанию */</p>
<p>transition-property: none;</p>
<p>transition-duration: none;</p>
<p>transition-delay: none;</p>
<p>transition-timing-function: none;</p>
<p></p>
<p>И сокращенный вариант, обязательно с примерами:</p>
<p></p>
<p>/* сокращенная форма записи для переходов */</p>
<p>transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];</p>
<p></p>
<p>/* ПРИМЕРЫ */</p>
<p>transition: opacity 3s ease 1s;</p>
<p>transition: opacity 3s ease-in 1s;</p>
<p>transition: opacity 3s ease-out 1s;</p>
<p>transition: opacity 3s ease-in-out 1s;</p>
<p></p>
<p>Стиль «слово, число, слово, число» очень удобен. Разделяя числа словами, как на примере выше, легче запомнить порядок, в котором идут свойства. Но как упоминалось ранее, чтобы заставить работать свойства во всех основных браузерах (кроме IE), надо дописать еще несколько правил. Почти то же самое, только в начале используются префиксы в соответствии с вариантами браузеров:</p>
<p></p>
<p>-webkit-transition: opacity 3s ease 1s;</p>
<p>-moz-transition: opacity 3s ease 1s;</p>
<p>-o-transition: opacity 3s ease 1s;</p>
<p>transition: opacity 3s ease 1s;</p>
<p></p>
<p>Да, дополнительные строчки портят элегантность краткой записи переходов, но зато так они будут работать. Я рассматриваю это как независимое усовершенствование. Все эти специфичные свойства для браузеров влияют только на них, и ни на что больше.</p>
</section>
</body>
</FictionBook>