1、vertical-align

使用场景:

通常用于设置图片或者行内块元素和文字垂直对齐
只针对于行内元素或者行内块元素有效
image.png
image.png

  1. 值:
    • baseline 基线对齐(默认值)
    • top 让元素顶部与整行的顶部对齐
    • bottom 让元素底部与整行的底部对齐
    • middle 中线对齐

image.png

2、让图片在父级垂直居中

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. }
  12. .two {
  13. width: 200px;
  14. height: 200px;
  15. background: lightcoral;
  16. /* 第一步 */
  17. line-height: 200px;
  18. }
  19. img {
  20. width: 100px;
  21. height: 100px;
  22. /* 第二步 */
  23. vertical-align: middle;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div class="two">
  29. <img src="" alt="">
  30. </div>
  31. </body>
  32. </html>

3、想让两个块级元素在一行显示,转换为行内块产生的问题

两个块级元素之间会有缝隙(原因回车造成的)
不仅仅两个块元素在一行,两张图片在一行都会存在这个问题
解决的办法:

  • 在结构中消除换行符
  • 给他们的父级设置font-size:0;如果里面的子元素需要设置文字大小,再单独设置即可。
  • 浮动也可以解决(后面学) ```javascript <!DOCTYPE html>
day04 - 图4 day04 - 图5

<a name="hMK7n"></a>
## 4、overflow属性

1. overflow属性定义一个内容太大无法适应容器的时候应该怎么做
1. 设置给被超出的元素
   - visible:默认,内容不会被修剪,而是显示在元素的框外
   - hidden:超出内容被修剪,修剪掉的内容不可见,并且没有滚动条
   - scroll:超出内容被修剪,浏览器显示滚动条方便查看被修剪的内容
   - auto:浏览器定夺,如果内容超出就生成滚动掉,否则不生成
3. overflow:auto和scroll的区别:
   - auto:是自动生成滚动条,不超出不生成 超出才生成
   - scroll:无论是否超出都会生成滚动条
4. overflow-x:overflow-y:只控制x和y的超出情况
<a name="UHTo0"></a>
## 5、visibility属性:
控制元素显示或者隐藏

- hidden:控制元素隐藏
   - 保留原来的位置,其他元素的布局没有发生改变
   - 相当于此元素变透明
   - visibility属性是继承的,里边的子元素也全部都继承属性,并且隐藏了
   - 如果给子元素设置visible覆盖,那么子元素可以进行显示
- visible:让visibility:hidden隐藏的元素显示
```javascript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>visibility属性</title>
    <style>
        .box{
            width: 600px;
            height: 400px;
            background: yellow;
        }
        .con1{
            width: 300px;
            height: 100px;
            background-color: pink;
            visibility: hidden;
        }
        .con1 .inner{
            width: 100px;
            height: 50px;
            background-color: #5ab3f4;
            visibility: visible;
        }
        .con2{
            width: 300px;
            height: 100px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="con1">
            <div class="inner"></div>
        </div>
        <div class="con2"></div>
    </div>
</body>
</html>

6、opacity透明度:

指定了一个元素的透明度

  • 当opacity作用在某一个元素上的时候,把这个元素和里边的内容当成一个整体看待 即使里边的元素没有继承opacity。它也和父级有一样的透明度
  • opacity的取值是 1-0

    • 1代表完全不透明
    • 0代表完全透明

      选择器

      1、什么是选择器?

  • 要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器。

  • HTML页面中的元素就是通过CSS选择器进行控制的

    2、基础选择器

    id选择器

    我们可以给元素设置id属性,然后通过 #+id属性值 的方式来选择这个元素

    选择器命名:

    • id就像我们的身份证号,是不允许重复的
    • 并且一个元素只能有一个id属性
    • id命名规范建议(类名命名方式也适用)
      • id或者class必须以字母开头,不能以数字或者下划线开头
      • 名字不出现汉字
      • 不允许带有广告的英文单词出现:如:ad adv adver advertising (防止浏览器当成垃圾广告处理掉 过滤掉 )
      • 除第一位后边小写字母、数字、连字符( _ -)
      • 见名知意
      • 不要出现空格
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>id选择器</title>
    <style>
        #three{
            background-color: green;
        }
    </style>
</head>
<body>
    <ul>
        <li id="three"></li>
        <li></li>
    </ul>
</body>
</html>

类选择器:

  1. 可以给不同的元素,进行分组。所有类名相等的元素,是一组的,可以进行控制样式
  2. 给要被分组的元素设置class属性选择器中使用 .+ class属性值 来选择元素
  3. 类不一定多个元素,也可以是一个元素
  4. 一个class可以设置多个类名,但是只能有一个class属性,一个元素的多个class属性的值可以用空格隔开,就代表书写多个类名 ```javascript <!DOCTYPE html>

<a name="hBKua"></a>
### 标签名选择器:

- 通过标签名来选择元素
- 会选择页面中所有的这个标签的元素
```javascript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>标签名选择器</title>
    <style>
        li{
            background-color: red;
        }
    </style>
</head>
<body>
    <ul>
        <li></li>
        <li></li>
        <li id="three"></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <ol>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ol>
</body>
</html>

通配符选择器(*)

  • 通配符使用星号*表示,意思是“所有的”。
  • 在CSS中,同样使用*代表所有的标签或元素,它叫做通配符选择器。
  • 不过,由于*会匹配所有的元素,这样会影响网页渲染的时间,因此很多人开始停止使用*通配符选择器

    /*这里就把所有元素的字体设置为红色*/
    *{ color : red; }
    

    属性选择器

  • [属性]{},把具有这个属性的所有标签选中

  • [属性=“属性值”],把不仅具有这个属性,而且必须是属性值也是规定的这一类标签选中
    <style>
         [index]{
             background:darkorange;
         }
        [index="a1"]{
            background:darkorchid;
        }
    </style>
    

    3、复杂选择器

    后代选择器

    后代选择器使用空格间隔开 (A B:在A元素中寻找后代(不一定是儿子)是B的元素) ```javascript <!DOCTYPE html>

    p1

    p2

    span1
    • 111
    • 222
    1. 333
    2. 444

<a name="dbSSl"></a>
### 子代选择器
子代选择器使用 **>** 间隔开 (**A>B**:在A元素中寻找儿子辈元素 是B的元素)
```javascript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子代选择器</title>
    <style>
        .box>.show{
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="outer">
        <p>p1</p>
        <p>p2</p>
        <span>span1</span>
        <ul class="box">
            <li>111</li>
            <li class="show">222</li>
            <li>
                <span class="show"></span>
            </li>
        </ul>
        <ol>
            <li>333</li>
            <li class="show">444</li>
        </ol>
    </div>

</body>
</html>

相邻兄弟选择器:

相邻兄弟选择器使用 + 间隔开 (A+B:在A元素的下边紧贴着A的元素 并且是B 才能被选中)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相邻兄弟选择器</title>
    <style>
        .outer>.show+span{
            background-color: yellow;
        }
        .outer>.show+p{
            /*选不中状态*/
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class="outer">
        <p>p1</p>
        <p class="show">p2</p>
        <span>span1</span>
        <p>p3</p>
        <span>span2</span>
    </div>
</body>
</html>

通用兄弟选择器:

相邻兄弟选择器使用 ~ 间隔开 (A~B:在A元素的下边兄弟元素 并且是B 就能被选中)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>通用兄弟选择器</title>
    <style>
        .outer>.show~span{
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="outer">
        <span>span0</span>
        <p>p1</p>
        <p class="show">p2</p>
        <span>span1</span>
        <p>p3</p>
        <span>span2</span>
    </div>
</body>
</html>

群组选择器:

  • 将多个选择器使用 隔开 可以同时对多个选择器设置样式
  • 如果多个元素有相同的样式,方法有两种

    • 使用一个共同的类名
    • 使用群组选择器 ```javascript <!DOCTYPE html>

<a name="gO9pl"></a>
### 交集选择器

- “交集”选择器:由两个选择器直接连接构成,其结果是选中二者各自元素范围的交集
```javascript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>交集选择器</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        /*
            当我们想要选择: 某一个元素 并且这个元素拥有某个类名的时候

        */
        .list li{
            width: 30px;
            height: 30px;
            border: 1px solid #000;
            margin: 30px;
            border-radius: 50%;
            background-color: pink;
        }
        .list li.active{
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div class="outer">
        <ul class="list">
            <li></li>
            <li class="active"></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
</body>
</html>

4、选择器的优先级

相同优先级的选择器生效方式

  • 当优先级相同的时候,在后边书写的样式优先级高
  • link元素 其实也是把样式关联上,选择器优先级相同的情况写,后写的生效 ```javascript <!DOCTYPE html>

    box
<a name="WRw0F"></a>
### 选择器优先级的权重计算:

- 行内样式: 1000
- id:100
- 类:10
- 标签名:1

**!important>内联样式>id>类|属性>标签>通配符>继承>浏览器默认**
```javascript
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>选择器优先级2</title>
    <style>
        #box p{
            /*1 --101*/
            background-color: red;
        }
        #box .con p{
            /*2 -- 111*/
            background-color: pink;
        }
        .box #con p{
            /*3--111*/
            background-color: green;
        }
        .box .show p{
            /*4--21*/
            background-color: yellow;
        }
        .box .con .show p{
            /*5 -- 31*/
            background-color: grey;
        }
        #box .show p {
            /*6 --111*/
            background-color: purple;
        }
        #box #con .show p{
            /*7 -- 211*/
            background-color: #5ab3f4;
        }
        #box #con #show p{
            /*8  -- 301*/
            background-color: #5df2ff;
        }
    </style>
