【二】CSS基本语法之选择符

【二】CSS基本语法之选择符

  • 作为一门标记语言,css的语法也是比较简单的,主要由三部分构成:选择符,样式属性和属性值。

  • css中的语法虽然简单,但是太多内容了,所以要学会css,就需要多背多写,掌握使用规律,懂得借助浏览器与css手册。

注意,在前端领域中,有些人会觉得css负责外观样式这块,很容易存在重复代码的情况,因此就有人就基于服务端编程语言,实现了一些扩展了css语法的编译工具,例如:less,sass等。可以让开发者在安装less,sass以后,可以在css中实现函数、变量或循环判断等操作。当然即便使用了less或者sass等编译工具,里面编写的大部分代码还是属于css原生代码,而且最终浏览器识别的只会是css代码。

  • 注意:在css中,HTML文档的标签,也叫元素。
结构 描述
选择符 用于查找一个或多个HTML标签(元素)
样式属性 设置HTML元素的外观效果类型,例如:长度、字体颜色、背景、边框等等
样式属性值 设置HTML元素的外观效果的具体描述参数。例如:5px,红色等等。
  • 语法格式:
选择符 {
    样式属性: 样式属性值;
    样式属性: 样式属性值;
    样式属性: 样式属性值, 样式属性值, 样式属性值;
}

在前面一节中,我们所学习的三种CSS引入使用方式的内部样式或者外部样式中,使用的就是css的完整语法:

p,#p2,h4就是选择符,表示告诉浏览器,html网页中所有的p,#p2,h4等元素全部添加指定样式。

background-color,表示告诉浏览器,要设置指定元素的外观效果类型是:背景颜色。
color,表示告诉浏览器,要设置指定元素的外观效果类型是:文本字体颜色。

1 什么是选择符

  • 选择符(selector),主要是为了按照规定的查找规则,告诉浏览器,我们要给哪些元素需要添加外观效果。

1.1 元素选择符

  • 通过选择符直接查找到HTML元素,添加样式。
选择符 描述
\* 通配选择符,表示所有的html元素。
tag 类型选择符,也叫元素选择符或标签名选择符,表示通过指定元素的标签名作为选择符,给他们添加样式
.class 类选择符,表示通过给元素添加class属性值对元素进行分类,给指定分类的元素添加样式。
#id ID选择符,表示通过给元素添加id属性值,给唯一的id属性值的单个元素添加样式
  • 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
        /* css的注释只有一种 */
        /* *,通配选择符,表示任意的HTML元素 */
        * {
            background-color: aqua;  /* 背景颜色:湖绿色; */
        }
        /* 直接使用标签名作为选择符,就是类型选择符,指定网页中的某一类型的元素 */
        a {
            color: blue; /* 字体颜色:红色; */
            text-decoration: none; /* 文本-线条装饰:无; */
        }
    
        /* id选择符,#号后面这个指定元素的id值,表示给某一个元素设置css样式 */
        #baidu{
            font-size: 32px; /* 字体-大小:32像素; */
            font-family: sans-serif; /* 字体-家族:无衬线字体 */
        }
    
        /* 类选择符,通过class属性指定某些HTML元素归纳为同一类,可以通过类选择符,直接指定类的元素添加样式 */
        .first{
            font-size: 32px; /* 字体-大小:32px */
            text-decoration: underline; /* 文本-线条装饰:下划线; */
        }
        .second{
            background-color: gray; /* 背景-颜色:灰色; */
            color: white; /* 字体颜色:白色; */
        }
        .third{
            border: 5px solid red; /* 边框:边框宽度(1px) 边框类型(实线) 边框颜色(红色) */
        }
        </style>
    </head>
    <body>
        <!-- 元素的属性是唯一的,所以同一个元素中,不能出现多个一样的属性名,如果有多个同名属性,浏览器只会识别第一个属性 -->
        <h1 class="first" class="second">一个标题</h1>
        <!-- 一个元素可以同时属于1或多个不同的分类,类名之间使用空格隔开 -->
        <p class="first third">一个段落</p>
        <p class="second">一个段落</p>
        <a class="second" href="https://www.taobao.com">淘宝</a><br><br>
        <a class="second third" href="https://www.tmall.com">天猫</a><br><br>
        <!-- 一个元素的id属性值不能有多个-->
        <a id="baidu" class="third" href="https://www.baidu.com">BaiDu</a><br><br>
        <!-- 不同的HTML元素中可以声明同一个id属性值,但是不推荐并且强烈反对!因为在将来的js编写特效时会可能出现错误 -->
        <a id="baidu" href="https://www.baidu.com">BaiDu</a><br>
    </body>
    </html>
    

