CSS学习(二)- Emmet语法、复合选择器、元素显示模式

一、Emmet语法

Emmet语法的前身是Zen coding,它使用缩写来提高html/css编写速度,Vscode内部已经集成该语法。

1、快速生成HTML结构语法

(1)生成标签:直接输入标签名按tab键即可;

(2)生成多个相同标签,标签+*+数字;div*3可以快速生成3个div标签;

(3)如果有父子级关系的标签,可以用> ,比如 ul>li;

(4)如果有兄弟关系标签,用+,比如div+p;

(5)如果生成带有类名或id名的,直接写.demo或#two tab键即可;

(6)如果生成的div类名是有顺序的,可以用自增符号 $;

(7)如果想在生成的标签内部写内容可以用{}表示。

2、快速生成CSS样式

基本采取简写形式。

二、CSS的复合选择器

  • 复合选择器可以更准确、更高效的选择目标元素(标签)
  • 复合选择器由两个或多个基础选择器通过不同方式组合而成
  • 常用复合选择器:后代选择器、子选择器、并集选择器、伪类选择器等

1、后代选择器(重要)

        后代选择器也称包含选择器,可以选择父元素里面的子元素。其写法是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

语法:元素1  元素2  {样式声明}

表示选择元素1里面的所有元素2(后代元素)

注意:

  • 元素1和元素2中间用空格分开。
  • 元素是父级,元素2是子级,最终选择的是元素2。
  • 元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可。
  • 元素1和元素2可以是任意基础选择器。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>复合选择器之后代选择器</title>
    <style>
        /* 选出ol里面的小li改颜色 */
        ol li {
            color: pink;
        }

        ol li a {
            color: red;
        }

        .nav li a {
            color: yellowgreen;
        }

        ul .one {
            color: blueviolet;
        }
    </style>
</head>

<body>
    <ol>
        变态写法
        <li>我是ol的孩子</li>
        <li>我是ol的孩子</li>
        <li>我是ol的孩子</li>
        <li><a href="#">ol的孙子</a></li>
    </ol>
    <ul>
        <li>我是ul的孩子</li>
        <li class="one">我是ul的特殊孩子</li>
        <li>我是ul的孩子</li>
        <li><a href="#">ul的孙子不变化</a></li>
    </ul>
    <ul class="nav">
        <li>我是ul的孩子</li>
        <li>我是ul的孩子</li>
        <li>我是ul的孩子</li>
        <li><a href="#">ul的这个孙子变化</a></li>
        <li><a href="#">ul的这个孙子变化</a></li>
        <li><a href="#">ul的这个孙子变化</a></li>
    </ul>
</body>

</html>

2、子元素选择器(重要)

子元素选择器(子选择器)只选择作为某元素的最近一级子元素。

语法:元素1>元素2 {样式声明}

表示选择元素1里面的所有直接后代(子元素)元素2。

注意:

  • 元素1和元素2中间用大于号隔开
  • 元素1是父级,元素2是子级,最终选择的是元素2
  • 元素2必须是亲儿子,其孙子、重孙子之类都不归他管。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>复合选择器之子元素选择器</title>
    <style>
        .one a {
            color: red;
            text-decoration: none;
        }

        .two>a {
            color: yellowgreen;
            text-decoration: none;
        }
    </style>
</head>

<body>
    <div class="one">
        <a href="#">谁是1的儿</a>
        <p>
            <a href="#">谁是1的孙</a>
        </p>
    </div>
    <div class="two">
        <a href="#">谁是2的儿</a>
        <p>
            <a href="#">谁是2的孙</a>
        </p>
    </div>
</body>

</html>

3、并集选择器(重要)

并集选择器可以选择多组标签,同时为他们定义相同的样式。通常用于集体声明。

并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。

语法:元素1,元素2 {样式声明}

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>复合选择器之并集选择器</title>
    <style>
        div,
        p,
        .pig li {
            color: pink;
        }
    </style>
</head>

<body>
    <div>熊大</div>
    <p>熊二</p>
    <span>光头强</span>
    <ul class="pig">
        <li>小猪佩奇</li>
        <li>猪爸爸</li>
        <li>猪妈妈</li>
    </ul>
</body>

</html>

4、伪类选择器

用冒号:表示。

(1)链接伪类选择器

a:link选择所有未被访问的链接
a:visited选择所有已被访问的链接
a:hover选择鼠标指针位于其上的链接
a:active选择活动链接(鼠标按下未弹起的链接)
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>复合选择器之链接伪类选择器</title>
    <style>
        /*1、 a:link   未访问的链接 */
        a:link {
            color: #333;
            text-decoration: none;
        }

        /*2、 a:visited   点击过的链接 */
        a:visited {
            color: orange;
        }

        /* 3、a:hover    选择鼠标经过的链接 */
        a:hover {
            color: skyblue;
        }

        /* 4、a:active     选择鼠标正在按下还未弹起时的链接 */
        a:active {
            color: green;
        }
    </style>

