CSS选择器,盒模型添加样式1

168 阅读8分钟

为网页添加样式

术语解释

 h1 {
    color: red;
    background-color: pink;
    text-align: center;
}

这种叫做css规则: 规则 = 选择器 + 生命块

css选择器

选择器:选中html元素

写法:

  1. ID选择器:选中的是带有相应的ID值得html元素。(注意:id值是唯一的)
  2. 元素选择器:直接书写html标签的名称,会选择页面上所有同名的元素。
  3. 类选择器:选中得是带有相应class值得html元素。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 元素选择器 */
        h1 {
            color: red;
            background-color: pink;
            text-align: center;
        }

        /* ID选择器 */
        #name {
            color: blue;
        }

        /* 类选择器 */
        .name {
            color: green;
        }
    </style>
</head>

<body>
    <h1>为网页添加样式</h1>

    <div id="name">id选择器</div>

    <div class="name">类选择器</div>
</body>

</html>

声明块

出现在大括号中,声明块包含很多得声明(属性),每一个声明(属性)表达了某一方面得样式。

CSS代码书写的位置

  1. 内部样式表:书写在style元素中,通常将这个元素放在网页的 heaer标签中。
  2. 内联样式(元素样式):通过style属性将声明块书写在元素身上。
<h1 style="color:red;background-color:green;">内联样式</h1>
  1. 外部样式表:将样式书写在独立的css文件中。通过通过link标签的href属性将样式表引入到html文档中。(推荐使用)

    -外部样式表,浏览器会进行缓存,当下次再读取的时候,就不会重新下载,提高了页面的执行效率。

.big{
    color:red;
    font-size:18px;
}

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/index.css">
</head>

<body>
    <div class="big">外部样式</div>
</body>

</html>

常见样式声明

  1. color

    元素内部的文字颜色

    预设值: 定义好的单词。

    三原色,色值: 光学三原色(红,绿,蓝),每个颜色可以使用0 ~ 255之间的数字来表达,色值。

    rgb表示法:
    
    rgb(0,255,0)  //绿色
    rgb(0,0,0)  //黑色
    rgba(255,255,255) //白色
              
    HEX(十六进制)表示法:
    
    #0f0f0f
    
    常见的颜色:
    
        淘宝红:#ff4400  #f40
        黑色:#000000 #000
        白色:#ffffff #fff
        灰色:#ccc
    
    
  2. background-color

    元素的背景颜色

  3. font-size

    元素内部的文字尺寸大小

    • px:像素,绝对单位,简单理解为文字的高度占多少个像素点。

    • em:相对单位,相对于于父元素的字体大小。

      每个元素必须要有字体大小,如果没有则使用父元素的,如果没有父元素,则使用浏览器的基准字号。

      user agent UA 用户代理 (浏览器)

  4. font-weight

    文字粗细程度:可以取值为数字,预设值(normal bold)

    strong(表示重要得,不能忽略的内容)元素,默认加粗得效果

  5. font-famify

    文字类型:必须用户计算机中存在得字体才可以。

    sans-serif,非衬线字体。

  6. font-style

    字体样式:通常用它设置斜体。

    i元素和em元素默认样式为斜体,实际使用中,通常用它表示一个图标(icon)

  7. text-decoration

    文本修饰:给文本加线。

    del元素:表示错误的内容 s元素:表示过期的内容

  8. text-indent

    首行文本缩进:可以设置为em表示缩进几个字符,也可以设置为像素值。

  9. line-hegiht

    行高:每行文字的行高,改值越大,每行文本的距离越大。

    设置行高为元素的高度,可以让单行文本垂直居中。

    行高可以设置为纯数字,表示当前元素的字体大小。

  10. width

    元素的宽度:取值可以是像素值,也可以是百分比(如果设置为百分比是相对于他的包含块的宽度)。

  11. height

    元素的高度。

  12. letter-space

    设置文本字符的间距。

  13. text-align

    元素内部文字水平排列方式。

选择器

帮助你精准的选择到想要的元素

简单选择器

  1. ID选择器
   #页面中唯一的id值{
   
   }  

2. 元素选择器

   元素标签{
   
   }  

3. 类选择器

   .元素的class名{
   
   }  

4. 通配符选择器

   *{
   
   }  

5. 属性选择器

根据属性名和属性值选择元素
//选择所有带有href属性的元素
[href]{

}

//选中属性和元素
[href=value]{

}

  
  1. 伪类选择器

    选中某些元素的某种状态

//鼠标移入过后,:前面加选择器,如果不加,默认选中所有元素
:hover{

}

//鼠标按下时的状态
:active{

}

//超链接未被访问过的状态
:link{

}

//超链接访问过后的状态
:visited{

}

//入股全部书写要按照

link > visited > hover > active

结构伪类:

image.png

1. :first-child 兄弟元素中的第一个
2. :last-child 所有兄弟元素中最后一个
3. :nth-child(n) 所有兄弟元素中的第n个
4. :first-of-type 所有同类型兄弟元素中的第一个。  
5. :last-of-type 所有同类型兄弟元素中的最后一个。  
6. :nth-of-type(n) 所有同类型兄弟元素中的 第n个 。

