Second class css进阶

一、CSS复合选择器

1.1、概述

在 CSS 中,可以根据选择器的类型把选择器分为==基础选择器==和==复合选择器==,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。

  • 复合选择器可以更准确、更高效的选择目标元素(标签)

  • 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的

  • 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等

1.2、后代选择器

# 说明
    后代选择器又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。
    
# 语法
    元素1  元素2 {
        样式声明
    }
    含义:表示选择元素 1 里面的所有元素 2 (后代元素)。
    
# 案例
    ul li {
        样式声明    /* 选择 ul 里面所有的 li标签元素 */
    }
    
# 注意点
    1. 元素1 和 元素2 中间用空格隔开
    2. 元素1 是父级,元素2 是子级,最终选择的是元素2 
    3. 元素2 可以是儿子,也可以是孙子等,只要是元素1 的后代即可 
    4. 元素1 和 元素2 可以是任意基础选择器

案例:

<style>
   ol li a {
      color: red;
   }
        
   ol li {
      color: blue;
   }
</style>
​
<body>
    <ol>
        <li>我是ol的孩子</li>
        <li>我是ol的孩子</li>
        <li>我是ol的孩子</li>
        <li><a href="">我是孙子</a></li>
    </ol>
</body>

1.3、子选择器

# 说明
    子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素。
    
# 语法
    元素1 > 元素2 {
        样式声明
    }
    含义:选择元素1 里面的所有直接后代(子元素) 元素2。
    
# 案例
    div > p {
        声明样式    /* 选择 div 里面所有最近一级 p 标签元素 */
    }
    
# 注意点
    1. 元素1 和 元素2 中间用 大于号 隔开
    2. 元素1 是父级,元素2 是子级,最终选择的是元素2 
    3. 元素2 必须是亲儿子,其孙子、重孙之类都不归他管. 你也可以叫他 亲儿子选择器

案例:将下面的老虎文字修改为红色。

<style>
   div>a {
       color: red;
   }
</style>
​
<body>
    <div class="hot">
        <a href="#">老虎</a>
        <ul>
            <li><a href="#">虎头</a></li>
            <li><a href="#">虎尾巴</a></li>
        </ul>
    </div>
</body>

1.4、并集选择器

# 说明
    并集选择器可以选择多组标签, 同时为他们定义相同的样式。通常用于集体声明。
    并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。
    
# 语法
    元素1,元素2 {
        样式声明
    }
    含义:选择元素1 和 元素2。
    
# 案例
    ul,div { 
        样式声明    /* 选择 ul 和 div标签元素 */
    } 
    
# 注意点
    1. 元素1 和 元素2 中间用逗号隔开
    2. 逗号可以理解为和的意思
    3. 并集选择器通常用于集体声明

1.5、伪类选择器

1.5.1、概述

伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。

伪类选择器书写最大的特点是用==冒号(:)==表示,比如 :hover 、 :first-child 。

因为伪类选择器很多,比如有链接伪类、结构伪类等,所以这里先给大家讲解常用的链接伪类选择器

1.5.2、链接伪类选择器

1.5.2.1、注意事项

  • 为了确保生效,请按照 LVHA 的循顺序声明 :link-:visited-:hover-:active。

  • 记忆法:love hate 或者 lv 包包 hao 。

  • 因为 a 链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式。

1.5.2.2、实际开发中的写法

<style>
     /* a 是标签选择器 所有的链接 */ 
     a { 
        color: gray;
     }
​
     /* :hover 是链接伪类选择器 鼠标经过 */
     a:hover { 
        color: red; /* 鼠标经过的时候,由原来的 灰色 变成了红色 */
     }
</style>

1.5.2.3、案例1

<style>
     a {
        color: orange;
        text-decoration: none;
     }
        
     a:hover {
        color: red;
        text-decoration: underline;
     }
</style>
​
<body>
    <a href="">小猪佩奇</a>
    <a href="https://www.baidu.com">百度网站</a>
</body>

1.5.2.4、案例2

<style>
        /* 1.未访问的链接 a:link  把没有点击过的(访问过的)链接选出来 */
        a:link {
            color: #333;
            text-decoration: none;
        }
        
        /* 2. a:visited 选择点击过的(访问过的)链接 */
        a:visited {
            color: orange;
        }
        
        /* 3. a:hover 选择鼠标经过的那个链接 */
        a:hover {
            color: pink;
        }
        
        /* 4. a:active 选择的是我们鼠标正在按下还没有弹起鼠标的那个链接 */
        a:active {
            color: green;
        }
