overlay要素の代わりに疑似要素を使用することをお勧めします。囲まれたimg
要素に疑似要素を追加することはできないため、img
要素をラップする必要があります。
ここでライブの例 -テキスト付きの例
<div class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
CSS については、要素にオプションの寸法を設定し.image
、相対的に配置します。レスポンシブな画像を目指している場合は、寸法を省略しても問題ありません(例)。img
要素自体ではなく、親要素上に寸法を配置する必要があることに注意してください。。を。
.image {
position: relative;
width: 400px;
height: 400px;
}
子img
要素に100%
親の幅を与え、追加しますvertical-align:top
指定ししてデフォルトのベースライン配置の問題を修正します。
.image img {
width: 100%;
vertical-align: top;
}
擬似要素については、コンテンツの値を設定し、.image
要素に対して絶対的に配置します。の幅/高さは100%
、これがさまざまなimg
寸法で機能することを保証します。要素を遷移させたい場合は、不透明度を0
、遷移のプロパティ/値を追加します。
.image:after {
content: '\A';
position: absolute;
width: 100%; height:100%;
top:0; left:0;
background:rgba(0,0,0,0.6);
opacity: 0;
transition: all 1s;
-webkit-transition: all 1s;
}
1
遷移を容易にするために、疑似要素の上にホバーするときに不透明度を使用します。
.image:hover:after {
opacity: 1;
}
ここで結果を終了
ホバー時にテキストを追加する場合:
最も簡単な方法としては、テキストを疑似要素のcontent
値として追加するだけです:
ここに例
.image:after {
content: 'Here is some text..';
color: #fff;
/* Other styling.. */
}
ほとんどの場合それでうまくいくはずです。ただし、複数のimg
要素がある場合、ホバー時に同じテキストを表示したくない場合があります。したがって、data-*
属性にテキストを設定して、すべてのimg
要素に一意のテキストを設定できます。
ここに例
.image:after {
content: attr(data-content);
color: #fff;
}
content
値attr(data-content)
、擬似要素からテキストを追加する.image
要素のdata-content
属性:
<div data-content="Text added on hover" class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
スタイルを追加して、次のようなことを行うことができます。
ここに例
上記の例では、:after
疑似要素は黒いオーバーレイとして機能し、:before
疑似要素はキャプション/テキストです。要素は互いに独立しているため、より最適な配置のために個別のスタイルを使用できます。
.image:after, .image:before {
position: absolute;
opacity: 0;
transition: all 0.5s;
-webkit-transition: all 0.5s;
}
.image:after {
content: '\A';
width: 100%; height:100%;
top: 0; left:0;
background:rgba(0,0,0,0.6);
}
.image:before {
content: attr(data-content);
width: 100%;
color: #fff;
z-index: 1;
bottom: 0;
padding: 4px 10px;
text-align: center;
background: #f00;
box-sizing: border-box;
-moz-box-sizing:border-box;
}
.image:hover:after, .image:hover:before {
opacity: 1;
}