首页 前端知识 CSS基本操作(总结自黑马程序员)

CSS基本操作(总结自黑马程序员)

2024-09-29 22:09:43 前端知识 前端哥 534 13 我要收藏

目录

1.Emment标签

1.1快速生成HTML结构语法

2.CSS的复合选择器

1.2后代选择器(重要)

1.3子选择器

1.4并集选择器(重要)

1.6 链接伪类选择器

1.7:foucs伪类选择器

3.元素显示模式

3.1什么是元素显示模式

3.2 块元素

3.2行内元素

3.3 行内块元素

​编辑

案例:简洁版小米侧边栏

3.CSS的背景

3.1 背景颜色

3.2 背景图片

3.3 背景平铺

3.4 背景图片位置

3.5 背景图像固定(背景附着)

3.6 背景复合写法

3.7背景色半透明

4.CSS三大特性

4.1层叠性

4.2继承性

4.3优先级


1.Emment标签

1.1快速生成HTML结构语法

1. 生成标签 直接输入标签名按tab键即可 比如 div 然后tab键,就可以生成<div></div>

2. 如果想要生成多个相同标签 加上*就可以了比如 div*3 就可以快速生成3个div

3. 如果有父子级关系的标签,可以用>比如 ul>li就可以了

4. 如果有兄弟关系的标签,用+就可以了比如div+p

5. 如果生成带有类名或者id名字的,直接写.demo 或者#two tab键就可以了

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

2.CSS的复合选择器

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

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

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

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

1.2后代选择器(重要)

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

元素1 元素2{样式声明 }

上述语法表示选择元素1里面的所有元素2(后代元素)。

例如:

ol li {
            color: #df2020;
        }

● 元素1和元素2中间用空格隔开

● 元素1是父级,元素2是子级,最终选择的是元素2

● 元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可

<!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 {
            color: #df2020;
        }
    </style>
</head>

<body>
    <ol>
        <li> 残奥会继续进行之中,已经来到了第六个比赛日,看上去前三排名的悬念已经不大。中国队目前以53块金牌40块银牌22块铜牌领先,总奖牌数量达到了115块。而英国队还是领先了美国队10金。</li>

        <li>残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
            残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
            中国队和美国队,报道残奥会的消息都比较少。英格兰媒体有一些相关的报道,但也远少于奥运会。反而是日本、韩国、印度等亚洲队伍,特别关注残奥会。</li>


        <p>残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
            残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
            在第六个比赛日中,以色列队的夺金使得他们超过了印度队。不过,最兴奋的,反而是印度当地媒体。尽管在第六个比赛日里面,他们没有拿到1块金牌。因为这一天,印度队的奖牌数量,首次超越了20块。
        </p>

    </ol>
</body>

</html>

1.3子选择器

子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素.

语法:

元素1>元素2{样式声明}

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

例如:

div > p { 样式声明 } /* 选择 div 里面所有最近一级 p 标签元素 */

● 元素1和元素2中间用大于号隔开

● 元素1是父级,元素2是子级,最终选择的是元素2

1.4并集选择器(重要)

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

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

元素1,元素2{样式声明}

上述语法表示选择元素1和元素2。

例如:

u1,div { 样式声明} /*

选择 u1 和 div标签元素 */

● 元素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>
        p,
        div,
        .color p {
            color: #df2020;
        }
    </style>
</head>

<body>

    <p>残奥会继续进行之中,已经来到了第六个比赛日,看上去前三排名的悬念已经不大。中国队目前以53块金牌40块银牌22块铜牌领先,总奖牌数量达到了115块。而英国队还是领先了美国队10金。</p>

    <div> 残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
        残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
        中国队和美国队,报道残奥会的消息都比较少。英格兰媒体有一些相关的报道,但也远少于奥运会。反而是日本、韩国、印度等亚洲队伍,特别关注残奥会。</div>

    <ol class="color">
        <p>残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
            残奥会两重天:中美关注度低!印度全民狂喜,首次奖牌超20块
            在第六个比赛日中,以色列队的夺金使得他们超过了印度队。不过,最兴奋的,反而是印度当地媒体。尽管在第六个比赛日里面,他们没有拿到1块金牌。因为这一天,印度队的奖牌数量,首次超越了20块。
        </p>

    </ol>
