[解決済み] 同じ要素にbackground-imageとCSS3グラデーションを組み合わせるにはどうすればよいですか?
質問
CSS3 グラデーションの使い方
background-color
を適用し、さらに
background-image
を使えば、軽い透明なテクスチャーのようなものが適用されるのでは?
解決方法は?
背景が複数ある
body {
background: #eb01a5;
background-image: url("IMAGE_URL"); /* fallback */
background-image: url("IMAGE_URL"), linear-gradient(#eb01a5, #d13531); /* W3C */
}
この2行は、グラデーションができないブラウザのためのフォールバックです。 以下のIE<9のみ画像を重ねる場合の注意事項を参照してください。
- 1行目でフラットな背景色を設定します。
- 2行目で背景画像のフォールバックを設定します。
最後の行は、背景画像とグラデーションを扱えるブラウザのために設定します。
- 3行目は、比較的モダンなブラウザ全てに対応しています。
現在のほぼすべてのブラウザは、複数の背景画像やCSS背景をサポートしています。参照 http://caniuse.com/#feat=css-gradients をご覧ください。複数のブラウザのプレフィックスが不要な理由については、以下の記事を参照してください。 http://codepen.io/thebabydino/full/pjxVWp/
レイヤースタック
最初に定義された画像がスタックの一番上になることに注意する必要があります。この場合、画像はグラデーションの一番上にあることになります。
背景のレイヤリングの詳細については http://www.w3.org/TR/css3-background/#layering .
画像の積み重ねのみ(宣言にグラデーションを使用しない) IE < 9用
IE9以降も同じように画像を重ねることができます。IE9でグラデーション画像を作成する場合にも使えますが、個人的には使わない方がいいと思います。ただし、画像のみを使用する場合、IE < 9はfallbackステートメントを無視して、画像を表示しないので注意が必要です。グラデーションが含まれている場合は、このようなことは起こりません。この場合、1つのフォールバック画像を使うには、Paul Irishの素晴らしい 条件付きHTML要素 をフォールバック・コードと一緒に使用します。
.lte9 #target{ background-image: url("IMAGE_URL"); }
背景の位置、大きさなど
1枚の画像に適用される他のプロパティもカンマで区切ることができます。値を1つだけ指定した場合は、グラデーションを含むすべてのスタック画像に適用されます。
background-size: 40px;
は、画像とグラデーションの両方の縦横を40pxに拘束します。しかし
background-size: 40px, cover;
にすると、画像は40pxになり、グラデーションは要素を覆うようになります。片方の画像にだけ設定を適用するには、もう片方の画像にデフォルトを設定します。
background-position: 50%, 0 0;
または
対応ブラウザ
使用
initial
:
background-position: 50%, initial;
backgroundという略語を使うこともできますが、この場合、フォールバックカラーと画像は削除されます。
body{
background: url("IMAGE_URL") no-repeat left top, linear-gradient(#eb01a5, #d13531);
}
background-position、background-repeat等も同様です。
関連
-
[CSSチュートリアル】Chromeのタブバーを実装するためのCSSのコツ
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] CSSのdisplayプロパティで遷移する
-
[解決済み] インラインCSSでa:hoverを記述するには?
-
[解決済み] CSS画像を背景で伸縮させる - CSSのみで可能
-
[解決済み] svg要素の色を変更するには?
-
[解決済み] 背景画像にCSSフィルタを適用する方法
-
[解決済み】CSS3のグラデーション背景がbodyに設定されても伸びず、繰り返される?
-
[解決済み】アンドロイドでグラデーションの背景を作る方法
-
[解決済み】背景画像と不透明度を同じプロパティで設定することは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル】QQtabBarからCSS命名規則BEMの詳細を見る
-
[CSSチュートリアル】CSSのシングルDivの描画スキル
-
[CSSチュートリアル]css display table adaptive height, widthの問題解決
-
[CSSチュートリアル】CSS3で3つの効果例の背景をぼかす。
-
[css3]CSS3のダイヤモンドパズルは、divの背景画像を回転させない機能だけを実現するために
-
[CSSチュートリアル】CSSで実現するイメージマッピングメソッド
-
[CSSチュートリアル】CSSカウンターを使った数字の並びの美化方法
-
[CSSチュートリアル】カラフルで知的なシャドウ効果を実現するCSS
-
[CSSチュートリアル]テーブル table :nth-child()を使って行間の色変更と整列を実現する。
-
[CSSチュートリアル】CSSプリグラミング言語と詳細解説の違いについて