1.2 关系选择符

  • HTML中,元素与元素之间存在的两个关系:

1

  • 关系选择符主要通过元素与元素之间的嵌套关系(父子关系,祖先后代关系)和并列关系(兄弟关系,同辈关系)来查找元素。
选择符 描述
选择符1, 选择符2{} 群组选择符,表示同时给多个不同的选择符对应的元素添加外观效果,也叫并集选择符。
选择符A 选择符B{} 包含选择符,表示给指定的(祖先)选择符A下的(后代)选择符B对应的元素添加外观效果,也叫后代选择符。
选择符A>选择符B{} 子选择符,表示给指定的(父辈)选择符A下一层的(子)选择符B对应的元素添加外观效果,也叫子选择符。
选择符A+选择符B {} 相邻选择符,表示给跟着选择符A的下一个(同辈)选择符B对应的元素添加外观效果。
选择符A~选择符B {} 兄弟选择符,表示给与选择符A拥有同一个父辈的所有选择符B对应的元素添加外观效果,也叫同辈选择符。
  • 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
        /* 群组选择符,同时设置多个选择符对应的元素,添加样式 */
        h1, p, b, a{
            color: red;
        }
        /* 群组选择符里面的各个选择符成员,可以是任意的选择符,不限于类型选择符 */
        .p1, .p2, .a1{
            background-color: yellow;
        }
        /* 包含选择符,可以指定某些被指定选择符所包含的元素指定样式 */
        ul li a{
            color: blue;
        }
        /* 包含选择符中的祖先或后代选择符,不仅可以是上面类型选择符,也可以其他的任意选择符 */
        .list2 li a{
            text-decoration: line-through;/* 文本-修饰线条:贯穿线; */
        }
        /* 子选择符,用于给指定选择符下的子选择符对应的元素添加样式 */
        li>a{
            border: 3px double blue; /* 边框样式:边框宽度[3px] 边框类型[双实线] 边框颜色[蓝色]; */
        }
    
        /* 多种选择符可以相互搭配使用 */
        ul p>a{
            background-color: orange;
        }
        /* 相邻选择符,设置紧跟着指定选择符的下一个元素,并且该元素符合+号后面的选择符规则时,可以给当前元素加上外观效果 */
        .p1+p{
            text-shadow: -5px -5px 2px black; /* 文本阴影效果:水平阴影偏移量[正右负左] 垂直阴影偏移量[正下负上] 模糊效果 阴影颜色 */
        }
        /* 兄弟选择符,设置指定元素后面的所有兄弟选择符,实际上是找弟弟 */
        .li-1~.li-2{
            text-shadow: -2px -2px 2px red;
        }
        </style>
    </head>
    <body>
        <h1>标题</h1>
        <p class="p1">第1段内容</p>
        <b>加粗文本内容</b>
        <p>第1段内容p1后面的第一个p标签</p>
        <h1>标题</h1>
        <p class="p1">第2段内容</p>
        <p class="p2">第3段内容</p>
        <p>第4段内容</p>
        <p><a href="">第5段内容 p下面的a标签</a></p>
        <p><a class="a1" href="">第6段内容 p下面的a标签</a></p>
        <ul class="list">
            <li><a href="">第1个li-----------------</a></li>
            <li class="li-1"><a class="a1" href="">第2个li,  ul li a</a></li>
            <li class="li-2"><a class="a1" href="">第3-1个li</a></li>
            <li class="li-3"><a class="a1" href="">第3-2个li</a></li>
            <li class="li-2"><a class="a1" href="">第3-3个li</a></li>
            <li>
                <ul>
                    <li><p>1</p></li>
                    <li><a href="">a2</a></li>
                    <li>3</li>
                </ul>
            </li>
        </ul>
        <ul class="list2">
            <li><a href="">.list2 a</a></li>
            <li>
                <p>
                    <a href="">.list2 p a</a>
                    <a href="">.list2 p a</a>
                </p>
            </li>
        </ul>
    </body>
    </html>
    