</head>
<body>
<div id="box" class="box">
    <div id="con" class="con">
        <div class="show" id="show">
            <p>我是一个p标签</p>
        </div>
    </div>
</div>
</body>
</html>

选择器优先级覆盖案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>优先级覆盖案例</title>
    <style>
        .outer li{
            width: 100px;
            height: 100px;
            margin: 10px;
            background-color: grey;
            float: left;
        }

        .outer .active{
            background-color: red;
        }
    </style>
</head>
<body>
    <ul class="outer">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li class="active"></li>
        <li></li>
    </ul>
</body>
</html>

5、css 的三大特性(背)

  • 继承性
  • 层叠性
  • 优先级

    ①:继承性

    什么是继承性?

    官方解释,继承是一种规则,它允许样式不仅应用于特定的html标签元素,而且应用于其后代元素。简单说就是给父元素设置一些属性,子元素/后代也可以使用,这个我们称之为继承性。

哪些属性具有继承性

并不是所有的属性都可以继承, 以color/font-/text-/line-开头的属性、元素可见性:visibility

有继承性的属性罗列

参考链接:https://blog.csdn.net/qq_41803637/article/details/80023720

②:层叠性:

层叠性就是CSS处理冲突的一种能力。通俗的说就是多种选择器选中了同一个元素,又对相同的属性设置了不同的属性值,这个时候就会发生层叠性。

如何处理:
1、如果权重相同的话,就看css代码的顺序,后面的会把前面的属性覆盖
2、如果权重不相同的话,谁权重大就听谁的。

③:优先级(权重)

权重顺序
!important>内联样式>id>类>标签>通配符>继承>浏览器默认

作业
image.png
或者
image.png
默写:
1.单词
2.基础选择器
3.选择器优先级
4.css有哪三大特性