</head>

<body>
    <a href="#">名侦探学院</a>
    <a href="g=http://www.xxxxxx.com">未知网站</a>
</body>

</html>

注意:

  • 为确保其生效,请按照LVHA的顺序声明:link;visited;hover;active(记忆法:love hate);
  • 因为a链接在浏览器中具有默认样式,所以实际工作中需要给a单独指定样式。

实际开发一般的写法:

a {color: gray;}

a:hover {color: red;}

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>链接伪类选择器</title>
    <style>
        a {
            color: black;
            text-decoration: none;
        }

        a:hover {
            color: skyblue;
            text-decoration: underline;
        }
    </style>
</head>

<body>
    <a href="#">名侦探学院</a>
    <a href="g=http://www.xxxxxx.com">未知网站</a>
</body>

</html>

 

(2):focus伪类选择器

:focus伪类选择器用于选取获得焦点的表单元素。

焦点就是光标,一般情况<input>类表单元素才能获取,这个选择器主要针对表单元素来说。

input:focus {
    background-color: yellow;
}

示例:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>:focus伪类选择器</title>
    <style>
        input:focus {
            background-color: red;
            color: greenyellow;
        }
    </style>
</head>

<body>
    <input type="text">
    <input type="text">
    <input type="text">
</body>

</html>

5、复合选择器总结

选择器作用特征使用情况隔开符号及用法
后代选择器用来选择后代元素可以是子孙后代较多符号是空格,如.nav a
子代选择器选择最近下一级元素只选亲儿子较少符号是大于,如 .nav>p
并集选择器选择某些相同样式的元素可以用于集体声明较多符号是逗号,如 .nav,.header
链接伪类选择器选择不同状态的链接跟链接相关较多重点记住a{}和a:hover 实际开发的写法
:focus选择器选择获得光标的表单跟表单相关较少input:focus 记住这个写法

三、CSS的元素显示模式

元素显示模式就是元素(标签)以什么方式进行显示。

HTML元素一般分为块元素和行内元素。

1、块元素

常见块元素:<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等。

(1)块元素特点:

  • 独占一行。
  • 高度、宽度、外边距及内边距可以控制。
  • 宽度默认是容器(父级宽度)的100%,高度是自己的高度。
  • 是一个容器及盒子里面可以放行内或块级元素。

(2)注意:

  • 文字类的元素内不能使用块级元素
  • <p>标签主要用于存放文字,因此<p>里面不能放块级元素,特别是不能放<div>
  • <h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素。

2、行内元素(内联元素)

常见行内元素:a、strong、b、em、i、del、s、ins、u、span等。

(1)特点:

  • 相邻行内元素在一行,一行可以显示多个。
  • 高宽直接设置是无效的。
  • 默认宽度是他本身内容的宽度。
  • 行内元素只容纳文本或其它行内元素。

(2)注意:

  • 链接内不能放链接。
  • 特殊情况链接<a>里面可以放块级元素,但给<a>转换一下块级模式最安全。

3、行内块元素

<img/>、<input/>、<td>,他们同时具有块元素和行内元素的特点。

(1)特点:

  • 和相邻行内元素(行内块)在一行上,但之间会有空白缝隙,一行可以显示多个(行内元素特点)
  • 默认宽度就是她本身内容的宽度(行内元素特点)
  • 宽度行高外边距以及内边距可以控制(块级元素特点)

4、元素显示模式总结:

5、元素显示模式转换

转换为块级元素:display:block;

转换为行内元素:display:inline;

转换为行内块元素:display:inline-block;

6、简洁小米侧边栏案例

单行文字垂直居中:让文字的行高等于盒子的高度。

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简单版小米侧边栏</title>
    <style>
        /* 1、把a转换为块级元素 */
        a {
            display: block;
            width: 230px;
            height: 40px;
            background-color: #55585a;
            font-size: 14px;
            color: #fff;
            text-decoration: none;
            text-indent: 2em;
            line-height: 40px;
        }

        /* 2、鼠标经过变换背景颜色 */
        a:hover {
            background-color: #ff6700;
        }
    </style>
</head>

<body>
    <a href="#">手机 电话卡</a>
    <a href="#">电视 盒子</a>
    <a href="#">笔记本 平板</a>
    <a href="#">出行 穿戴</a>
    <a href="#">智能 路由器</a>
    <a href="#">健康 儿童</a>
    <a href="#">耳机 音响</a>
</body>

</html> 

  • 50
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值