Есть ли свойство "box-shadow-color"?
У меня есть следующий CSS:
box-shadow: inset 0px 0px 2px #a00;
Теперь я пытаюсь извлечь этот цвет, чтобы сделать цвета страниц "скинами". Есть ли способ сделать это? Просто удалив цвет, а затем снова используя тот же ключ, перезаписывает исходное правило.
Кажется, что нет box-shadow-color
, по крайней мере Google ничего не делает.
Ответы
Ответ 1
Нет:
http://www.w3.org/TR/css3-background/#the-box-shadow
Вы можете проверить это в Chrome и Firefox, проверив список вычисляемых стилей. Другие свойства, которые имеют сокращенные методы (например, border-radius
), имеют свои изменения, определенные в спецификации.
Как и в случае с большинством отсутствующих "CSS-свойств", переменные CSS могут решить эту проблему:
#el {
--box-shadow-color: palegoldenrod;
box-shadow: 1px 2px 3px var(--box-shadow-color);
}
#el:hover {
--box-shadow-color: goldenrod;
}
Ответ 2
Собственно... есть! Вроде. box-shadow
по умолчанию используется color
, как и border
.
Согласно http://dev.w3.org/.../#the-box-shadow
Цвет - это цвет тени. Если цвет отсутствует, используемый цвет берется из свойства цвета.
На практике вам нужно изменить свойство color
и оставить box-shadow
без цвета:
box-shadow: 1px 2px 3px;
color: #a00;
Поддержка
- Safari 6+
- Chrome 20+ (по крайней мере)
- Firefox 13+ (по крайней мере)
- IE9 + (IE8 не поддерживает
box-shadow
вообще)
Demo
div {
box-shadow: 0 0 50px;
transition: 0.3s color;
}
.green {
color: green;
}
.red {
color: red;
}
div:hover {
color: yellow;
}
/*demo style*/
body {
text-align: center;
}
div {
display: inline-block;
background: white;
height: 100px;
width: 100px;
margin: 30px;
border-radius: 50%;
}
<div class="green"></div>
<div class="red"></div>
Ответ 3
Вы можете использовать предварительный процессор CSS для создания скинов. С помощью Sass вы можете сделать что-то похожее на это:
_theme1.scss:
$theme-primary-color: #a00;
$theme-secondary-color: #d00;
// etc.
_theme2.scss:
$theme-primary-color: #666;
$theme-secondary-color: #ccc;
// etc.
styles.scss:
// import whichever theme you want to use
@import 'theme2';
-webkit-box-shadow: inset 0px 0px 2px $theme-primary-color;
-moz-box-shadow: inset 0px 0px 2px $theme-primary-color;
Если вам нужна не тематическая тематика на сайте, а классная тематика, то вы можете сделать это: http://codepen.io/jjenzz/pen/EaAzo
Ответ 4
Вы можете сделать это с помощью переменной CSS
.box-shadow {
--box-shadow-color: #000; /* Declaring the variable */
width: 30px;
height: 30px;
box-shadow: 1px 1px 25px var(--box-shadow-color); /* Calling the variable */
}
.box-shadow:hover {
--box-shadow-color: #ff0000; /* Changing the value of the variable */
}
Ответ 5
Быстрая и копирующая/вставка, которую вы можете использовать для Chrome и Firefox: (измените материал после #, чтобы изменить цвет)
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
-khtml-border-radius: 10px;
-border-radius: 10px;
-moz-box-shadow: 0 0 15px 5px #666;
-webkit-box-shadow: 0 0 15px 05px #666;
Ответ Matt Roberts верен для браузеров webkit (сафари, хром и т.д.), но я подумал, что кто-то из них может захотеть получить быстрый ответ, а не попросить научиться программировать некоторые тени.
Ответ 6
Да, есть способ
box-shadow 0 0 17px 13px rgba(30,140,255,0.80) inset
Ответ 7
Возможно, это новое (я тоже довольно дерьмо в css3), но у меня есть страница, которая использует именно то, что вы предлагаете:
-moz-box-shadow: 10px 10px 5px #384e69;
-webkit-box-shadow: 10px 10px 5px #384e69;
box-shadow: 10px 10px 5px #384e69;}
.. и он отлично работает для меня (по крайней мере, в Chrome).