首页 > 其他分享 >零基础学前端之CSS盒模型

零基础学前端之CSS盒模型

时间:2023-01-29 18:02:14浏览次数:34  
标签:box 盒子 样式 前端 元素 20px box1 模型 CSS

在网站布局中,我们会使用各种各样的元素,这些元素本质上就是一个个小的容器,也称之为盒子,盒子里面可以放置文本,图片,或者其他元素。

什么是 CSS 盒模型呢?

CSS 盒模型本质上是一个包裹每个 HTML 元素的盒子,包含 margin、border、padding 和 content 四个部分。

浏览器就是通过盒模型,来计算元素在网页中占据的空间大小的。

零基础学前端之CSS盒模型_CSS

前面我们介绍过这些盒模型的要素:Content,表示盒子的内容,包含文本、图像等等。Padding,表示填充内容周围的一个区域,它是透明的。Border,表示围绕填充和内容的边框。Margin,表示边框以外的区域,它也是透明的。

我们来举个例子。

创建一个 019-css-box-model 文件夹,在文件夹里创建一个 box-model-1.html 文件和一个box-model-1.css 文件。

构建 html 基础代码,引入样式文件。为了便于比较效果,我们定义两个 div 元素,添加不同的类名,补全文本。

HTML
<div class="box1">
盒子模型组成部分:内容,内边距,边框,外边距
</div>
<div class="box2">
盒子模型组成部分:内容,内边距,边框,外边距
</div>
CSS
* {
margin:0;
padding:0
}
div {
width: 200px;
height: 200px;
}
.box1 {
background-color: orange;
border:20px solid gray;
padding:20px;
margin:20px;
}
.box2 {
background-color: yellow;
}

打开 CSS 文件,定义通配符选择器,声明样式 margin: 0,padding: 0。取消所有元素默认的边距和填充样式。

定义 div 选择器,声明样式:width: 200px,height: 200px。为两个 div 元素添加宽度和高度。

定义 .box1 选择器,声明样式:background-color: orange。

定义 .box2 选择器,声明样式:background-color: yellow。

在浏览器里预览效果,两个有背景颜色的盒子就做好了。

给 box1 添加样式:border: 20px solid gray,为橙色的盒子增加一个边框。

对比黄色的盒子,橙色盒子总宽度增加了 40px,总高度也增加了 40px。

继续给 box1 添加样式:padding: 20px。

此时橙色的盒子继续变大。对比黄色的盒子,宽度和高度又增加了40px。

继续给 box1 添加样式:margin: 20px。

这时我们发现,因为添加了外边距,橙色盒子的位置发生了偏移。

通过这个例子我们发现,给元素添加内填充、边框以及外边距之后,盒子会变大并发生位置变化。

那么,如何在所有浏览器中正确设置一个元素的宽度和高度呢?这对于精确的页面布局,意义重大!

计算盒子的宽度和高度,请牢记这两个公式:

盒子的宽度 = 内容宽度 + 左填充 + 右填充 + 左边框 + 右边框 + 左边距 + 右边距

盒子的高度 = 内容高度 + 上填充 + 下填充 + 上边框 + 下边框 + 上边距 + 下边距

再次强调:当应用 CSS 设置一个元素的 width 和 height 属性时,只是设置了元素内容区域的宽度和高度。要计算一个元素的完整尺寸,必须要加上填充、边框和边距。

我们将上面这种计算元素大小的盒模型,称作标准盒模型。

那能不能给元素设置了 margin 和 padding 属性后,元素本身的宽高就固定为设置的这个值呢?这就要应用另外一种盒模型,叫做怪异盒模型。

给元素声明 box-sizing 属性,取值为 border-box,这个元素就按照怪异盒模型来呈现大小了。

我们先来做个例子。

在 019-css-box-model 文件夹下,创建一个 box-model-2.html 文件和一个box-model-2.css 文件。

构建 html 基础代码,引入样式文件。为了便于比较效果,我们还是定义两个 div 元素,添加不同的类名,补全文本。

HTML
<div class="box1">
我是一个div,用来演示怪异盒子
</div>
<div class="box2">
我是一个div,用来进行做比较
</div>
CSS
*{
margin:0;padding:0
}
div{
width: 200px;
height:200px;
}
.box1{
background-color: orange;
box-sizing: border-box;
border:20px solid gray;
padding:20px;
margin:20px
}
.box2{
background-color: yellow;
}

打开 CSS 文件,定义通配符选择器,声明样式 margin: 0,padding:0。取消所有元素默认的边距和填充样式。

