HTML5基础——7、CSS选择器

CSS选择器详解

  大家好,我是阿赵。继续学习H5,这次来学习CSS的选择器。
  CSS选择器是一个很重要的内容,决定了我们选择哪些网页元素进行风格调整。下面是CSS选择器的分类。

一、基础选择器

  这种单一的选择器包含了:

1. 标签选择器

  标签就是html标签了,比如之前的h1,或者div、span之类
举例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div {
      margin: 10px;
      padding: 5px;
      border: 1px solid black;
      width: 300px;
      height: 100px;
      background-color: #ccc;
    }

    span {
      display: inline-block;
      width: 50px;
      height: 20px;
      background-color: red;
    }
  </style>
</head>

  运行效果:
在这里插入图片描述

2. 类选择器

  可以给html的标签指定一个类(class),然后根据类来做选择器,写法是:.类名
  举例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .redBox {
      width: 100px;
      height: 100px;
      background-color: red;
    }

    .blueBox {
      width: 100px;
      height: 100px;
      background-color: blue;
    }

    .greenBox {
      width: 100px;
      height: 100px;
      background-color: green;
    }
  </style>
</head>

<body>
  <div class="redBox"></div>
  <div class="blueBox"></div>
  <div class="greenBox"></div>

</body>

</html>

在这里插入图片描述

<div class="redBox"></div>

  这里给div指定了class=”redBox”,所以这个div就会使用.redBox的CSS样式了。
  需要注意的是,同一个标签是可以 指定多个类的,不同的类可以实现不同的属性效果,比如上面的例子可以改成:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 100px;
      height: 100px;
    }

    .red {
      background-color: red;
    }

    .blue {
      background-color: blue;
    }

    .green {
      background-color: green;
    }
  </style>
</head>

<body>
  <div class="box red"></div>
  <div class="box blue"></div>
  <div class="box green"></div>

</body>

</html>

  这时候,box是指定了盒子的大小,而下面的red、blue和green只是指定了颜色,在给div指定class的时候,可以同时指定多个,并用空格分隔,比如:

<div class="box red"></div>

  这时候的效果,和之前的写法是完全一样的,但这样就会灵活很多,因为我可以通过指定box来绘制矩形,也可能实现别的形状的class。但颜色依然可以通用之前的几个颜色。

3. id选择器

  除了通过class来指定,还可以通过id来指定选择器,写法是:#id
  举例,刚才上面用class来指定盒子颜色的做法,可以改成用id做:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 100px;
      height: 100px;
    }

    #box1 {
      background-color: red;
    }

    #box2 {
      background-color: blue;
    }

    #box3 {
      background-color: green;
    }
  </style>
</head>

<body>
  <div class="box" id="box1"></div>
  <div class="box" id="box2"></div>
  <div class="box" id="box3"></div>
</body>

</html>

  这里的box1、box2、box3,指定给div作用id值,就会受到了上面的#box1、#box2和#box3的影响,这时候的效果是和用class来指定是一样的,但意义不一样。
  class一般是一个类别的指定,而id一般是单个元素对象的指定。

4. 通配符选择器

  所谓的通配符就是所有都一起改变的意思,用*号。比如我想改变整个页面所有标签的颜色:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      color: blue;
    }
  </style>
</head>

<body>
  <h1>标题1</h1>
  <h2>标题2</h2>
  <h3>标题3</h3>
  <h4>标题4</h4>
  <h5>标题5</h5>
  <h6>标题6</h6>
</body>

</html>

  这时候,标题的字体大小不会变化,但颜色都改变了:
在这里插入图片描述

二、 复合选择器

  复合选择器是由2个或者多个基础选择器组成

1、 后代选择器

  先看例子

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div span {
      color: red;
      font-size: 40px;
    }
  </style>
</head>

<body>
  <div>
    <span>你好</span>
  </div>
  <span>你好</span>
</body>

  运行效果:
在这里插入图片描述

  在这个例子里面body中间由2个span标签,一个是在div里面的,一个是单独的。
  而在style里面,指定了一个div span选择器,它的含义是,选择div下面包含的span,所以结果就是只有包含在div里面的span的样式发生了变化。
  这个可以选择父元素里面的子元素的方式,就叫做后代选择器,或者说是包含选择器。
  后代选择器是一个包含关系,只要父级里面有包含的子级,都会被选择到,比如:

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .food a {
      color: red;
    }
  </style>
</head>

<body>
  <div class="food">
    <a href="#">米饭</a>
    <ul>
      <li><a href="#">面条</a></li>
      <li><a href="#">馒头</a></li>
    </ul>
  </div>
</body>

  运行效果:
在这里插入图片描述

  可以看到,类food下面的所有链接a都变了颜色。

2、 子选择器

  如果把上面的例子改一下:

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .food>a {
      color: red;
    }
  </style>
</head>

<body>
  <div class="food">
    <a href="#">米饭</a>
    <ul>
      <li><a href="#">面条</a></li>
      <li><a href="#">馒头</a></li>
    </ul>
  </div>
</body>

  运行效果
在这里插入图片描述

  这次看到只有最上面一级的a变了颜色。.food>a这个选择器选择的只有类food的直属子级里面的a,而不是直属的a是不会被选择到。

3、 并集选择器

先看例子:

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    span,
    li {
      color: red;
    }
  </style>
</head>

<body>
  <div class="food">
    <span>米饭</span>
    <ul>
      <li>面条</li>
      <li>馒头</li>
    </ul>
  </div>
  <div>蛋糕</div>
</body>

  运行效果:
在这里插入图片描述

  可以看到,选择器是span,li,用逗号分开的span和li,所以结果是span和li都被选中了。用逗号分隔的,是同时选择的意思。

4、 伪类选择器

  伪类选择器一般是某个内容的一些属性的指定,一般用:表示

(1) 子元素选择

例子:

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    li:first-child {
      color: blue;
    }
  </style>
</head>

<body>
  <div class="food">
    <span>米饭</span>
    <ul>
      <li>面条1</li>
      <li>馒头1</li>
    </ul>
  </div>
  <div>蛋糕</div>
  <ul>
    <li>面条2</li>
    <li>馒头2</li>
  </ul>
</body>

  运行效果:
在这里插入图片描述

  可以看到,现在选择的是所有作为子级的li里面的第一个。选择器是li:first-child,代表的就是多个li里面的第一个。

(2) 链接伪类选择器

例子:

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* //未访问的链接,把没有点击过的(访问过的)链接选出来 */
    a:link {
      color: blue;
    }

    /* //2. a:visited 选择点击过的(访问过的)链接 */
    a:visited {
      color: red;
    }

    /* //3. a:hover 选择鼠标经过的那个链接 */
    a:hover {
      color: green;
    }

    /* // 4. a:active 选择的是我们鼠标正在按下还没有弹起鼠标的那个链接 */
    a:active {
      color: yellow;
    }
  </style>
</head>

<body>
  <a href="www.baidu.com">百度</a>
</body>

  链接伪类选择器是专门为超链接使用,代表超链接的各个状态下的样式。
在这里插入图片描述

(3) focus伪类选择器

例子

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    input:focus {
      border: 2px solid orange;
      outline: none;
      color: orange;
    }
  </style>
</head>

<body>
  <table>
    <input type="text" value="请输入用户名">
  </table>
</body>

  运行效果:
在这里插入图片描述

  focus选择器主要是给表单里面获得焦点的元素指定样式。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值