</style>
​
<body>
    <a href="">小猪佩奇</a>
    <a href="https://www.baidu.com">百度网站</a>
</body>

1.6、:focus伪类选择器

# 说明
    :focus 伪类选择器用于选取获得焦点的表单元素。
    焦点就是光标,一般情况 <input> 类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。
    
# 语法:
    <style>
        input:focus {
            background-color: red;
            color: blue;
        }
    </style>

案例:

<style>
   input:focus {
      background-color: red;
      color: blue;
   }
</style>
​
<body>
    <input type="text">
</body>

1.7、复合选择器总结

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

二、CSS的元素显示模式

2.1、说明

了解元素的显示模式,可以更好的让我们布局页面。

  1. 什么是元素的显示模式

  2. 元素显示模式的分类

  3. 元素显示模式的转换

2.2、什么是元素显示模式

网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点==可以更好的布局我们的网页==。

元素显示模式就是==元素(标签)以什么方式进行显示==,比如<div>自己占一行,比如一行可以放多个<span>

HTML 元素一般分为==块元素==和==行内元素==两种类型。

2.3、块元素

常见的块元素有<h1>~<h6><p><div><ul><ol><li>等,其中 <div> 标签是最典型的块元素。

块级元素的特点:

① 比较霸道,自己独占一行。

② 高度,宽度、外边距以及内边距都可以控制。

③ 宽度默认是容器(父级宽度)的100%。

④ 是一个容器及盒子,里面可以放行内或者块级元素。

注意点:

  • 文字类的元素内不能使用块级元素

  • <p>标签主要用于存放文字,因此 <p>里面不能放块级元素,特别是不能放<div> , 但是可以放 <img>

  • 同理, <h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素

2.4、行内元素

常见的行内元素有 <a><strong><b><em><i><del><s><ins><u><span>等,其中,<span> 标签是最典型的行内元素。有的地方也将行内元素称为内联元素。

行内元素的特点:

① 相邻行内元素在一行上,一行可以显示多个。

② 高、宽直接设置是无效的。

③ 默认宽度就是它本身内容的宽度。

④ 行内元素只能容纳文本或其他行内元素。

注意点:

  • 链接里面不能再放链接。

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

2.5、行内块元素

在行内元素中有几个特殊的标签 —— <img /><input /><td>,它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素。

行内块元素的特点:

① 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。

② 默认宽度就是它本身内容的宽度(行内元素特点),当然也可以设置宽度。

③ 高度,行高、外边距以及内边距都可以控制(块级元素特点)。

2.6、元素显示模式总结

元素模式元素排列设置样式默认宽度包含
块级元素一行只能放一个块级元素可以设置宽度高度容器的100%容器级可以包含的任何标签
行内元素一行可以放多个行内元素不可以设施宽度高度它本身内容的宽度容纳文本或其他行内元素
行内块元素一行可以放多个行内块元素可以设置宽度高度它本身内容的宽度

学习元素显示模式的主要目的就是分清它们各自的特点,当我们网页布局的时候,在合适的地方用合适的标签元素。

2.7、元素显示模式转换

特殊情况下,我们需要元素模式的转换,简单理解: 一个模式的元素需要另外一种模式的特性。比如说:想要增加超链接<a>的触发范围。

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

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

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

2.8、案例:简洁版小米侧边栏

  • 效果

    案例的核心思路分为两步:

    1. 把链接a 转换为块级元素, 这样链接就可以单独占一行,并且有宽度和高度.

    2. 鼠标经过a 给 链接设置背景颜色

  • 代码实现

    <style>
            a {
                display: block;
                width: 230px;
                height: 40px;
                text-decoration: none;
                background-color: gray;
                color: white;
                line-height: 40px;
                text-indent: 2em;
            }
            
            a:hover {
                background-color: orange;
            }
    </style>
    ​
    <body>
        <div>
            <a href="">手机</a>
            <a href="">电视</a>
            <a href="">笔记本 平板</a>
            <a href="">家电</a>
            <a href="">出行 穿戴</a>
            <a href="">智能 路由器</a>
        </div>
    </body>

