这是我参与「第四届青训营 」笔记创作活动的第二天 ———理解CSS

71 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第二天

———理解CSS

一、CSS是什么?

英文名:Cascading Style Sheets
作用:用来定义页面样式
    例:设置字体和颜色、设置位置和大小、添加动画效果
    h1{
        color:white;
        font-size:14px;
       }
    其中h1为一级标题,colorfont-size为属性,white与14px为属性值(属性值不唯一)。

二、CSS如何工作?

graph TD
加载HTML --> 解析HTML--> 创建DOM树-->展示页面

其中在解析HTML会发生以下操作:

graph TD
解析HTML--> 加载CSS-->解析CSS--> 创建DOM树

三、如何在页面中使用CSS?

1.外链形式引用: <link rel="stylesheet" href="此处填写css路径">

2.嵌入形式:<style>...</style>

3.内联形式:eg:<p style="margin:lem 0">Example Content</p>

四、CSS中选择器Selector介绍

1. 通配选择器:*{}
2. id选择器:#自己定义的id的名字 
    eg:#one{}
    注意:页面中id是唯一的
3. 类选择器:.自己定义的class名字
    eg:.two{}
4. 属性选择器:[属性]{}
    eg1:
        <input value="" disabled />
        <style>
            [disabled]{}
        </style>
    eg2:
        <a href="#top"></a>
        <a href="a.jpg"></a>
        <style>
            a[href^="#"]{}
            a[href$="a.jpg"]{}
        </style>
    其中第一个a[href^="#"]中"^"表示选择以“#”号开头,第二个a[href$=".jpg"]中"$"表示选择以“.jpg”结尾
 5. 伪类选择器:不基于标签和属性定位元素
     eg1:
         <a href=""></a>
         <label>用户名:<input type="text"></label>
         <style>
             a:link{}  # 默认状态下所处样式
             a:visited{}  # 访问过链接之后
             a:hover{}  # 鼠标移到链接上
             a:active{}  # 鼠标按下
             :focus{}  # input的聚焦状态
     eg2:
         li:first-child{}  # 第一个li
         li:last-child{}  # 最后一个li
 6. 组合的方式:
     eg:
         <input class="error" value="">
         <style>
             .error{}
             input.error{}
         </style>
      这种方式和权重有关,如果有相同的样式以权重大的为主。其中如果加了"!import",无人能敌。
    1)直接组合:AB     input:focus
    2)后代组合:A B    nav a
    3)亲子组合:A>B    section>p
    4)兄弟选择器:A~B  h2~p
    5)相邻选择器:A+B  h2+p
 选择器组:eg1->body,h1,h2,h3,ul,ol,li{}
     eg2->[type="checkbox"],[type="radio"]{}

五、其他介绍

1. 颜色RGB:rgb(a,b,c)
    每一个颜色都有对应的“#数字与英文”组合
2. 颜色HSL:hsl(a,b%,c%)
    H->Hue色相,取值范围为0~360。
    S->Saturation饱和度,取值范围0~100%。
    L->Lightness亮度,取值范围0~100%。
3. alpha透明度:rgba(1,b,c,d) | hsla(a,b%,c%,d) (d的取值为0~1)
    eg:#ff0000ff=rgba(255,0,0,1)=hsla(0,100%,50%,1)
4. 字体:
    font-family | webFont
        后者必须先定义字体,然后就可在CSS中使用font-family:'fzztjw';。
    font-size: 
        关键字:small/medium/large
        长度:px/em
            eg:父元素为20px,子元素为2em,其子元素大小为40px。
        百分数:相对于父元素字体大小
    font-weight:字重  eg:font-weight:100;
5. line-height:行高
6. white-space:
    nowrap不换行与normal同。
    pre保留空格不换行,换行只识源码中的换行(回车符)和<br/>标签。
    pre-wrap保留空格换行,除了碰到源码中的换行和<br/>会换行外,还会自适应容器的边界进行换行。
    pre-line合并空格换行,与上同。
7. 调试CSS:
    右击页面,选择【检查】
    使用快捷键:Ctrl+shift+I(window)/Ctrl+Opt+I(Mac)
8. 继承:某些属性会自动继承其父元素的计算值,除非显式指定一个值
    所有元素可继承:visibility、cursor。
    内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、font-family、font-size、font-style、font-variant、font-weight、text-decoration、text-transform、direction。
    终端块状元素可继承:text-indent和text-align。
    列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。
    不可继承的:display、margin、border、padding、background、height、min-height、max-height、width、min-width、max-width、overflow、position、left、right、top、bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、page-bread-before和unicode-bidi。
9. 初始值:
    CSS中,每个属性都有一个初始值。
        eg:background-color为transparent
           margin-left为0
    可以使用initial关键字显式重置为初始值
        eg:background-color:initial
10. padding/margin/border
        四个值:上 右 下 左
        三个值:上 左右 下
        两个值:上下 左右
        一个值:上下左右
   其中可以使用margin:auto水平居中
11. box-sizing:border-box;可以将border的宽度和高度计算在width和height中

下表为权重解析

选择器权重值
!importinfinity(无穷大)
行间样式(元素标签中使用style设置的样式)1000
id100
class/属性选择器/伪类选择器10
伪元素选择器/标签选择器1
通配符选择器0

下图为webFont使用步骤:

微信图片_20220725124436.png

微信图片_20220725124703.png

最简单盒模型:

image.png

行级与块级元素

image.png

image.png

六、flex布局

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

七、Grid布局

image.png

image.png

可去这里了解:Grid布局详解 - 简书 (jianshu.com)

八、小结

收获颇多,花的时间也很多但很值。