在CSS选择器中,有那么一些用于实现特殊效果的选择器,我们称之为伪类,具体来说我也说不太清除,这里就只能简单的和大家谈谈我的看法。
大部分时候选择使用伪类是为了实现一些动态的效果,即在某些操作后使用别的CSS样式,有点类似于触动一些方法去改变CSS样式,甚至在很多的课程中,很多曾经的伪类都推荐通过自定义方法改变CSS内容来实现。这就是我个人对伪类的一些理解。
但今天还不谈这些,我想给大家讲个例子,方便大家来了解伪类,即标题中提到的<a>标签的伪类。我觉得这是一个很好的例子,因为这个例子在实际的开发中可以说有很广泛的应用,从而也导致了很多的笔试中喜欢去考察这个点,这里我就以此为例讲一讲。
<a>标签主要涉及四个伪类,分别是以下四个:
- :link //正常样式,即未操作前的样式
- :visited //已经访问过的样式
- :hover //鼠标放置在上面的样式
- :active //触发时的样式
以上就是就是<a>标签上常用的四个伪类,其中所能选择去涉及的内容就更是多种多样了,这里我就跳出两个较为常用内容color(字体颜色)和text-decoration(下划线)给大家个示例看一下吧:
a:link{
color: #000;
text-decoration: underline;
}
a:visited{
color: red;
text-decoration: none;
}
a:hover{
color: blue;
text-decoration: none;
}
a:active{
color: green;
text-decoration: none;
}
上面就是个很基础的例子,但我觉得对于理解伪类是一个很不错的内容,大家可以自己去感受一下,写完对照上面所提到的功能去具体试一下。
这里给大家提个细节,大家思考一个问题,就是上面我所写的样式是有一定顺序的,这个顺序有没有影响呢?换个顺序结果会不会产生变化?如果时间够的话,我推荐大家亲自动手试一试再来回答这个问题。
这里我就先告诉大家答案了,上面的顺序是很重要的,如果改变了你会发现有的变化会产生缺失,部分效果你是会看不见的,具体多少个效果呢?这个就要视情况而定了,最极端的例子是你吧:link放最后,你就会惊喜的发现所有的例子都没用了。
这是为什么呢?这就涉及到CSS样式的优先级问题了,当某个元素有多个样式,且样式中存在某个或某几个属性相同但属性值不同的情况时,就会产生冲突,而冲突产生了我们就需要去处理,即只能选择某一个值去实现,在CSS中默认的处理方式是选择靠后的那个样式中的属性,就像往桌子上放书的后面面放上来的会压住前面放上来的,当然也存在特例,比如!important,你可以在某条属性后加上一条这个,这个属性就会脱颖而出了,具体用法和一些兼容性大家自己去了解一下吧。
上面讲了一些原理,但其实这还不是全部原因的,接下来我简单和大家分析回到我们这个例子中为什么会这样吧。伪类所设置的样式其实我们可以理解为正常情况下是不存在的,只有在一定条件下触发才对出现,而如果我们把:link放最下面,那别的样式触发时也是会被它覆盖掉的,从某种角度上来说,伪类是只有开没有关的,可能这样说有点绝对,但在这个例子李基本是这样的,他通过打开,然后利用一定的顺序覆盖掉样式,从而实现变化,故当你顺序不对的时候,就会导致一些错误。
至于这个顺序,我不推荐大家去硬背,而是你搞懂我上面所提的内容,理解性的去对应情况分析,相信你能够很轻松的对这个内容形成有效的记忆,就算记不下来,到时候自己推问题应该也不大的。伪类这个内容随着技术的变革已经越来越复杂,想要完全搞懂我觉得是很困难的,这里就简单的和大家分享一些我的理解,希望大家能有所收获。