</body>

</html

<!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 {
            display: block;
            height: 40px;
            width: 230px;
            color: aliceblue;
            font-size: 14px;
            background-color: rgba(55, 67, 63, 0.808);
            text-decoration: none;
            text-indent: 2em;
        }

        /* 未被访问 */
        a:link {
            color: #55b828;
        }

        /* 2.鼠标经过链接变换背景颜色 */
        a:hover {
            background-color: #ff7000;
        }

        /* 已经被访问 */
        a:visited {
            color: #f3eded;
        }

        /* 选择活动链接 */
        a:active {
            color: #eae021;
        }
    </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>

1.6 链接伪类选择器

链接伪类选择器注意事项

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

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

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

1.7:foucs伪类选择器

: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>
        a {
            display: block;
            height: 40px;
            width: 230px;
            color: aliceblue;
            font-size: 14px;
            background-color: rgba(55, 67, 63, 0.808);
            text-decoration: none;
            text-indent: 2em;
        }

        input:focus {
            background-color: #47c642;
        }
    </style>
</head>

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

</html>

3.元素显示模式

3.1什么是元素显示模式

作用:

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

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

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

3.2 块元素

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

块级元素的特点:

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

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

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

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

注意:

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

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

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

3.2行内元素

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

行内元素的特点:

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

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

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

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

注意:

● 链接里面不能再放链接

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

3.3 行内块元素

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

行内块元素的特点:

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

2 默认宽度就是它本身内容的宽度(行内元素特点)。

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

总结

案例:简洁版小米侧边栏

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

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

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

+

完整代码显示

<!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 {
            display: block;
            height: 40px;
            width: 230px;
            color: aliceblue;
            font-size: 14px;
            background-color: rgba(55, 67, 63, 0.808);
            text-decoration: none;
            text-indent: 2em;
        }

        /* 2.鼠标经过链接变换背景颜色 */
        a:hover {
            background-color: #ff7000;
        }
    </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>
 /* 2.鼠标经过链接变换背景颜色 */
        a:hover {
            background-color: #ff7000;
        }

a:hover 是 CSS 的伪类选择器,用于在鼠标悬停在 <a> 元素(链接)上时应用样式。hover 伪类允许你定义当用户将鼠标指针放在链接上时,链接的外观如何变化。

语法格式:

selector:hover { property: value; }

  • selector 是要应用样式的选择器,通常是元素的类型或类名(在这个例子中是 a)。
  • property 是要修改的 CSS 属性(如 background-colorcolorfont-size 等)。
  • value 是属性的值。

例子:

