CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)

2024-04-27 18:52

本文主要是介绍CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        前言:在网页制作的时候,我们需要将网页中的元素放在指定的位置,那么我们如何将元素放到指定的位置上呢?这时候我们就需要了解盒子模型。


✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

先让我们了解一下本片文章的大致内容:

    

目录

CSS 盒子模型(Box Model)

        (1)content区

补充:

        (2)padding区

        (3)border区

        (4)margin区

        【1】margin 塌陷

        【2】margin 合并


CSS 盒子模型(Box Model)

        盒子模型的简介:

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

大致了解了盒子模型的基本概念之后,让我们看一下盒子模型的基本组成:

盒子模型由一下四部分组成:

组成部分(图片):

对于盒子的总大小:盒子的大小 = content + 左右 padding + 左右 border 

而对于外边距margin,其不会影响盒子的大小,但会影响盒子的位置。

当我们想要查看一个元素的盒子模型,我们可以使用一下的操作:

右击想要查看的元素:

在开发者工具中:

这样我们就可以看到html中指定元素的盒子模型,这对我们之后对于网页的排版由重大的作用。

在了解了盒子模型的基本概念和盒子模型的基本概念之后,让我们深入讲解盒子模型的各个组成部分。

        (1)content区

content区的主要作用为:用于显示文本和图像,即元素中的内容。

在盒子模型中的位置:

content区可设置的属性:

CSS属性名功能属性值
width设置内容区域宽度长度
max-width设置内容区域的最大宽度长度
min-width设置内容区域的最小宽度长度
height设置内容区域的高度长度
max-height设置内容区域的最大高度长度
min-height设置内容区域的最小高度长度

先对width和height属性进行讲解:

例:

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><link rel="stylesheet" href="./2024.4.27.css">
</head>
<body><div>这是一段文字</div>
</body>
</html>

CSS代码:

/* 对div元素设置其content区的宽高 */
div {width: 500px;height: 300px;background-color: orange;
}

这样我们就了解了如何对内容区(content)设置其宽与高。

对于max-width和min-width(max-height和min-height同理),为如果视口(用户在网页上的可见区域)小于min-width设置的值,视口就会出现滑动条(如图):

而max-width用于设定元素的最大宽度:

CSS代码:

/* 对div元素设置其content区的最大宽度 */
div {max-width: 900px;height: 300px;background-color: orange;
}

不够就以视口大小为准:

足够就以设定最大值为准:

这样我们就了解了content区的常见属性。

注意:

        max-width 、min-width 一般不与 width 一起使用。
        max-height 、min-height 一般不与 height 一起使用。

补充:

1. 总宽度 = 父的content — 自身的左右margin 。
2. 内容区的宽度 = 父的content — 自身的左右margin — 自身的左右border — 自身的左右padding 。

        (2)padding区

padding区的主要作用为:清除内容周围的区域,并且内边距是透明的。

在盒子模型中的位置:

当我们设置了html中的元素的padding值之后:

CSS代码:(以上面的案例为例)

/* 对div元素设置其content区的宽高和padding区的大小 */
div {width: 900px;height: 300px;padding: 10px;background-color: orange;
}

当然padding区也有其相关的属性:

CSS 属性名功能属性值
padding-top设置上内边距长度
padding-right设置右内边距长度
padding-bottom设置下内边距长度
padding-left设置左内边距长度
padding复合属性长度,可以设置 1 ~ 4 个值

