Скрытые возможности CSS: 10 полезных советов
Даже если вы точно знаете, что изучили все возможности CSS, взгляните на эту статью: некоторые секреты CSS могут стать для вас открытием.
1. CSS-спрайты
Этот трюк объединяет много картинок в одну, тем самым сокращая количество обращений к серверу. Например, чтобы получить 20 изображений для всех кнопок и логотипов вашего сайта (а это 20 HTTP-запросов, если не прибегать к спрайтам), вы просто объединяете все изображения в одно и всякий раз его размещаете. Чтобы была видна нужная часть, просто сдвигайте изображение на требуемое количество пикселей:
.icon {
width: 16px;
height: 16px;
float: left;
background: url(icons.gif) no-repeat;
}
.open .icon {
background-position: 0 -16px; /* вверх на 16px */
cursor: pointer;
}
.closed .icon {
background-position: 0 0px; /* по умолчанию */
cursor: pointer;
}
.leaf .icon {
background-position: 0 -32px; /* вверх на 32px */
cursor: text;
}
CSS-спрайты ускоряют загрузку и работу сайта.
2. Несколько к одному
Применение нескольких стилей/классов к элементу: class="bold red GoldBg"
Foo.Bar(red)
Если у нескольких классов прописаны конфликтующие свойства (например, если бы .red и .GoldBg отвечали за свойство color), тогда применяются правила CSS-специфики. Порядок классов в атрибуте class = "..." не имеет значения. И не забудьте, что IE6 не поддерживает такую возможность, а потому будет применять только последний указанный класс.
3. Отображение title
Вы можете отобразить элемент заголовка документа:
head, title {
display: block;
}
4. Некоторые простые возможности CSS
Вряд ли это относится к по-настоящему скрытым возможностям, но новички могут не знать:
@charset "UTF-8"; /* первая строка в обязательном порядке устанавливает набор символов */
.element {
/* имеет преимущество перед другими стилями */
display: block !important;
/* mozilla .... закругленные углы без изображений */
-moz-border-radius: 10px;
/* эквивалент webkit */
-webkit-border-radius: 10px
}
5. Улучшенный контроль
Вы можете установить ширину переменной для абсолютно позиционированного элемента, указав оба свойства left и right. Это даст вам больше контроля, чем просто установка ширины в процентах:
#myElement {
position: absolute;
left: 5px;
right: 10px;
}
Альтернативный пример:
#myElement{ /* заполнить все пространство :) */
background: red;
position:absolute;
left: 0;
right:0;
top: 0;
bottom: 0;
}
6. Селектор дочерних элементов
На самом деле, это не особенность, но все равно полезная вещь: селектор «потомков» работает во всех браузерах, кроме IE6, что позволяет изолировать IE6 без использования хаков, условных таблиц стилей или т. д. Таким образом, ссылка в следующем коде будет красной в IE6 и синей в любом другом браузере.
CSS
/* Красный для IE6 */
.link {color:#F00;}
/* Синий для всего остального */
#content>.link {color:#00F;}
Вот список селекторов (для CSS2) и диаграммы совместимости браузеров.
7. Скроллбар без фрейма
Возможности CSS ориентированы на удобство написания, и этот способ – тому подтверждение. Вы можете создавать области прокрутки без использования фреймов. Делается это так:
div.foo {
border: 1px solid;
width: 300px;
height: 300px;
overflow: auto;
}
overflow: auto: если содержимое не может быть помещено в div, горизонтальные и/или вертикальные полосы прокрутки появятся по мере необходимости.
overflow: scroll: всегда будут видны обе полосы прокрутки. Если вы хотите, чтобы была только одна полоса, используйте overflow-x или overflow-y, которые поддерживаются современными браузерами, в том числе IE6.
Предупреждение! Некоторые пользователи утверждают, что iPad и iPhone не поддерживают данный трюк: не отображается полоса прокрутки, и просто обрезается контент. Другие же говорят, что в iOS (точнее, в мобильном браузере Safari) все отображается нормально. Тестируйте!
8. Псевдоэлементы :before и :after
Следующий пример вызывает создание строки «Chapter: » перед каждым элементом H1:
H1:before {
content: "Chapter: ";
display: inline;
}
Подробнее об этом рассказывается здесь.
9. Прозрачный PNG в IE6
Этот прием фиксирует прозрачность PNG в браузере IE6. Установите для бэкграунда none и включите изображение в фильтр. Нет необходимости в JavaScript:
.whatever {
background: none; /* Скрыть текущее фоновое изображение, чтобы вы могли заменить его на фильтр */
width: 500px; /* Необходимо указать ширину */
height: 176px; /* Необходимо указать высоту */
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='vehicles.png');
}
10. Чистый СSS код
Каждый разработчик хочет видеть в своем коде только необходимое. Небольшие советы по его «очистке» подойдут новичкам.
До:
font-size: 1em; line-height: 1.5em; font-weight: bold; font-style: italic; font-family: serif
После:
font: 1em/1.5em bold italic serif;
До:
background-color: #fff; background-image: url(image.gif); background-repeat: no-repeat; background-position: top left;
После:
background: #fff url(image.gif) no-repeat top left;
До:
list-style: #fff; list-style-type: disc; list-style-position: outside; list-style-image: url(image.gif)
После:
list-style: disc outside url(something.gif);
До:
margin-top: 2px; margin-right: 1px; margin-bottom: 3px; margin-left: 4px
После:
margin:2px 1px 3px 4px; /*также работает для padding*/ margin:0; margin:2px 3px 5px;
Надеемся, приведенные возможности CSS сделают работу с каскадными таблицами стилей более комфортной. Удачи!