对大佬的学习后的理解(主要是复杂的visited)
:link未点击前的样式
:visited点击后的样式
:hover鼠标经过
:active鼠标点击
这个过程是爱到恨的过程love-hate
这里需要注意:hover必须在link和visited的后面,需要严格的顺序才可以看到,active也必须在hover之后
一.link未点击前的样子
一般大家把a{color:value},但学习后发现设置成a:link{color:value}这样比较好,但是为什么了?
因为当a标签没有haef属性的时候用a:link是没有效果的,所以有时候当我们要比如禁用a标签我们就可以对href属性移除来达到
样式分离,可以不用多写一个类
二.visited点击后的样式
.visited点击后的样式的问题比较多
1.比如出于安全考虑对css的支持有限color
,background-color
,border-color
,border-bottom-color
,border-left-color
,border-right-color
,border-top-color
,column-rule-color
以及outline-color
。对一些颜色有用
对比如::before,::after这些伪元素都不支持例如我们希望用文字来标识我们点击过的链接
a:visited::after{content:'value';}//因为不支持所以这样写是没用的
还好:visited支持子元素
a:visited span{color:red;}这样就可以了,<a href="">文字<span>visited</span></a>
这样就可以当a链接点击了a链接后面的文字就可以变红
为什么会这样去做因为当发现visited不兼容after的时候就说明文字不可以自动生成,而且visited对子元素有用,所以就会立马想到文字是以及存在的,要么透明,白色 或用隐藏在js显示
下面用白色来解决
HTML
<a href="">文字<small></small></a>
CSS
small { position: absolute; color: white; } // 这里设置color: transparent无效,因为不兼容
small::after { content: 'visited'; }
a:visited small { color: purple; }
这样据可以达到点过的链接后面生成文字,(这里是该了颜色从白色到红色感觉是生成出来的)
2.这个就是刚刚的使用:visited
伪类选择器控制颜色的时候,虽然语法上支持半透明色,但是表现上,要么纯色,要么全透明。
3.vistied中的内容只可以重置,不可以凭空设置
a { color: blue; background-color: white; }//这里的 background-color: white; 不可以缺少,少了是没用的
a:visited { color: red; background-color: gray; }
4.:visited设置并呈现的色值无法获取
visited的总总问题原因:究其原因,大佬猜100%是出于安全考虑,如果浏览器可以通过JS或者其他行为表现知道你已经访问过哪些链接,我靠,那隐私直接就暴露了呀,肯定是不行的,所以,如果你想借助:visited
伪类选择器搞些花头,我劝大家还是死了这条心,老老实实搬砖吧。