2013-02-09 38 views
0

我正在寻找最简单,最易维护的方式做到这一点:可能使用css伪内容添加图像标题?

enter image description here

这些文本蛞蝓将在整个网站被附加到某些图像。他们都说这个同样的东西,但图像是多种多样的,来自CMS。

我知道我该怎么做,将图像设置为在绝对定位的子div中定位相对和“有更好的方法”的div。

但是,因为这需要HTML添加到每个图像得到这种待遇,我正在寻找一种方法来做到这一点与CSS类使用:before伪元素。到目前为止,将该类应用于包装链接不起作用:

<a href="#" class="tabw"><img src="imagepath" alt=""></a> 

.tabw img:before { 
content: 'theres a better way'; 
color: red; 
font-size: 18px; 
} 

这种事情可能吗?把所有东西放在CSS中意味着我所要做的就是让CMS在需要时应用class属性。

回答

0

呀,::before::after不上的图像工作。但是你可以将它们应用到包装 链接:

a{ 
    position: relative; 
} 

a, a > img{ 
    display:inline-block; 
} 

a::before{ 
    content: 'theres a better way'; 
    position: absolute;  
    left: 0; 
    top: 0;  
    width: 80%; 
    height: 20px; 
    left: 10%; 
    background: #000; 
    opacity: 0.4;  
    color: red; 
    font-size: 18px; 
} 

demo

如果你想在HTML中添加文本,你必须把真元与它在您的链接(和应用相同的规则,但不content

+0

我没有意识到图像和伪元素。这让我疯狂。这正是我想要做的。谢谢。 – Steve 2013-02-09 21:49:47

0

我会用jQuery做这样的:

的Html

<div class="thumb"> 
    <img src="http://www.zupmage.eu/up/NvBtxn7LHl.png" alt="cover"/> 
    <div class="caption">My caption</div> 
</div> 

的CSS

.thumb { 
    position:relative; 
    width:230px; 
    height:230px; 
} 

.thumb img { 
    max-width:100%; 
} 

.thumb .caption { 
    display:none; 
    position:absolute; 
    top:0; 
    height:20px; 
    line-height:20px; 
    width:100%; 
    text-align:center; 
    background:rgba(255,255,255,0.5); 
} 

JQuery的

$('.thumb').hover(function() { 
    $(this).find('.caption').fadeIn(); 
}, function() { 
    $(this).find('.caption').hide(); 
}); 

fiddle

+0

谢谢,但它有点太牵扯。另外,如果我要在HTML中添加额外的div,我可以在没有jQuery的情况下完成此操作。我正在寻找一种解决方案,将标题内容保留在CSS中。 – Steve 2013-02-09 21:50:55

0

注给任何人找到这个帖子:在Firefox 21和IE 9月10日这并没有超大图像的工作权利。它迫使图像,即使在全球范围设置为最大宽度100%:100%

我只好跟着我选择上面设置的标签,以display:block而不是display:inline-block解决问题的答案。