css盒子模型及其实战案例(上)

简介: 盒子模型是我们网页布局中很重要的一块内容,今天阿牛就来总结一部分内容,各位小伙伴认真看哦,干货满满!!!

什么是css中的盒子模型?

所谓盒子模型:就是把 HTML 页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边框、外边距、内边距、和实际内容。

image.png

image.png

image.png

image.png

image.png

image.png

<!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>
        table{
            width:500px;
            height: 300px;
            text-align: center;
        }
        table,
        td,th{
            border:1px solid skyblue;
            border-collapse: collapse;
        }
    </style>
</head>
<body>
    <table align="center" cellspacing="0">
        <thead>
            <tr>
                <th>姓名</th>
                <th>性别</th>
                <th>职业</th>
                <th>地址</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td rowspan="2">阿牛</td>
                <td>男</td>
                <td>学生</td>
                <td>冰岛</td>
            </tr>
            <tr>
                <td>wa</td>
                <td colspan="2">wa</td>
            </tr>
        </tbody>       
    </table>
</body>
</html>

image.png

注意:表格属性cellspacing="0"将单元格合并在一起,边框宽度并没有合并,所以边框看起来较粗,border-collapse:collapse;正好解决这一问题。

所以对于表格可以只用border-collapse:collapse;合并单元格。

同时注意:边框也会影响盒子大小,如果你需要宽高特定的盒子,则盒子的宽高属性是减去边框的像素的。例如一个宽高为200px,边框1px的盒子css应该是下面这样:


div{

        width: 198px;

        height: 198px;

        border: 1px solid pink;

     }


🍅padding(内边距)

设置边框与内容之间的距离

image.png

image.png

image.png

<!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>
        #mc{
            width: 300px;
            height: 100px;
            background-color: purple;
        }
        #mc p{
            /* 当前块级标签不指定宽高时,padding不会撑大盒子 */
            padding: 30px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div id="mc">
        <p>牛啊啊啊啊啊啊啊啊啊啊啊啊啊 </p>
    </div>
</body>
</html>  

image.png

<!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>
        .nav{
            height: 41px;
            background-color: #fcfcfc;
            border-top: 3px solid #ff8500;
            border-bottom: 1px solid #edeef0;
            line-height: 41px;
        }
        .nav>a{
            display: inline-block;
            height:41px;
            padding: 0 20px;/*盒子未指定宽度,则padding不会撑开盒子宽度大小*/
            text-decoration: none;
            font-size: 12px;
            color:#4c4c4c;
        }
        .nav>a:hover{
            background-color: #eee;
            color: #ff8500;
        }
    </style>
</head>
<body>
    <div class="nav">
        <a href="">新浪导航</a>
        <a href="">手机新浪网</a>
        <a href="">移动客户端</a>
        <a href="">微博</a>
        <a href="">三个字</a>
    </div>
</body>
</html>  

image.png

image.png

<!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>
        div{
            width: 200px;
            height: 200px;
            margin:100px auto;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="demo1"></div>
</body>
</html>

image.png

<!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>
        .demo1{
            width: 200px;
            height: 200px;
            margin:100px auto;
            background-color: pink;
        }
        .demo2{
            width: 200px;
            height: 200px;
            margin:100px auto;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="demo1"></div>
    <div class="demo2"></div>
</body>
</html>

image.png

这里按代码的理论,两个盒子之间应该有200px距离,而事实却只有100px,

这就是margin定义块元素的垂直外边距时,可能会出现外边距的合并。

🥭嵌套块元素垂直外边距的坍塌

<!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>
    /* 嵌套块元素垂直外边距的坍塌  */
         .ko{
            width: 400px;
            height: 400px;
            background-color: royalblue;
            margin-top: 50px;
            /* border: 1px solid transparent; 法一 */
            /* padding: 1px;  法二 */
            /* overflow: hidden;  法三 */
        }
        .ks{
            width: 100px;
            height: 100px;
            /*margin-top: 100px;*/
            background-color: salmon;
        }
    </style>
</head>
<body>
    <div class="ko">
        <div class="ks"></div>
    </div>
</body>
</html>

image.png

image.png

image.png

image.pngimage.png

<!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>
        /* 去掉内外边距 */
        *{
            padding:0;
            margin:0;
        }
        .demo{
            height: 415px;
            width:298px;
            margin: 100px auto;
            background-color: #fff;
        }
        .demo p{
            height:70px;
            font-size: 14px;
            margin-top: 30px;
            padding: 0 28px;
        }
        .appraise{
            font-size: 12px;
            color: #b0b0b0;
            margin-top:20px;
            padding: 0 28px;
        }
        .info{
            font-size: 14px;
            margin-top: 15px;
            padding: 0 28px;
        }
        .info h4{
            display: inline-block;
            font-weight: 400; 
        }
        a{
            color:#333;
            text-decoration: none;
        }
        #first{
            color: #b0b0b0;
            margin: 0 6px 0 15px;
        }
        #last{
            color:#ff6700;    
        }
    </style>
