前端零基础入门(十):css选择器二

接上回,在之前 “前端零基础入门(九):css选择器一” 里面我给大家介绍了css最基础的几个选择器:

  1. ID选择器
  2. 类选择器
  3. 标签选择器
  4. 包含选择器
  5. 群组选择器

这几个都是我们开发过程中会经常用到的选择器,比如css reset一般会用到群组选择器,正常的布局都用类选择器以及标签选择器,当然中间会出现包含关系。 然后某些特殊情况会用到群组选择器,至于ID选择器的话用得比较少一点,我们来看一段正常的css代码:

.menu {
  width: 100vw;
  height: 3.33333333rem;
  background: #d8f3ef;
  position: absolute;
  bottom: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  transition: 0.5s;
}
.menu.active {
  height: 11.33333333rem;
  background: rgba(216, 243, 239, 0.79);
}
.menu .nav {
  width: 100%;
  height: 2.66666667rem;
  align-self: flex-start;
  display: flex;
  justify-content: space-between;
  box-sizing: border-box;
  padding: 0 0.66666667rem;
}
.menu .nav input {
  display: none;
}
.menu .nav span {
  display: inline-block;
  width: 2.66666667rem;
  color: #39363d;
  line-height: 2.66666667rem;
}

在这里面用得最多的就是类选择器了,然后还有标签选择器,当然它们之间存在包含关系。大家看完之后应该要能理解 “.menu .nav{}”这个选择器的意思,它代表着在menu这个类的子级里面去查找所有的nav类。不过 “.menu.active{}” 这个选择器大家可能会有点疑惑,包含选择器中间都是有空格的,这中间没有空格什么意思?  这其实也是包含选择器的一种,不过它的意思是找到一个同时具有menu类名和active类名的这么个元素:<div class="menu active"></div>  像这样的代码估计大家也比较常见,所以就不再多说了。

今天我们要讲的是后面几种选择器:

  1. 属性选择器
  2. 伪类选择器
  3. 毗邻元素选择器

先来看第一个,属性选择器

属性选择器

其实属性选择器和类选择器的用法差不多,class是元素身上的一个属性,而元素具有很多属性,比如ID也是一个属性,其他的还有title、name等通用属性。甚至还可以自定义属性,在HTML5中明确定义标签可以有自定义属性,并且对其格式做出了限制:那就是任何自定义属性名称前面都必须加上data-前缀,也就是说如果我想要给一个元素加一个index自定义属性,那么我应该写成这样:

<div class="box" data-index="2"></div>

这时候在这个div身上就具有了一个自定义属性,这一块也是一个可以拓展的话题,我们后面再说,今天先说选择器。那么属性选择器,顾名思义其实就是通过属性来去选择一个元素,它的写法是这样的:“[attr]” 或者 “[attr='value']”,我们可以仅通过属性名称去选择一个元素,也可以通过属性名称以及属性值来选择一个元素,大家视情况而定就好了,比如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        [class]{
            color: #0c5460;
        }
    </style>
</head>
<body>

<div class="box">CSDN---webpilot</div>

</body>
</html>

得到的效果是这样的:

直接利用class属性,也可以选择这个元素,当然也可以用其他属性,大家不用限定在原有的属性里面。

伪类?

在css的定义中,伪类是用来添加一些选择器的特殊效果。

在感觉上伪类可以是动态的,当用户和文档进行交互的时候一个元素可以获取或者失去一个伪类。比如当我们把鼠标移动到一个元素身上的时候,这个元素会获得一个 “:hover” 的伪类。而同样,当鼠标移开的时候这个元素讲失去这个伪类,所以我们就可以利用这个伪类来为这个元素添加一个特殊的效果。最简单的就是鼠标移动到文字上然后文字变颜色之类的了。

还有一些伪类如":first-child"能通过文档树推断出来。这些伪类在css3中有了一个新的名字,叫伪元素,不过在css2中统一叫做伪类。

由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

最基础的伪类有:

  • :hover  当元素被鼠标悬停的时候
  • :active  当元素被激活时(鼠标在这个元素身上按下)
  • :link  当一个超链接没有被访问的时候
  • :visited  当一个超链接被访问过后
  • :chedked  当一个选择类型的表单控件被选中时...

在这里就不一一列举了,网上一搜一大堆。而它的作用也很简单。就是可以为我们的页面加上一些小特效,这里我写了一些小案例,大家有兴趣的话可以去看看http://lexseven.github.io/example/blog/cssSelect/hover.html

那么伪类选择器的写法也很简单,当然,它的主要目的是给某个选择器加上特殊的效果,所以前面肯定要有一个其他的选择器,任何选择器都可以 如“.menu:hover{}”。主要来说就是在其他选择器后面跟上一个冒号,然后写上伪类的名称,这就是伪类选择器的写法了。比如上图中鼠标悬停变色的代码我们可以来看看:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            color: #999;
        }
        .box:hover{
            color: #e15671;
        }
    </style>
</head>
<body>

<div class="box">CSDN---webpilot</div>

</body>
</html>

伪类选择器的妙用有很多,不过在这里就不再一一赘述了,后面我会写专门的文章来介绍它,接着往下来看。

毗邻元素选择器

最后,毗邻元素选择器。通过前面介绍的这么多选择器,如果稍微用了一段时间之后应该不难发现,之前的选择器只能选择一个或者一些元素,或者通过某一个元素选择这个元素的后代元素。比如 "div p" 这就能选择所有div中的P标签,而毗邻元素选择器则可以让我们变得更加强大,它可以选择一个元素后面的所有兄弟元素。比如有这样一个结构:

<div class="box">
    <span></span>
    <span></span>
    <span class="active"></span>
    <span></span>
    <span></span>
    <span></span>
</div>

要求是选择所有.active之后的span元素,如果用之前的选择器我们是没有办法做到的,而毗邻元素选择器则很简单:

.active~span{
    color: #f1b0b7;
}

在这里要注意,".active" 和 "span" 之间是用“~”连接起来的,这个符号是按Shift 加 数字 1前面那个键按出来的,其实它就是毗邻元素选择器本身了。得到结果:

 

好了,选择器这一块就先给大家介绍到这里,最后总结一下:

  • #select   ID选择器
  • .select    类选择器
  • tagName  标签选择器
  • :select     伪类选择器
  • selectA~selectB   毗邻元素选择器
  • [attr] /  [attr='value']  属性选择器
  • selectA selectB   包含选择器
  • selectA,selectB  群组选择器
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值