对于n的取值:
1. 0 或不写:什么都选不中 —— 几乎不用。
2. n :选中所有子元素 —— 几乎不用。
3. 1~正无穷的整数 :选中对应序号的子元素。
4. 2n 或 even :选中序号为偶数的子元素。
5. 2n+1 或 odd :选中序号为奇数的子元素。
6. -n+3 :选中的是前3 个。

  1. 伪元素选择器
//会在元素里面生成第一个子元素
元素::before {
    content:''; //表示元素的内容
}

//会在元素里面生成最后一个子元素
元素::after{
    content:'';
}

否定伪类:

否定伪类就是排除满足条件的选择器

:nit(选择器){

}



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.4.14.css">
    <style>
        /* 在div标签中排除.text3类 */
        div:not(.text3) {
            color: red;
            background-color: orange;
        }
    </style>
</head>
<body>
    <div>这是第1行文字</div>
    <div>这是第2行文字</div>
    <div class="text3">这是第3行文字</div>
    <div>这是第4行文字</div>
</body>

选择器的组合

  1. 并且
元素1{

}
// 元素2应用了元素的样式
元素1元素2{
   
}

2. 后代元素 —— 空格

元素 后代元素{

}

3. 子元素 ——>

//只能选中子元素,子元素的子元素不能选中
元素>子元素{

}

4. 相邻元素 —— +

//表示这个元素的下一个元素
元素+元素{

}

5.后面出现的所有兄弟元素 —— ~

元素~元素{

}

选择器的并列

多个选择器用逗号分隔

选择器1,选择器2,选择器3{

}

层叠

声明冲突:同一个样式,多次应用到了一个元素。

层叠:解决声明冲突的过程。浏览器自动处理(权重计算)

1.比较重要性

重要性从高到低:

  1. 作者样式表中的 !important 样式。
  2. 作者样式表中的普通样式。
  3. 浏览器默认样式表中的样式。

2.比较特殊性

看选择器

总体规则:选择器的范围越窄,特殊性越大

具体规则:通过选择器,计算出一个四位数(xxxx)

  1. 千位:如果是内联样式,记作1,否则记作0。
  2. 百位:等于页面中所有id选择器得数量。
  3. 十位:等于选择器中所有类选择器,属性选择器,伪类选择器得数量。
  4. 个位:等一选择器中所有元素选择器,伪元素选择器得数量。

3.比较源次序

代码书写靠后得胜出

应用

  1. 重置样式表

书写一些作者样式,覆盖浏览器得默样式。新建一个css文件将浏览器得默认样式重置。

常见得重置样式表:noemalize.css , reset.css , meyer.css

  1. 爱恨法则

link > visited > hover >active

继承

子元素会继承父元素某些css属性。

通常跟文字内容相关的属性都能被继承

属性值的计算过程

一个一个元素依次渲染,顺序按照页面文档的树形目录结构进行。

image.png

渲染每个元素的前提条件:该元素的所有css属性,必须有值。

一个元素,从所有属性都没有值,到所有属性都有值,这个计算过程,叫做属性值的计算过程。

image.png

image.png

属性值计算过程简介

  1. 确定声明值:参考样式表中没有冲突的声明,作为css属性值。

image.png

  1. 层叠冲突:对样式表有冲突的声明,使用层叠规则,确定CSS属性值。

image.png

  1. 使用继承:对仍然没有值的属性,若可以继承,则使用父元素的值。

image.png

  1. 使用默认值:对仍然没有值的属性,使用默认值。(属性默认值可以在MDN官网上查看)

image.png

特殊的两个CSS取值:

  • inherit:强制继承,将父元素的值去除强制应用到改元素上。
  • initial:初始值,将该属性设置为默认值。

盒模型

box:盒子,每个元素在页面中都会生成一个矩形区域(盒子)。

盒子类型:

  1. 行盒:display 等于 inline的元素。
  2. 块盒:display 等于 block的元素。

行盒在页面中不换行,块盒独占一行。display默认值为inline。

盒子的组成部分

无论是行盒还是块盒,都由以下几个部分组成,从内到外分别是:

  1. 内容 content

width,height,设置的是盒子内容的宽高。内容部分通常叫做整个盒子的 内容盒 content-box

  1. 填充(内边距) padding

可以通过 padding-left,padding-right,padding-top,padding-bottom,属性设置边距的大小。 简写属性,padding:上 右 下 左;

填充区 + 内容区 = 填充盒(padding-box)

  1. 边框 border

边框 = 边框样式 + 边框粗细 + 边框颜色。

边框样式:border-style。边框粗细:border-width。边框颜色:border-color。他们也是复合属性。

边框 + 填充区 + 内容区 = 边框盒(border-box)

  1. 外边距 margin

边框到其他元素的距离。

设置 margin 的方式跟 padding 一样。