深入理解CSS | 青训营笔记

71 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

重点内容:🍊CSS如何工作🍋选择器🍑布局相关技术

🍉前言🍉

本节课程老师带领我们深入浅出的理解了CSS的基本原理和用法。接下来,让我们回顾一下本次课程的主要内容~

🍈CSS是什么🍈

CSS(Cascading Style Sheets)层叠样式表,用来定义页面元素的样式。 在页面中使用CSS有三种方式:

外链式

<link rel="stylesheet" type="text/css" href="images/css/style.css"/>  

嵌入式

<style type="text/css">
        div {color: white; }
        p {margin: lem 0; }
</style>  

内联式

<p style="width: 100%;" >  

一般来讲,比较推荐使用外链式,这样可以把内容和样式分离,更有利于项目的开发。组件开发之类的项目一般都写在一个单文件里,也即第二种嵌入方式,这样做也问题不大。

🍎CSS如何工作🍎

image-20230116124908908.png

如图所示,在浏览器加载完HTML文件后,解析文件时会加载并解析CSS代码,并把样式添加到所创建的DOM树上,最终形成展示的页面。

🍐选择器🍐

CSS丰富的选择器使得它能够非常灵活的选择各个节点的元素。

*通配符选择器、标签选择器、# id选择器、. 类选择器、[ ] 属性选择器以及伪类选择器

伪类选择器的使用:

<style>
            /* 未访问时 */
            a:link {
                color: red;
            }
            /* 访问过后 */
            a:visited {
                color: blue;
            }
            /* 悬停时 */
            a:hover{
                color: green;
            }
            /* 按下但未释放时 */
            a:active{
                color: yellow;
            }
            /* 光标聚焦时 */
            a:focus {
                color:orange;
            }
</style>

选择器包含多种多样,使用组合选择器就可以实现很多自定义的选择功能。

举个🌰:

    <style type="text/css">
        p{
            width: 2.5rem;
            height: 2.5em;
            background-color: lightgray;
            text-align: center;
        }
        /* 指定第几个元素 */
        p:nth-child(4){
            background-color: orange;
        }
        /* 指定倒数第几个元素 */
        p:nth-last-child(3){
            background-color: skyblue;
        }
        /* 奇数元素 */
        p:nth-child(odd){
            background-color: skyblue;
        }
        /* 偶数元素 */
        p:nth-child(even){
            background-color: firebrick;
        }
        /* 3的倍数,其中n从1开始 */
        p:nth-child(3n){
            background-color: orange;
        }
        /* 属性值以color开头 */
        p[class^=color]{
            background-color: lightblue;
        }
        /* 属性值以box结尾 */
        p[class$=box]{
            background-color: orange;
        }
        /* 属性值book在任意位置 */
        p[class*=book]{
            background-color: firebrick;
        }
    </style>

🍅一些建议🍅

line-height 设置行高,HTML默认的行高是1.1~1.2,这是非常不适合阅读的,所以多段文字一般都需要设置行高。

HTML中对于空白符的处理:默认情况下多个空格或者连续换行会被合并为一个,那如果我们就像展示多个空格,或者换行该怎么办呢? 方法就是设置white-space属性!

🍒选择器的特异度🍒

在面对多个规则同时存在时,同时只能有一条规则生效,这就不得不说一下选择器的特异度了。当有多个拥有相同重要性的CSS选择器里的样式要应用于同一个元素时,特异度最高的选择器声明的样式将优先应用于该元素。

78ad44f83921cc60ce1479b8ac20d78.png

🥝CSS继承🥝

某些属性会自动继承其父元素的计算值,除非显式指定一个值(inherit)

一般跟文字属性相关的,都是可以继承的;跟盒模型相关的属性都是不可继承的。 如果没有找到可继承的值,则会使用属性的初始值。例如:background-color初始值为 transparent;margin-left初始值为0;可以使用initial关键字显式重置为初始值。

🍓布局相关技术🍓

屏幕截图(33).png

🥥盒模型🥥

经典的盒模型如图所示

屏幕截图(35).png

通过调整盒模型中不同的属性值可以调整元素的存在位置。

需要关注的是,width指定content box宽度,取值为长度、百分数、auto;height指定content box高度,取值为长度、百分数、auto,但只有容器有指定的高度时,百分数才生效!

🫐几种布局🫐
Flex布局

Flex布局 Flex Box 用的最多最灵活的一种布局方式 因为摆放的方向有四种,所以不能简单的用水平和垂直来区分对齐方式,因此引入了主轴和侧轴的概念。
主轴:元素摆放的方向
侧轴:和主轴垂直的方向

Flexibility:设置子项的弹性:当容器有剩余空间时,会伸展;容器空间不够时,会收缩 flex-grow 设置弹性,是指容器减去固定的宽度之后,将剩余的宽度按比例分配给剩下的元素。

Grid布局

通过划分网格 ,元素通过网格线放入网格中。

🍌总结🍌:

最后,通过本节课程的学习,深入浅出的了解了CSS及其背后的工作原理,想要学习更多细节还需要自行钻研!俗话说的好,✨师傅领进门,修行靠个人✨~