Bindirme öğesi yerine sözde bir öğe kullanmanızı öneririm. Sözde öğeler kapalı imgöğelere eklenemediğinden, yine de imgöğeyi sarmalamanız gerekir .
CANLI ÖRNEK BURADA - METİN ÖRNEĞİ
<div class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
CSS'ye gelince , öğe üzerinde isteğe bağlı boyutları ayarlayın .imageve görece konumlandırın. Duyarlı bir görüntü hedefliyorsanız, boyutları atlayın ve bu yine de işe yarayacaktır (örnek) . Unutulmamalıdır ki boyutlar, imgöğenin kendisinin aksine ana öğede olmalıdır , bkz .
.image {
position: relative;
width: 400px;
height: 400px;
}
Alt imgöğeye 100%üst öğenin genişliğini verin ve vertical-align:topvarsayılan temel hizalama sorunlarını düzeltmek için ekleyin .
.image img {
width: 100%;
vertical-align: top;
}
Sözde öğeye gelince, bir içerik değeri belirleyin ve bunu .imageöğeye göre kesinlikle konumlandırın . Bir genişlik / yükseklik, 100%bunun farklı imgboyutlarda çalışmasını sağlayacaktır . Öğenin geçişini yapmak istiyorsanız, bir opaklık ayarlayın 0ve geçiş özelliklerini / değerlerini ekleyin.
.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;
}
1Geçişi kolaylaştırmak için sözde öğenin üzerine geldiğinizde bir opaklık kullanın :
.image:hover:after {
opacity: 1;
}
SONUÇ BURADA SONLANDIR
Fareyle üzerine gelindiğinde metin eklemek istiyorsanız:
En basit yaklaşım için, metni sözde öğenin contentdeğeri olarak eklemeniz yeterlidir :
BURAYA ÖRNEK
.image:after {
content: 'Here is some text..';
color: #fff;
}
Yani gerektiğini çoğu durumda işe; ancak, birden fazla imgöğeniz varsa, aynı metnin üzerine gelindiğinde görünmesini istemeyebilirsiniz. Bu nedenle metni bir data-*öznitelikte ayarlayabilir ve bu nedenle her imgöğe için benzersiz bir metne sahip olabilirsiniz .
BURAYA ÖRNEK
.image:after {
content: attr(data-content);
color: #fff;
}
Bir ile contentdeğerinin attr(data-content), sözde elemanı metin ekler .imageöğenin data-contentözniteliği:
<div data-content="Text added on hover" class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
Biraz stil ekleyebilir ve bunun gibi bir şey yapabilirsiniz:
BURAYA ÖRNEK
Yukarıdaki örnekte, :aftersözde öğe siyah kaplama görevi görürken :beforesözde öğe resim yazısı / metindir. Öğeler birbirinden bağımsız olduğundan, daha optimum konumlandırma için ayrı stil kullanabilirsiniz.
.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;
}