a:hover { background-color: #ff7000; }

解释:

  • a:hover 选择所有 <a> 元素在鼠标悬停时的状态。
  • background-color: #ff7000; 设置背景颜色为橙色,当用户将鼠标悬停在链接上时,链接的背景颜色会变成橙色。
  • 2.7一个小技巧 单行文字垂直居中的代码

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

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

  • <!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 {
                display: block;
                height: 40px;
                width: 230px;
                color: aliceblue;
                font-size: 14px;
                background-color: rgba(55, 67, 63, 0.808);
                text-decoration: none;
                text-indent: 2em;
                line-height: 40px;
            }
    
    
            /* 2.鼠标经过链接变换背景颜色 */
            a:hover {
                background-color: #ff7000;
            }
        </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>

3.CSS的背景

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

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

3.1 背景颜色

background-color属性定义了元素的背景颜色。

background-color:颜色值;

一般情况下元素背景颜色默认值是transparent(透明),我们也可以手动指定背景颜色为透明色。

3.2 背景图片

background-image属性描述了元素的背景图像。实际开发常见于logo或者一些装饰性的小图片或者是超
大的背景图片,优点是非常便于控制位置.(精灵图也是一种运用场景)

background-image : none | url (url)

<!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 {
            width: 300px;
            height: 300px;
            background-image: URL(CT-20240816095553.png)
        }
    </style>
</head>

<body>
    <div></div>

</body>

</html>

3.3 背景平铺

如果需要在HTML页面上对背景图像进行平铺,可以使用background-repeat属性。

background-repeat: repeat | no-repeat | repeat-x | repeat-y

<!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 {
            width: 300px;
            height: 300px;
            background-image: URL(CT-20240816095553.png);
            background-color: #c4d82c;
            background-repeat: repeat-x;
        }
    </style>
</head>

<body>
    <div></div>

</body>

</html>

3.4 背景图片位置

利用background-position属性可以改变图片在背景中的位置。

background-position: x y;

参数代表的意思是:x坐标和y坐标。可以使用方名词或者精确单位

1.参数是方位名词

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

· 如果只指定了一个方位名词,另一个值省略,则第二个值默认居中对齐

2.参数是精确单位

如果单位是精确单位,那么第一个一定是x周,第二个是y坐标

3.如果只指定一个数值,那么该数值一定是x坐标,另一个默认居中

3.5 背景图像固定(背景附着)

background-attachment属性设置背景图像是否固定或者随着页面的其余部分滚动。

background-attachment后期可以制作视差滚动的效果。

background-attachment : scroll | fixed

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>背景图片固定</title>
    <style>
        body {
            background-image: url(王者荣耀背景.jpg);
            background-repeat: no-repeat;
            background-position: center top;
            /* 把背景图片固定住 */
            background-attachment: fixed;
        }

        p {
            color: aliceblue;
            font-size: 25px;
            line-height: 50px;
        }
    </style>
</head>

<body>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>
    <p>我想回宿舍</p>



</body>

</html>

3.6 背景复合写法

为了简化背景属性的代码,我们可以将这些属性合并简写在同一个属性background中。从而节约代码量.

当使用简写属性时,没有特定的书写顺序,一般习惯约定顺序为:

background:背景颜色背景图片地址背景平铺 背景图像滚动背景图片位置;

background: transparent url (image.jpg) repeat-y fixed top ;

这是实际开发中,我们更提倡的写法。

当使用简写属性时,没有特定的书写顺序,一般习惯约定顺序为:

background:背景颜色背景图片地址背景平铺 背景图像滚动背景

3.7背景色半透明

CSS3为我们提供了背景颜色半透明的效果。

background: rgba(0, 0, 0, 0.3); 

● 最后一个参数是alpha透明度,取值范围在0~1之间

● 最后一个参数是alpha透明度,取值范围在0~1之间

● 我们习惯把0.3的0省略掉,写为background:rgba(0,0,0,.3);

● 注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响

● CSS3新增属性,是IE9+版本浏览器才支持的

● 但是现在实际开发,我们不太关注兼容性写法了,可以放心使用

4.CSS三大特性

层叠性 继承性 优先级

4.1层叠性

4.2继承性

现实中的继承:我们继承了父亲的姓

CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号。简单的理解就是:子承父业。

特点

  • 恰当地使用继承可以简化代码,降低CSS样式的复杂性
  • 子类可以继承父元素的样式(text- font- line-这些元素开头发可以继承,以及color属性
  • 口诀:龙生龙风生分,老鼠的孩子会打洞

行高的继承性

body {
font:12px/1.5 Microsoft YaHei ;

}

● 行高可以跟单位也可以不跟单位

● 如果子元素没有设置行高,则会继承父元素的行高为1.5

● 此时子元素的行高是:当前子元素的文字大小*1.5

● body行高1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高

4.3优先级

选择器的权重:

<!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 {
            width: 300px;
            height: 300px;
            color: aqua;

        }

        .test {
            color: blueviolet;
        }

        #demo {
            color: aquamarine;
        }
    </style>
</head>

<body>
    <div>
        <p class="test" id="demo" style="color:brown">我想回宿舍</p>
        <p>我想回宿舍</p>
        <p>我想回宿舍</p>
        <p>我想回宿舍</p>
    </div>


</body>

</html>


如果您觉得有失偏颇请您在评论区指正,如果您觉得不错的话留个好评再走吧!!

您的鼓励就是对我最大的支持!  ! !

转载请注明出处或者链接地址:https://www.qianduange.cn//article/18713.html
标签
评论
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!