'box-shadow-color'속성이 있습니까?


193

다음 CSS가 있습니다.

box-shadow: inset 0px 0px 2px #a00;

이제 페이지 색상을 '스킨 가능'하게하기 위해 해당 색상을 추출하려고합니다. 이 작업을 수행하는 방법이 있습니까? 색상을 제거하고 동일한 키를 다시 사용하면 나중에 원래 규칙을 덮어 씁니다.

box-shadow-color적어도 Google은 아무것도 켜지지 않는 것 같습니다 .


17
Google은 쿼리 시작시 "-"때문에 아무것도 되 돌리지 않습니다.
elon

답변:


130

아니:

http://www.w3.org/TR/css3-background/#the-box-shadow

계산 된 스타일 목록을 확인하여 Chrome 및 Firefox에서이를 확인할 수 있습니다. 속기 방법 (예 :)이있는 다른 속성 border-radius은 사양에 정의 된 변형이 있습니다.

대부분의 "long-hand"CSS 속성이 누락 된 것처럼 CSS 변수 는이 문제를 해결할 수 있습니다.

#el {
    --box-shadow-color: palegoldenrod;
    box-shadow: 1px 2px 3px var(--box-shadow-color);
}

#el:hover {
    --box-shadow-color: goldenrod;
}

6
변수를 많이 사용합니다! 앞으로 몇 년 안에 모든 브라우저에서 지원 될 수 있기를 바랍니다 : /
fregante


1
... IE를 계속 지원해야하지 않는 한 😭
Cam Jackson

301

실제로…있다! 일종의. box-shadow기본적으로 color처럼 border.

http://dev.w3.org/.../#the-box-shadow 에 따르면

색상은 그림자의 색상입니다. 색상이 없으면 '색상'속성에서 사용 된 색상을 가져옵니다.

실제로 color속성 을 변경하고 box-shadow색상을 남기지 않아야합니다.

box-shadow: 1px 2px 3px;
color: #a00;

지원하다

  • 사파리 6+
  • Chrome 20 이상 (적어도)
  • Firefox 13 이상 (적어도)
  • IE9 + (IE8은 전혀 지원하지 않습니다 box-shadow)

데모

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 애니메이션의 Chrome 22 (카나리아)에는 상자 그림자가 애니메이션 color속성을 상속하지 않는 버그가 있습니다. code.google.com/p/chromium/issues/detail?id=133745
David Murdoch

14
요소에 텍스트가 없으면 좋은 해킹입니다.
피닉스

10
네, 그렇지 않으면 그것을 감싸서 color자식 요소에 다시 적용 해야합니다.
fregante

3
IE10과 동일하다는 것을 확인할 수 있습니다.
MaxArt

4
현명하고 관련성 높은 답변에 감사드립니다 . 당신에게 +10!
kumarharsh

4

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


2

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 */
}

-3

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의 답변은 웹킷 브라우저 (사파리, 크롬 등)에 적합하지만 그림자가있는 프로그램을 배우는 것이 아니라 빠른 답변을 원할 수도 있다고 생각했습니다.



-8

어쩌면 이것은 새로운 것입니다 (cs3에서도 꽤 엉망입니다). 그러나 당신이 제안한 것을 정확하게 사용하는 페이지가 있습니다.

-moz-box-shadow: 10px 10px 5px #384e69;
-webkit-box-shadow: 10px 10px 5px #384e69;
box-shadow: 10px 10px 5px #384e69;}

.. 그리고 그것은 나를 위해 잘 작동합니다 (적어도 Chrome에서).


14
문제는 상자 그림자 색상 변경하는 방법이었습니다 .
Julian D.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.