CSS1/CSS2对于a定义了4个伪类,

:link  a标签未访问时的样式

:active  a标签mousedown时的样式

:hover  a标签mouseover时的样式

:visited  a标签访问过之后样式

对于hover属性,当然是最常用的,恰恰相反的与之对应的就是visited属性,基本很少有人提及。

a:visited从使用意义来说,是指用户访问过某一个链接之后,该链接的a标签将呈现对应:visited属性定义的样式。

这里的重点在于链接,经过测试发现

<html>
<head>
<title></title>
<style type="text/css">
a:link{
color:blue;
}
a:visited{
color:red;
}
</style>
</head>
<body>
<a id="a1" href="javascript:void(0);">test1</a>
<a id="a2" href="javascript:void(0);">test2</a>
<a id="a3" href="#test3">test3</a>
</body>
</html>

点击a1之后的同时,a2也会应用visited的样式,但是a3不会。

可以得出这样的结论,a:visited是与URL有关,而与单个的a标签无关

利用这点,我们可以大胆的做一下尝试。

应用场景A:

对于一个抽奖应用,按钮点击过一次之后,下方给予提示“您已参加过抽奖”

<html>
<head>
<style type="text/css">
a.lottery:link {
display: block;
width: 100px;
height: 20px;
border: 1px solid #ccc;
} a.lottery-over:link {
display: none;
} a.lottery-over:visited {
display: block;
color: red;
}
</style>
</head>
<body>
<div>
<a class="lottery" href="#lotter">抽奖开始</a>
<a class="lottery-over" href="#lotter">您已经参加过本次抽奖了</a>
</div>
</body>
</html>

效果如下

点击之后,

只要url相同,且被浏览器访问过,我们就可以使用a:visited做容器,在页面的任何位置,做各种展示效果。

应用场景B:

利用a:visited只依赖于URL的特点,我们还可以实现,隐私收集这样的功能。

<html>
<head>
<style>
.collect {
display: block;
height: 0;
width: 0;
}
a.taobao:visited {
background-image: url('http://a.tbcdn.cn/app/search/logo.png#taobao')
}
a.google:visited {
background-image: url('http://a.tbcdn.cn/app/search/logo.png#google')
}
</style>
</head>
<body>
<div class="collect">
<a class="taobao" href="http://www.taobao.com"></a>
<a class="google" href="http://www.google.com"></a>
</div>
</body>
</html>

只要用户的机器访问过比如www.taobao.com,访问该页面时候,就会利用background-image发送xxxxx.jpg#taobao这样的请求,这样服务端,就可以通过hashid收集并统计用户的访问历史记录了。

这里google.com因为访问的是google.com.hk,所以没有请求,只有#taobao一个访问记录。

转载:http://www.cnblogs.com/xueduanyang/archive/2010/11/09/1873110.html

小议常被忽略的a标签:visited属性的特殊用法的更多相关文章

  1. 容易被忽略的label标签

    # 容易被忽略的label标签 ## 原始作用 `label`标签是HTML原生的标签,其原始的作用参考[这里](http://www.w3school.com.cn/tags/tag_label.a ...

  2. HTML标签CSS属性默认值汇总

    HTML标签CSS属性默认值,在你需要还原默认值的时候比较有用. 以前一直在找这份文档,今天偶然在网上看到了.除了inline和block的定义,主要是要注意body|h1~h6|blockquote ...

  3. HTML初学者常用标签及属性

    1.HTML5头部结构   [DOCTYPE html] 声明文档类型为HTML5文件. 文档声明在HTML5文档必不可少,且必须放在文档的第一行.   [meta标签] 1-charset属性:单独 ...

  4. HTML基础篇(标签和属性整--已剔除不被浏览器支持的部分)

    行内元素有:a b span img input select strong 块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p HTML 参考手册- (HTML5 标 ...

  5. css标签及属性

    css标签及属性 HTML引入CSS的方法 1.嵌入式  <style type = “text/css”>要写的样式</style> 2.外联式  <link rel ...

  6. HTML5的Video标签的属性,方法和事件汇总

    <video>标签的属性 src :视频的属性 poster:视频封面,没有播放时显示的图片 preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览 ...

  7. php 内置支持的标签和属性

    内置支持的标签和属性列表如下: 标签名 作用 包含属性 include 包含外部模板文件(闭合) file import 导入资源文件(闭合 包括js css load别名) file,href,ty ...

  8. video标签的属性和方法总结

    最近想做一个弹幕插件,查了很多video标签的属性和方法 error属性 在正常读取时候,使用媒体数据的过程中,video元素或audio元素的error属性为null,但是任何时候只要出现错误,er ...

  9. 第四节:Vue表单标签和组件的基本用法,父子组件间的通信

    vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...

随机推荐

  1. 基于Android的闹钟的软件

    一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...

  2. Jackson 使用和注意项

    依赖maven: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId ...

  3. 遍历GroupBox上的所有的textbox

    foreach (Control c in groupBox1.Controls) { if (c is TextBox) { //这里写代码逻辑 } } 遍历的时候,需要用Control遍历: 如果 ...

  4. Java ArrayDeque源码剖析

    ArrayDeque 本文github地址 前言 Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字).当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的A ...

  5. CSS3 常用选择器

    p:last-of-type{background-color: red;} 选择p中最后一项 p:nth-of-type(2n){background-color: red;} 隔行变色里面也可以填 ...

  6. Windows下搭建FTP服务器

    一.什么是ftp? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(A ...

  7. 【TCP/IP详解 卷一:协议】第二十四章 TCP的未来与性能

    来到了TCP的最后一个章节,未来与性能.在当时(1991年)的未来,如今已经部分变为现实,部分就只是历史中的实验. 主要内容: 路径MTU的发现与TCP的结合. 长肥管道 和 高速千兆比网络. 窗口扩 ...

  8. POST提交大量数据,导致后面数据丢失

    这个问题,解决了很久,先简单说下我解决的具体思路: 首先:form表单提交,导致后面数据丢失,考虑了提交大量的数据,导致后台溢出,剩余数据量丢失,所以从网上搜了教程: 参考链接: https://bl ...

  9. 02_Kafka单节点实践

    1.实践场景 开始前的准备条件: 1) 确认各个节点的jdk版本,将jdk升级到和kafka配套的版本(解压既完成安装,修改/etc/profile下的JAVA_HOME,source /etc/pr ...

  10. MVC ---- 标准查询运算符

    标准查询运算符:定义在System.Linq.Enumerable类中的50多个为IEnumerable<T>准备的扩展方法,这些方法用来 对它操作的集合进行查询筛选. 筛选集合Where ...