在上面的案例中我们就是使用了padding的复合属性设置了一圈的padding值(都设置为10px

而padding 复合属性的使用规则:

1. padding: 10px; 四个方向内边距都是 10px 。
2. padding: 10px 20px; 上10px ,左右20px 。(上下、左右)
3. padding: 10px 20px 30px; 上10px ,左右20px ,下30px 。(上、左右、下)
4. padding: 10px 20px 30px 40px; 上10px ,右20px ,下30px ,左40px 。(上、右、下、左)

注意点:

1. padding 的值不能为负数。
2. 行内元素 的 左右内边距是没问题的,上下内边距不能完美的设置。
3. 块级元素、行内块元素,四个方向内边距都可以完美设置。

这样我们就大致了解了盒子模型中padding的设置与作用。

        (3)border区

border区的主要作用为:设置围绕在内边距和内容外的边框。

在盒子模型中的位置:

其实该属性在------------------------------------------------------------------------------------------------------------->CSS常用属性之(列表、表格、鼠标)属性,(如果想知道CSS的列表、表格、鼠标相关的属性知识点,那么只看这一篇就足够了!)-CSDN博客

中的表格属性其他元素也可以使用的表格属性中已经详细讲解过,这里只是迅速过一下:

CSS属性名功能属性值
border-style设置边框线风格none : 默认值
solid : 实线
dashed : 虚线
dotted : 点线
double : 双实线
......
border-width设置边框线宽度长度
border-color设置边框线颜色颜色,默认黑色
border复合属性值没有顺序和数量要求。
border-left
border-left-style
border-left-width
border-left-color
border-right
border-right-style
border-right-width
border-right-color
border-top
border-top-style
border-top-width
border-top-color
border-bottom
border-bottom-style
border-bottom-width
border-bottom-color
分别设置各个方向的边框值没有顺序和数量要求。

补充:border-style 、border-width 、border-color 其实也是复合属性。

        (4)margin区

border区的主要作用为:用于清除边框外的区域,外边距是透明的。

在盒子模型中的位置:

margin的相关属性和padding类似,只不过margin是设置在border之外,而padding设置的为border之内。

margin的相关属性:

CSS属性名功能属性值
margin-left左外边距CSS 中的长度值
margin-right右外边距CSS 中的长度值
margin-top上外边距CSS 中的长度值
margin-bottom下外边距CSS 中的长度值
margin复合属性,可以写1~4 个值,规律同padding (顺时针)CSS 中的长度值

margin 注意事项:

        1. 子元素的margin ,是参考父元素的content 计算的。(因为是父亲的content 中承装着子元素)
        
2. 上margin 、左margin :影响自己的位置;下margin 、右margin :影响后面兄弟元素的位置。
        
3. 块级元素、行内块元素,均可以完美地设置四个方向的margin ;但行内元素,左右margin 可以完美设置,上下margin 设置无效。
        
4. margin 的值也可以是 auto ,如果给一个块级元素设置左右margin 都为 auto ,该块级元素会在父元素中水平居中。
        
5. margin 的值可以是负值。

在了解完margin之后,我们需要了解有关margin的两个特性:margin 塌陷和 margin 合并

        【1】margin 塌陷

那么什么是margin塌陷呢?

即第一个子元素的上margin 会作用在父元素上,最后一个子元素的下margin 会作用在父元素上。

例如:(没有设置margin之前)

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><link rel="stylesheet" href="./2024.4.27.css">
</head>
<body><div class="outer"><div class="inner">这是内部的div元素</div></div>
</body>
</html>

CSS代码:

.outer {width: 500px;height: 400px;background-color: orange;
}
.inner {width: 200px;height: 100px;background-color: green;
}

给内部元素设置margin-top属性:

CSS代码:

.outer {width: 500px;height: 400px;background-color: orange;
}
.inner {margin-top: 30px;width: 200px;height: 100px;background-color: green;
}

我们会发现,margin-top没有加到inner元素上,而是加到了outer元素(即其父元素)上,这就是margin塌陷,margin-bottom同理。

那么如何解决呢?

解决方案:

方案一: 给父元素设置不为 0 的padding 。
方案二: 给父元素设置宽度不为 0 的border 。
方案三:给父元素设置 css 样式 overflow:hidden

了解了margin塌陷之后我们在来讲解margin 合并。

        【2】margin 合并

什么是 margin 合并?

上面兄弟元素的下外边距和下面兄弟元素的上外边距会合并,取一个最大的值,而不是相加。

例如:(没有设置margin-top和margin-bottom之前)

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><link rel="stylesheet" href="./2024.4.27.css">
</head>
<body><div class="outer"><div class="inner1">这是内部的div元素</div><div class="inner2">这是内部的div元素</div></div>
</body>
</html>

CSS代码:

.outer {width: 500px;height: 400px;background-color: orange;
}
.inner1 {width: 200px;height: 100px;background-color: green;
}
.inner2 {width: 200px;height: 100px;background-color: red;
}

给内部元素设置margin-top和margin-botton属性之后:

CSS代码:

.outer {width: 500px;height: 400px;background-color: orange;
}
.inner1 {width: 200px;height: 100px;margin-bottom: 20px;background-color: green;
}
.inner2 {width: 200px;height: 100px;margin-top: 20px;background-color: red;
}

原本应该为40px,但是实际上就只有20px,这就是margin 合并。

那么如何解决 margin 塌陷问题呢?

无需解决,布局的时候上下的兄弟元素,只给一个设置上下外边距就可以了,一下就给40px即可。

这样盒子模型的大致内容我们就都了解完了!

想了解更多CSS知识---------------->CSS_秋刀鱼不做梦的博客-CSDN博客


以上就是本篇文章的大致内容~~~

这篇关于CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941265

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}