定义 div 选择器:声明样式:width: 200px,height: 200px。

定义 .box1 选择器,声明样式:background-color: orange。

定义 .box2 选择器,声明样式:background-color: yellow。

在浏览器里预览效果,两个有背景颜色的盒子就做好了。

给 box1 添加样式:box-sizing: border-box,触发怪异盒模型。继续添加样式 border: 20px solid gray,padding:20px。

可以看到,box1 添加了边框和内边距,但是大小并没有改变,宽高仍然是200px。显而易见,内容的大小被压缩了。

继续为 box1 添加样式:margin: 20px。

大家可以猜一下,外边距会不会继续压缩内容呢?

仔细观察一下,box1 位置发生了偏移,观察一下容器的大小,并没有变化。

所以,怪异盒模型宽度和高度的计算公式为:

盒子的宽度 = CSS样式设置的 width 值 + 左边距 + 右边距

盒子的高度 = CSS样式设置的 height 值 + 左边距 + 右边距

实际上,box-sizing 属性还有一个值: content-box,就是用来触发元素的标准盒模型。这也是元素盒模型的默认值,如果没有给元素设置 box-sizing 属性,容器的大小就按照标准盒模型来计算。

回到样式代码,将 box1 的 box-sizing 属性值修改为 content-box。

我们发现,容器总宽高变为了 320px。

注释掉box-sizing: content-box,容器的总宽高仍然是 320px。

零基础学前端之CSS盒模型_CSS_02

HTML
<!--回答问题: -->
<div class='box'></div>
<style>
div {
width:100px;
height:100px;
background-color:orange;
box-sizing:content-box;
border:10px solid gray;
}
.box {
width:200px;
padding:200px;
border-top:10px solid yellow;
margin:20px 30px;
}
</style>

标签:box,盒子,样式,前端,元素,20px,box1,模型,CSS
From: https://blog.51cto.com/u_14573321/6025897

相关文章

  • 零基础学前端之CSS填充和宽高
    这节课,我们学习CSS填充属性和CSS宽度与高度属性。还是看这个例子,每个区块除了设置外边距,还有内容周围的空间以及内容的宽高设置。CSS 填充属性用于在一个元素的内容周......
  • 前端生产id,uuid
    exportconstuuid=()=>{consttemp_url=URL.createObjectURL(newBlob())constuuid=temp_url.toString()URL.revokeObjectURL(temp_url)//释放这个ur......
  • 【面试题】做了一份前端面试复习计划,保熟~
    前言以前我看到面试贴就直接刷掉的,从不会多看一眼,直到去年9月份我开始准备面试时,才发现很多面试经验贴特别有用,看这些帖子(我不敢称之为文章,怕被杠)的过程中对我的复习思维......
  • 转 前端开发常用css知识点 认识字就能学。
    前端开发:CSS相关的核心知识点置顶三掌柜666已于2022-10-1101:20:38修改220收藏2文章标签:csshtml前端版权前言在前端开发过程中,有三驾马车组成:JS、CSS、HTML,JS负......
  • 转 [布局概念] 关于CSS-BFC深入理解 认识字就能学
    [布局概念]关于CSS-BFC深入理解barnett_y于 2018-01-2614:51:26 发布351 收藏 4分类专栏: 【HTML5+CSS3点滴知识】 【HTML5+CSS3点滴知识】......
  • 【KAWAKO】模型的压缩、扩张,计算模型的各种成本
    目录模型压缩量化稀疏化训练剪枝知识蒸馏自蒸馏集成使用精细化模型结构模型扩张深度宽度输入图像的分辨率深度、宽度、分辨率联合扩张使用精细化模型结构计算模型的各种成......
  • RabbitMQ之五种消息模型
     首先什么是MQMQ全称是MessageQueue,即消息对列!消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生......
  • CSS笔记
    选择器基础选择器基础选择器由单个选择器组成,基础选择器又包括标签选择器、类选择器、id选择器和通配符选择器标签选择器,按照标签名称分类,例如:p类选择器,按照类名分......
  • 前端如何在上传图片实现图片预览
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title></title> </head> <body> <imgsrc=""alt=""> <inputtype="file"> </body> &l......
  • DataGear 制作基于Vue2、Element UI前端框架的数据可视化看板
    DataGear数据可视化看板内置了一些基本、简单的页面交互组件,当它们无法满足实际看板需求时,可以引入更流行和强大的前端框架。本文以Vue2、ElementUI前端框架为例,介绍如......