Как сделать тень на CSS
Дизайнеры очень любят добавлять всякие тени на свои блоки. В Photoshop это делается в течение двух секунд, а вот для верстальщика - это целая история. Если Вы будете искать в Интернете, как сделать тень на CSS, то обнаружите, что почти везде используется CSS3, который, как я уже писал, ещё рано использовать. Есть смесь CSS3 и JQuery (вообще ужас), чтобы тень была кроссбраузерной. В общем, одно решение хуже другого, а я же в этой статье покажу кроссбраузерный вариант без всяких JQuery и CSS3.
Первым делом Вам надо вырезать следующие картинки:
- Верхнюю границу с левым углом, но без правого. Желательно, чтобы её длина была заведомо больше, чем потребуется для блока.
- Верхний правый угол.
- Полоски слева и справа от блока высотой по 1 пикселю.
- Нижняя граница с левым углом и так же без правого. Снова надо, чтобы полоса эта была максимально длинной.
- Правый нижний угол.
Вот эти 6 картинок у Вас должны быть, а далее надо написать следующий HTML-код:
<div class="shadow-block">
<div class="sh-top"></div>
<div class="sh-rt"></div>
<div class="sh-sl">
<div class="sh-sr">
<div class="sh-content">
<p>Тут содержимое блока</p>
</div>
</div>
</div>
<div class="sh-bottom"></div>
<div class="sh-rb"></div>
</div>
Теперь CSS-код:
/* Прячем область за блоками */
.shadow-block,
.shadow-block .sh-sl,
.shadow-block .sh-content {
overflow: hidden;
}
/* Высота верхней и нижней рамки тени, а также углов */
.shadow-block .sh-top,
.shadow-block .sh-rt,
.shadow-block .sh-rb,
.shadow-block .sh-bottom {
height:20px;
}
/* Ширина углов, их выравнивание и подъём наверх */
.shadow-block .sh-rt,
.shadow-block .sh-rb {
float:right;
margin-top: -20px;
width:20px;
}
/* Отступ справа (для уголков) */
.shadow-block .sh-bottom,
.shadow-block .sh-top {
margin-right: 20px;
}
/* Длинная полоска с верхней тенью (левый угол уже на картинке) */
.shadow-block .sh-top {
background: url("images/st.png") no-repeat;
}
/* Верхний правый угол (левый угол уже имеется на полоске) */
.shadow-block .sh-rt {
background: url("images/rt.png") no-repeat;
}
/* Горизонтальная полоса тени (высота 1 пиксель) слева от блока */
.shadow-block .sh-sl {
background: url("images/sl.png") left repeat-y;
}
/* Горизонтальная полоса тени (высота 1 пиксель) справа от блока */
.shadow-block .sh-sr {
background: url("images/sr.png") right repeat-y;
}
/* Цвет блока и отступ от границ с тенями */
.shadow-block .sh-content {
background: #FFF;
margin: 0 20px;
}
/* Длинная полоска с нижней тенью (левый угол уже на картинке) */
.shadow-block .sh-bottom {
background: url("images/sb.png") no-repeat;
}
/* Нижний правый угол (левый угол уже имеется на полоске) */
.shadow-block .sh-rb {
background: url("images/rb.png") no-repeat;
}
Безусловно, это сложный способ, но я его использую в своей практике, как и другие профессионалы. А новички и всякие халтурщики используют box-shadow, плюс различные скрипты и htc, чтобы было кроссбраузерно. Когда наплевать на качество, а волнуют лишь время и деньги, то это наилучший вариант. Но если Вы хотите качество, то используйте мой способ.
-
- Михаил Русаков
Комментарии (14):
Михаил, а можно для особо одаренных (как я) :) выложить конкретно и НАГЛЯДНО какие должны быть картинки-запчасти для блока, рассмотренного в твоей статье??? Например, прямо после слов "Вот эти 6 картинок у Вас должны быть ..." выложить эти "картинки".
Ответить
http://files.myrusakov.ru/free/files/images-shadow.rar
Ответить
Спасибо!
Ответить
Спасибо за урок.
Ответить
У Вас ведь уже была точно такая же статья на сайте. Зачем ещё одну делать? В предыдущей даже лучше описано что и как делать
Ответить
Дайте ссылку на эту статью.
Ответить
Статья была о том как сделать закруглённые углы в блоке.
Ответить
В этой статье говорится про тень, а не про закруглённые блоки.
Ответить
Я знаю. Тут аборигены интересуются.
Ответить
Мне знакомо еще свойство "text-shadow", это из той же области, что и box-shadow? И можно ли вместо text-shadow использовать свойство z-index?
Ответить
Да, это из той же области, что и box-shadow. z-index и text-shadow никак не связаны.
Ответить
Михаил, напишите пожалуйста несколько статей об использовании фреймворков для верстки, например о http://bootstrap-ru.com/scaffolding.php или уже есть, но я просто не заметил? с ув., Тарас
Ответить
один большой недостаток это отсутствие картинок, не знаю может стоит выкладывать исходники в конце статьи
Ответить
Может в 2014 и делали так, а сейчас я думаю box-shadow быстрый и легкий способ сделать тень, а не заниматься этим мазахизмом.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.