我有几个条目列表。更改图片src为访问过的链接
<ul>
<li>
<a href="http://url" title="The Title">
<img src="/badge-unvisited.png" alt="" border="0" />
</a>
</li>
<!-- etc. -->
</ul>
我不想使用jQuery,所以它需要CSS-只。 这是什么被访问时,改变图像的src最好和最简单的方法是什么?
我有几个条目列表。更改图片src为访问过的链接
<ul>
<li>
<a href="http://url" title="The Title">
<img src="/badge-unvisited.png" alt="" border="0" />
</a>
</li>
<!-- etc. -->
</ul>
我不想使用jQuery,所以它需要CSS-只。 这是什么被访问时,改变图像的src最好和最简单的方法是什么?
Afaik,你不能用css改变图像的src。
但是你可以只让一个相同大小的背景图像,然后使用:悬停类像
div {
background-image:url(default.jpg);
}
div:visited {
background-image:url(changed.jpg);
}
顺便说一句甚至niftier的解决办法是使用相同的图像,包括这两个州和只需更改background-position
即可。这样就减少了负载。如果你对更多的感兴趣,请寻找'css sprites'!
什么是访问时更改图像的src的最好和最简单的方法?
有没有。图像的src
属性超出了CSS的范围。
您将有background-image
性工作来代替。
理论上可以有两个图像,并显示一个在同一时间,另一个在下次使用display: none
,但这是相当缺憾,并导致被加载两个图像。
您可以这样形象改变属性:
ul li a:visited img { border:10px }
但要改变自己,你必须发挥创意的源泉。无论是与具有元素的背景图像,或者如果你没有支持旧的浏览器可以使用生成的内容,这样的替换图片:
ul li a:after { content:url(image.gif); }
然后
ul li a:visited:after { content:url(image-2.gif); }
CSS不能修改DOM,我可以建议是设置背景图片,然后躲在IMG
a{background-image:url(badge-visited.png);width:50px;height:50px;}
a:visited img{display:none;}
至少在WebKit和Firefox中这是不可能的,因为访问过的链接的样式允许各种攻击方案。
http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-leak/
https://bugzilla.mozilla.org/show_bug.cgi?id=147777
https://bugs.webkit.org/show_bug.cgi?id=24300
哦,好点!这可能根本不可能。 –
的问题是,具有锚元件(“A”)的内部一个div无效。我可以使用li元素并给它一个背景。但是我无法将这个链接包裹在里面。那么我会用什么元素?带显示的区域:块是我看到的唯一选项。 – reggie
HTML5允许中的块元素。否则,使用display:block的跨度将是下一个最佳解决方案,是的! – Anonymous