2.9、技巧:单行文字垂直居中的效果

2.9.1、说明

CSS 没有给我们提供文字垂直居中的代码. 这里我们可以使用一个小技巧来实现。

解决方案: ==让文字的行高等于盒子的高度== 就可以让文字在当前盒子内垂直居中

2.9.2、原理

==简单理解: 行高的上空隙和下空隙把文字挤到中间了。==

三、CSS的背景

3.1、概述

通过 CSS 背景属性,可以给页面元素添加背景样式。

背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。

3.2、背景颜色

# 说明
    background-color 属性定义了元素的背景颜色。
# 语法:
    background-color: 颜色值;
# 注意点:
    一般情况下元素背景颜色默认值是 transparent(透明),我们也可以手动指定背景颜色为透明色。
    background-color:transparent;
<style>
    div {
       width: 200px;
       height: 200px;
       background-color: pink;
    }
</style>

3.3、背景图片

# 说明
    background-image 属性描述了元素的背景图像。实际开发常见于 logo 或者一些装饰性的小图片或者是超大的背景图片, 优点是非常便于控制位置。
​
# 语法
    background-image : none | url(url地址)
    
    none: 无背景图,也是默认值
    url:  使用绝对或者相对地址指定背景图像
​
# 注意点:
    背景图片后面的地址,千万不要忘记加 URL, 同时里面的路径不要加引号。
<style>
    div {
       width: 200px;
       height: 200px;
       background-color: pink;
       background-image: url(logo.png);
    }
</style>

3.4、背景平铺

# 说明
    如果需要在 HTML 页面上对背景图像进行平铺,可以使用 background-repeat 属性。
​
# 语法
    background-repeat: repeat | no-repeat | repeat-x | repeat-y
参数值作用
repeat背景图像在纵向和横向上平铺(默认的)
no-repeat背景图像像不平铺
repeat-x图像背景在横向平铺
repea-y背景图像在纵轴平铺
<style>
    div {
       width: 200px;
       height: 200px;
       background-color: pink;
       background-image: url(logo.png);
       background-repeat: no-repeat;   /**    背景图像不平铺   **/
    }
</style>

3.5、背景图片位置

# 说明
    利用 background-position 属性可以改变图片在背景中的位置。
    
# 语法
    background-position: x y;
    
    含义:x 坐标和 y 坐标。 可以使用 方位名词 或者 精确单位
参数说明
length百分数、由浮点数字和单位标识符组成的长度值
positiontop,center,bottom,left,right 方位词

3.5.1、参数是方位名词

  • 如果指定的两个值都是方位名词,则两个值前后顺序无关,比如 left top 和 top left 效果一致

    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /* 如果是方位名词  right center 和 center right 效果是等价的 跟顺序没有关系 */
                background-position: right center;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>
  • 如果只指定了一个方位名词,另一个值省略,则第二个值默认居中对齐

    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /*此时水平一定是靠右侧对齐(因为只有x轴才有left和right),第二个参数省略y轴垂直居中显示 */
                background-position: right;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>
    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /*此时一定是y轴顶部对齐(因为只有y轴才有top和bottom),第二个参数省略则x轴水平居中显示 */
                background-position: top;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>
# 说明
    方位名称写一个的话,第二个则默认是居中的,也可能是垂直居中,也可能是水平居中的,具体要看第一个方位名词是
    top、bottom还是left right。
    background-position: top;
# 解答
    如果是top或者是bottom,则第二个参数是水平居中
    如果是left或者是right,则第二个参数是垂直居中

3.5.2、参数是精确单位

  • 如果参数值是精确坐标,那么第一个肯定是 x 坐标,第二个一定是 y 坐标

    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /* x轴:50px , y轴:20px */
                background-position: 50px 20px;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>
  • 如果只指定一个数值,那该数值一定是 x 坐标,另一个默认垂直居中

    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /* x轴:80px , y轴:垂直居中 */
                background-position: 80px;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>

3.5.3、参数是混合单位

  • 如果指定的两个值是精确单位和方位名词混合使用,则第一个值是 x 坐标,第二个值是 y 坐标

    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /* x轴:80px , y轴:center , 其实就等价于 background-position: 80px;  */
                background-position: 80px center;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>
    <style>
            div {
                width: 500px;
                height: 500px;
                background-color: pink;
                background-image: url(logo.png);
                background-repeat: no-repeat;
                /* x轴:center , y轴:40px , 水平是居中对齐,垂直是40px */
                background-position: center 40px;
            }
    </style>
    ​
    <body>
        <div>
        </div>
    </body>

