打印

[教程] 53个CSS技巧翻译之PDF,ZIP,DOC链接的标注

PDF,ZIP,DOC链接的标注 36/53
英文链接 http://www.maratz.com/blog/archives/2005/01/13/pdf-links-labeling/
中文链接 http://www.176so.com/past/2007/3/17/pdf_links_labeling/

有时候我们希望能明确的用小图标来标明我们的超链接的类型。是一个zip文档还是一个pdf文件。这样访问者就知道他所要点击的这个链接是下载而不是打开另一个页面了。如果所有的人都使用IE7或者FF的话。我们完全可以使用[att$=val]属性选择器,寻找以特定值(比如.zip和.doc)结尾的属性。
复制内容到剪贴板
代码:
a[href$=".pdf"] { padding-right: 19px; background: url(pdf.gif) no-repeat 100% .5em; }
a[href$=".zip"] { padding-right: 17px; background: url(zip.gif) no-repeat 100% .5em; }
不幸的是IE6以下浏览器不支持属性选择器。好在,可以通过在每个元素中添加类,使用JavaScript和DOM实现相似的效果。

下面给出了一个解决办法:
复制内容到剪贴板
代码:
function fileLinks() {
    var fileLink;
    if (document.getElementsByTagName('a')) {
        for (var i = 0; (fileLink = document.getElementsByTagName('a')[i]); i++) {
            if (fileLink.href.indexOf('.pdf') != -1) {
                fileLink.setAttribute('target', '_blank');
                fileLink.className = 'pdfLink';
            }
            if (fileLink.href.indexOf('.doc') != -1) {
                fileLink.setAttribute('target', '_blank');
                fileLink.className = 'docLink';
            }
            if (fileLink.href.indexOf('.zip') != -1) {
                fileLink.setAttribute('target', '_blank');
                fileLink.className = 'zipLink';
            }
        }
    }
}
window.onload = function() {
    fileLinks();
}
当然,你需要在你的css文件中,增加这几个css类:
复制内容到剪贴板
代码:
.pdfLink { padding-right: 19px; background: url(pdf.gif) no-repeat 100% .5em; }
.docLink { padding-right: 19px; background: url(doc.gif) no-repeat 100% .5em; }
.zipLink { padding-right: 17px; background: url(zip.gif) no-repeat 100% .5em; }
效果

最后一点建议,你的小图标不要过分醒目,这会分散浏览者的注意力。

补充:我的空间每个月的流量有限。并且本懒人更新很慢。如果你觉得文章对你有用,请随意将内容复制粘贴到你的站内。但请注明来源。以便多给我带来几个IP。*_*

[ 本帖最后由 sexboy024 于 2007-3-20 14:58 编辑 ]
本帖最近评分记录
  • 小毅 威望 +3 非常实用的技巧 2007-3-20 10:43
小宇宙爆发
顶下
不错
请把题目重新该下,容易让偶产生误会! 加个破折号说明下
个人Blog:PlanABC   团队Blog:淘宝UED  专注Web前端技术!
我咋打不开预览效果呢······

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
空间商 崩溃了。
可能明天会好?
小宇宙爆发

TOP

★经典夜游神

TOP

谢谢

不错,收藏!



深圳网络公司:http://www.kingdeone.com

TOP

非常不错。
我一直哭一直哭,哭我没鞋穿。直到有一天我看到一个人,他连脚也没有……

TOP

遍历所有的a 些js会不会使页面有些慢.
http://www.rpple.com

TOP

在IE中,window.onload事件会在页面其它元素被加载完毕之后立即触发,而FireFox里的window.onload事件会等待动态添加的那些脚本文件也被加载完毕后才触发。

这对专业的脚本开发人员可能有影响,但我们只需要知道,这段js代码是在页面元素都载入完毕,内容已经显示出来之后才执行,也就是说访客先看到了文字链接,然后(根据网速,机器等条件限制)延迟那么一下,才能看到链接后面的修饰图片。FF下因为已经在css中定义过了,所以一般不会出现延迟效果(除非网速巨慢,css没加载完)。这段js基本上只是为ie6准备的。

结论:哥们,您就放心用吧!
小宇宙爆发

TOP

改进了一下,把outlinks的功能加进去了,图标方前边了。

复制内容到剪贴板
代码:
<script language="JavaScript" type="text/javascript">
function linkFilter() {
    var SiteURL = "www.shareday.com";
    var linkURL;
    if (document.getElementsByTagName("a")) {
        for (var i = 0;(linkURL = document.getElementsByTagName("a")[i]); i++) {
            if (linkURL.href.indexOf(SiteURL) == -1) {
                linkURL.setAttribute("target", "_blank");
            }
            if (linkURL.href.indexOf(".pdf") != -1) {
                linkURL.className = "link pdf";
            }
            if (linkURL.href.indexOf(".doc") != -1 || linkURL.href.indexOf(".docx") != -1) {
                linkURL.className = "link doc";
            }
            if (linkURL.href.indexOf(".zip") != -1 || linkURL.href.indexOf(".rar") != -1) {
                linkURL.className = "link zip";
            }
        }
    }
}
window.onload = function() {
    linkFilter();
}
</script>
<style type="text/css">
.link{
height:16px;
padding-left: 19px;
}
.pdf{
background: url("famfamfam_silk_icons_v013/icons/page_white_acrobat.png") no-repeat .1em 0em;
}
.doc{
background: url("famfamfam_silk_icons_v013/icons/page_white_word.png") no-repeat .1em 0em;
}
.zip{
background: url("famfamfam_silk_icons_v013/icons/page_white_zip.png") no-repeat .1em 0em;
}
</style>
使用famfamfam的silk图标效果更好。

TOP

可以设定在链接上加图标吗?

TOP