0
点赞
收藏
分享

微信扫一扫

css04

卿卿如梦 2022-03-12 阅读 50
csscss3html5

学习目标

  • 能够认识 盒子模型 的组成部分
  • 能够掌握盒子模型的 边框、内边距、外边距 的作用及简写形式
  • 能够计算盒子的 实际大小
  • 能够了解 外边距折叠现象,并知道如何解决 盒子塌陷问题

css三大特性

继承性 层叠性 优先级

优先级

不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低选择器样式

权重叠加

如果是复合选择器,此时需要通过权重叠加计算方法,判断最终哪个选择器优先级最高会生效

权重叠加公式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZIG68WkA-1646824997703)(…/…/…/web81/day06/03-%E7%AC%94%E8%AE%B0/assets/1641634659053.png)]

权重叠加计算公式:(每一级之间不存在进位)

盒子模型组成

内容区 边框 内边距 外边距

网页的每个元素(标签)都可以理解为盒子.

内容区域

宽高设置内容区域的大小

width:50px;
height:60px;

边框(border)

边框粗细
border-width:5px;
边框样式
border-style:solid|dashed|dotted
边框颜色
border-color:red;

边框单方向

border-top:solid 1px red;
border-bottom:solid 1px red;
border-left:solid 1px red;
border-right:solid 1px red;

边框简写

border:solid 1px red;

内边距(padding)

上右下左
padding:10px;
上下 左右
padding:10px 20px;
上 左右  下
padding:10px 20px 30px;
上右下左
padding:10px 20px 30px 50px;

内边距单方向设置

padding-top:10px;
padding-bottom:10px;
padding-left:10px;
padding-right:10px;

盒子模型终极计算公式

盒子宽度=左右边框+左右padding+内容宽度
盒子高度=上下边框+上下padding+内容高度
边框 padding都会撑大盒子
	1 手动内减 
	2 自动内减

自减盒子模型

css3盒子模型
box-sizing: border-box;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aYfb43AQ-1646824997704)(assets/1641723483106.png)]

外边距(margin)

上右下左
margin:10px;
上下 左右
margin:10px 20px;
上 左右  下
margin:10px 20px 30px;
上右下左
margin:10px 20px 30px 50px;

外边距单方设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYakfEF6-1646824997704)(assets/1641723533598.png)]

清除内外边距

因为部分标签有默认的内外边距,如果不清除,会影响网页布局…

*{
    margin:0;
    padding:0;
}

版心

网页的可视区域.版心一定要固定的宽度.实际开发固定宽度一旦设置,不要轻易更改.

.w{
    width:1226px;
    margin:0 auto;
}

新闻案例

 <div class="news">
        <h2>最新文章/New Articles</h2>
        <ul>
            <li><a href="#">武汉招聘前端开发,vue.js,css</a></li>
            <li><a href="#">武汉招聘网页设计,vue.js,css</a></li>
            <li><a href="#">武汉招聘网页设计,vue.js,css</a></li>
            <li><a href="#">武汉招聘网页设计,vue.js,css</a></li>
            <li><a href="#">武汉招聘网页设计,vue.js,css</a></li>
        </ul>
    </div>
* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .news {
            width: 500px;
            height: 400px;
            /* ps */
            /* background-color: pink; */
            margin: 50px auto 0;
            padding: 40px 30px 0;
            border: 1px solid #ccc;
        }

        .news h2 {
            font-size: 30px;
            color: #000;
            border-bottom: 1px solid #ccc;
            padding-bottom: 10px;
        }

        ul {
            list-style: none;
        }

        .news ul li {
            height: 50px;
            line-height: 50px;
            padding-left: 28px;
            border-bottom: 1px dashed #ccc;
            /* text-indent: 2em; */
        }

        .news a {
            font-size: 18px;
            color: #666;
            text-decoration: none;
        }

        .news a:hover {
            text-decoration: underline;
            color: orange;
        }

外边距折叠现象

外边距正常现象

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        div {
            display: inline-block;
            width: 200px;
            height: 300px;
        }

        .box1 {
            background-color: pink;
            margin-right: 20px;
        }

        .box2 {
            background-color: green;
            margin-left: 30px;
        }

        /* 
        水平布局的盒子,左右margin正常,互不相影响,
        最终的距离为margin左右的和.
        */
    </style>
</head>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

</html>

外边距折叠-合并现象

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        div {

            width: 200px;
            height: 300px;
        }

        .box1 {
            background-color: pink;
            margin-bottom: 20px;

        }

        .box2 {
            background-color: green;
            margin-top: 60px;

        }

        /* 
            垂直布局 的 块级元素,上下的margin会合并
            最终两者的距离为margin最大值
            解决方案:实际开发避免即可,只给其中一个盒子设置margin即可

        */
    </style>
</head>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

</html>

外边距折叠-塌陷现象

互相嵌套 的 块级元素,子元素的 margin-top 会作用在父元素上

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .father {
            width: 600px;
            height: 600px;
            background-color: pink;
            /* border-top: 1px solid #000; */
            /* padding-top: 1px; */
            /* overflow: hidden; */
        }

        .son {
            float: left;
            width: 200px;
            height: 200px;
            margin-top: 40px;
            background-color: green;

        }

        /*  
        互相嵌套 的 块级元素,子元素的 margin-top 会作用在父元素上
        导致父元素一起往下移动
        解决方案
        1 给父元素设置border-top;
        2 给父元素设置padding-top
        3 给父元素设置 overflow: hidden
        4 转换为行内块元素
        5 设置浮动
        注意:浮动 绝对定位 固定定位的盒子不会有嵌套块级元素塌陷问题.

        */
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>

</html>

行内元素内外边距无效

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        a {
            /* display: inline-block; */
            /* 水平方向 有效 */
            /* margin:0 20px; */
            /* 垂直方向  无效*/
            /* margin: 30px 0; */
            padding: 50px 30px;
        }
    </style>
</head>

<body>
    <a href="#">百度</a>|<a href="#">新浪</a>|<a href="#">谷歌</a><a href="#">小米</a>|
</body>

</html>

margin: 0;
padding: 0;
box-sizing: border-box;
}

    a {
        /* display: inline-block; */
        /* 水平方向 有效 */
        /* margin:0 20px; */
        /* 垂直方向  无效*/
        /* margin: 30px 0; */
        padding: 50px 30px;
    }
</style>
百度| 新浪| 谷歌 小米| ```
举报

相关推荐

0 条评论