3.6、背景图像固定

# 说明
    background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动。
    background-attachment 后期可以制作视差滚动的效果。
    
# 语法
    background-attachment : scroll | fixed
    参数说明:
        scroll : 背景图像是随着对象内容滚动而滚动
        fixed  : 背景图像固定
<style>
        body {
            background-color: pink;
            background-image: url(logo.png);
            background-repeat: no-repeat;
            background-position: top;
            background-attachment: fixed;
        }
</style>
​
<body>
    <p>HelloWorld</p>
    ....
    <p>HelloWorld</p>
</body>

找一张超大背景图片可以测试该效果。

3.7、背景复合写法

# 说明
    1. 为了简化背景属性的代码,我们可以将这些属性合并简写在同一个属性 background 中。从而节约代码量。
    2. 当使用简写属性时,没有特定的书写顺序,一般习惯约定顺序为:
        background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;
<style>
    body {
       width: 900px;
       height: 500px;
       background: pink url(logo.png) no-repeat center left;
    }
</style>

3.8、背景色半透明

# 说明
    CSS3 为我们提供了背景颜色半透明的效果。
# 语法
    background: rgba(0, 0, 0, 0.3);
# 注意点
    1. 最后一个参数是 alpha 透明度,取值范围在 0~1之间
    2. 我们习惯把 0.3 的 0 省略掉,写为 background: rgba(0, 0, 0, .3);
    3. 注意:背景半透明是指【盒子背景色半透明】,盒子里面的内容不受影响
    4. CSS3 新增属性,是 IE9+ 版本浏览器才支持的
    5. 但是现在实际开发,我们不太关注兼容性写法了,可以放心使用
<style>
    div {
        width: 300px;
        height: 300px;
        background: rgba(0, 0, 0, 0.4);
    }
</style>
​
<div>
    HelloWorld
</div>

3.9、背景总结

属性作用
background-color背景颜色预定义的颜色值/十六进制/RGB代码
background-image背景图片url(图片路径)
background-repeat是否平铺repeat/no-repeat/repeat-x/repeat-y
background-position背景位置length/position 分别是x和y坐标
background-attachment背景固定scroll(背景滚动) / fixed(背景固定)
background书写更简单背景颜色 背景图片地址 背景平铺 背景滚动 背景位置
background: rgba()背景颜色半透明background:rgba(0,0,0,0.3); 后面必须是4个值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答你关于Golang语法的问题!Golang是一门简洁高效的编程语言,下面我将分享一些Golang语法的知识。 1. 嵌套结构体:在Golang中,你可以在一个结构体中嵌套另一个结构体。这样可以更好地组织和管理代码。例如: ```go type Person struct { Name string Age int } type Employee struct { Person Salary int } ``` 这里的Employee结构体嵌套了Person结构体,可以通过Employee结构体访问Person结构体的字段。 2. 接口和类型断言:Golang中的接口是一种约定,定义了一组方法。通过接口,你可以实现多态性。类型断言则用于检查接口变量是否实现了某个接口。例如: ```go type Shape interface { Area() float64 } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return math.Pi * c.Radius * c.Radius } func main() { var shape Shape = Circle{Radius: 5} if circle, ok := shape.(Circle); ok { fmt.Println("Area of circle:", circle.Area()) } } ``` 3. 并发编程:Golang内置了并发编程的支持,通过goroutine和通道(channel)可以实现轻量级线程间通信。例如: ```go func worker(id int, jobs <-chan int, results chan<- int) { for j := range jobs { fmt.Println("Worker", id, "processing job", j) time.Sleep(time.Second) // 模拟耗时操作 results <- j * 2 } } func main() { jobs := make(chan int, 5) results := make(chan int, 5) // 启动三个goroutine for w := 1; w <= 3; w++ { go worker(w, jobs, results) } // 发送5个任务 for j := 1; j <= 5; j++ { jobs <- j } close(jobs) // 输出结果 for r := 1; r <= 5; r++ { fmt.Println(<-results) } } ``` 以上是Golang语法的一些例子,希望对你有帮助!如果你有更多问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值