</head>
<body>
    <div class="demo">
        <img src="123.jpg" style="width:100%" alt="">
        <p>哇,这张图片好美呀!我十分喜欢,这是我最喜欢的一张图啦!!!</p>
        <div class="appraise">来自于 1568749 的评价</div>
        <div class="info">
            <h4><a href="#">redmi airdots真无限蓝...</a></h4>
            <span id="first"> | </span>
            <span id="last">99.9元</span>
        </div>
    </div>
</body>
</html>

image.png


相关文章
|
前端开发
如何设置 CSS 盒子模型的边框样式?
CSS盒子模型的边框样式可以通过`border`属性设置,包括边框宽度、样式和颜色。例如:`border: 2px solid red;` 设置了2像素宽的红色实线边框。也可分别设置四边,如`border-top`、`border-right`等。
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
盒模型 盒模型: 所谓盒模型,就是浏览器为页面中的每个HTML元素生成的矩形盒子。 这些盒子们都要按照可见板式模型在页面上排布。 可见的板式模型主要由三个属性控制:position 属性、display 属性和 float属性。 position属性控制页面上元素间的位置关系。 display属性控制元素是堆叠、并排或者不在页面上显示。 float属性提供控制的方法,以便于把元素组成成多栏布局。 盒模型讲解: 在默认的情况下,每个盒子的边框是不可见的,背景也是透明的。 所以我们 不能直接的看到页面中的盒
152 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
上下文选择器(迭代选择器):基于祖先或同胞元素选择一个元素 ID和类选择器:基于id#和class的属性值进行选择元素。 属性选择器:基于属性的有无和特征进行选择。 ①上下文选择器: 上下文选择器的语法格式:标签1 标签2{属性:值;} //注意:组合选择器和上下文选择器的区别,组合选择器以逗号隔开, 上下文选择器以空格隔开 ②特殊的上下文选择器 子选择器> : 语法格式:标签1>标签2 解释说明:标签1和标签2
213 0
|
前端开发 开发者
css两种盒子模型
在CSS中,有两种盒子模型:标准盒子模型和IE盒子模型(怪异盒子模型)。标准盒子模型中,`width`和`height`仅指内容区的尺寸,总宽度和高度还包括内边距、边框和外边距。IE盒子模型中,`width`和`height`包括内容区、内边距和边框,总宽度和高度仅加外边距。通过`box-sizing`属性可以切换这两种模型,`box-sizing: content-box;`表示标准盒子模型,`box-sizing: border-box;`表示IE盒子模型。
|
前端开发 容器
给 CSS 盒子模型添加边框时,需要注意什么?
在给CSS盒子模型添加边框时,需要注意边框的宽度、样式和颜色,以及它如何影响盒子的总尺寸和布局。边框会增加盒子的总宽度和高度,可能需要调整其他属性以保持布局的完整性。
|
前端开发
CSS实现充电效果案例
CSS实现充电效果案例
346 1
|
前端开发
CSS属性:盒子模型
CSS属性:盒子模型
124 0
|
前端开发 JavaScript 开发者
掌握 CSS 弹性布局(Flexbox):构建复杂页面布局的高效秘籍与实战案例
CSS弹性布局(Flexbox)是现代网页设计中构建复杂页面布局的高效工具。本文将深入浅出地介绍Flexbox的核心概念、使用技巧及实际应用案例,帮助读者快速掌握这一强大布局方法。
|
前端开发
CSS 盒子模型
CSS 盒子模型
96 4
|
前端开发
彻底搞懂css盒子模型
【10月更文挑战第1天】
370 9