1.3 属性选择符

选择符 描述
选择符[attr="val"] 给拥有属性名attr并且属性值为val的指定选择符添加外观效果
选择符[attr] 给拥有属性名attr的指定选择符添加外观效果
选择符[attr^="val"] 给拥有属性名attr并且属性值以val开头的指定选择符添加外观效果
选择符[attr*="val"] 给拥有属性名attr并且属性值包含val的指定选择符添加外观效果
  • 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
        input[type="text"]{
            border: 1px solid  red;
            outline-color: red; /* 输入框的焦点外边线-颜色:红色 */
        }
        input[disabled]{
            border: 0; /* 去除边框 */
        }
        input[value*='登录']{
            cursor: pointer;
        }
        </style>
    </head>
    <body>
        <form action="">
            <input type="text" value="1.0" disabled><br>
            账号: <input type="text"><br>
            密码: <input type="password"><br>
            <input type="button" value="登录">
            <input type="button" value="重新登录">
        </form>
    </body>
    </html>
    

1.4 伪类选择符

  • 伪类选择符,是根据元素的位置状态或使用状态(交互状态)来查找某一类元素。
选择符 描述
选择符:link 设置超链接在未被访问前的样式。
选择符:visited 设置超链接在其链接地址已被访问过时的样式。
选择符:hover 设置元素在其鼠标悬停时的样式。
选择符:active 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式。
选择符:focus 设置元素在成为输入焦点时的样式(用于表单输入框,或者具有contenteditable属性的元素)。
选择符:first-child 匹配父元素的第一个子选择符。
选择符:last-child 匹配父元素的最后一个子选择符。
选择符:nth-child(n) 匹配父元素的第n个子选择符。
选择符:checked 匹配处于选中状态的选择符。(用于input type为radio与checkbox时)
选择符:disabled 匹配用户界面上处于禁用状态的选择符。(常用于表单项)
  • 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
        /* 当鼠标悬停在指定选择符上方时,设置外观效果 */
        ul li:hover{
            background-color: red;
            list-style: circle; /* 列表项类型:圆圈效果; 如果值为none,则去除项目符号 */
        }
        /* 当鼠标对指定选择符的元素按下没松开时,设置外观效果 */
        ul li:active{
            color: white;
        }
        /* 当指定选择符对应的元素获取输入焦点时,设置外观效果 */
        h1:focus, input:focus{
            color: red;
        }
        a{
            text-decoration: none;
        }
        /* 设置超链接的未访问时的外观样式,决定元素是否处于未访问状态的条件,是浏览器内是否有存在当前超链的访问历史记录 */
        a:link{
            color: red;
        }
        /* 设置超链接的已访问时的外观样式,决定元素是否处于已访问状态的条件,是浏览器内是否有存在当前超链的访问历史记录 */
        a:visited{
            color: blue;
        }
        /* 当选择符对应的元素属于父元素的第一个子元素时,设置样式 */
        .data1 li:first-child{
            border: 1px solid red;
        }
        .data1 li:last-child{
            border: 1px solid red;
        }
        /* 当选择符对应的元素属于父元素的第n个子元素时,设置样式,css中元素的排列序号从1开始 */
        .data1 li:nth-child(2){
            background-color: red;
        }
        /* 当选择符对应的元素属于父元素的第偶数个子元素时,设置样式,css中元素的排列序号从1开始 */
        .data2 li:nth-child(2n){
            background-color: red;
        }
        /* 当选择符对应的元素属于父元素的第奇数个子元素时,设置样式,css中元素的排列序号从1开始 */
        .data3 li:nth-child(2n-1){
            background-color: red;
        }
    
        /* 当选择符对应的元素属于父元素的指定倍数个子元素时,设置样式,css中元素的排列序号从1开始 */
        .data4 li:nth-child(3n){
            background-color: red;
        }
        .data4 li:nth-child(3n-1){
            background-color: yellow;
        }
        .data4 li:nth-child(3n-2){
            background-color: green;
        }
    
        /* 当选择符对应的元素处于被选择状态时,设置外观效果 */
        input:checked ~ span:after {
            content: "我被选中了"
        }
        /* 当选择符对应的元素处于被禁用状态时,设置外观效果 */
        input:disabled{
            color: red;
        }
        </style>
    </head>
    <body>
        <!-- 当HTML元素具有布尔属性,contenteditable 表示当前元素是一个可编辑元素 -->
        <h1 contenteditable>标题</h1>
        <input type="text" placeholder="请输入一段文本内容。">
        <ul class="data1">
            <li>1</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>3</li>
        </ul>
        <p>
            <a href="https://www.taobao.com">淘宝</a><br>
            <a href="https://www.tmall.com">天猫</a><br>
        </p>
        <hr>
        <ul class="data2">
            <li>1</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>3</li>
        </ul>
        <hr>
        <ul class="data3">
            <li>1</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>3</li>
        </ul>
        <hr>
        <ul class="data4">
            <li>1</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>2</li>
            <li>3</li>
        </ul>
        <p>
            <label>
                <input type="radio" name="lve"> 男
                <span></span>
            </label>
            <label>
                <input type="radio" name="lve"> 女
                <span></span>
            </label>
        </p>
    
        <p><input type="text" value="此处不能修改" disabled></p>
    </body>
    </html>
    

