web-dev-qa-db-ja.com

「box-shadow-color」プロパティはありますか?

次のCSSがあります。

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

現在、その色を抽出してページの色を「スキップ可能」にしようとしています。これを行う方法はありますか?色を削除してから同じキーをもう一度使用すると、元のルールが上書きされます。

box-shadow-colorはないようです。少なくともGoogleは何も表示しません。

171
Epaga

番号:

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;
}
112
Andy E

実際…あります!並べ替え。 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をまったくサポートしていません)

デモ

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>

以下のコメントで言及されているバグは、その後修正されました:)

281
fregante

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/jje​​nzz/pen/EaAzo

4
jjenzz

CSS Variableでこれを行うことができます

.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 */
}
2
sandeep kumar