:link-:visited-:hover-:active的使用

对大佬的学习后的理解(主要是复杂的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的支持有限colorbackground-colorborder-colorborder-bottom-colorborder-left-colorborder-right-colorborder-top-colorcolumn-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伪类选择器搞些花头,我劝大家还是死了这条心,老老实实搬砖吧。

猜你喜欢

转载自blog.csdn.net/qq_39148344/article/details/83031867