1.5 伪对象选择符

  • 所谓的伪对象选择符,也叫伪元素选择符,表示选择或设置外观的仅仅是元素内容的一部分。
选择符
选择符::after 在指定选择符的末尾追加样式或内容。
选择符::before 在指定选择符的前面插入样式或内容。
选择符::placeholder 设置指定选择符对应的表单输入框中的提示文本的外观样式。
选择符::selection 设置指定选择符对应的元素的内容处于被鼠标划选时的外观效果。
  • 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
        /*给指定选择符被鼠标划选的部分内容,设置外观样式*/
        p::selection{
            color: yellow;
            background-color: black;
        }
        /* 给指定输入框元素的提示帮助信息设置外观样式 */
        input[type="text"]::placeholder{
            font-size: 12px; /* 字体-大小:12px,注意,谷歌浏览器中,默认最小字体只能是12px。 */
            color: red;
            text-align: center; /* 文本-水平对齐方式: 居中[center]、居左[left,默认值], 居右[right], 两端对齐[justify]*/
        }
        .news::before{
            content: "[";
        }
        .news::after{
            content: "]"
        }
    
        .money::before{
            content: "$";
        }
        .content::after{
            content: ".....";
            color: red;
        }
        </style>
    </head>
    <body>
        <p class="news">风吹麦浪起,扑面穗生香。金色的麦田里,收割机在麦浪中来回忙碌,一颗颗饱满的麦粒从收割机仓门倾泻而下,源源不断地被送上运粮车,颗粒归仓。</p>
        <input type="text" placeholder="请输入账号!"><br>
        <span class="money">100</span>
        <p class="content">一个基本的文章内容</p>
    </body>
    </html>
    
posted @ 2023-07-04 08:12  Chimengmeng  阅读(57)  评论(0)    收藏  举报