CSS基础:盒子模型详解

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。

云桃桃,大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集

271篇原创内容-gz.h

后台回复“前端工具”可获取开发工具,持续更新中

后台回复“前端基础题”可得到前端基础100题汇总,持续更新中

后台回复“前端电子书”可获取20+本精选电子书

前言

盒模型时,也叫"框模型",指的是 CSS 中元素的布局方式和尺寸计算规则。盒模型定义了一个元素在页面布局中所占的空间,包括了元素的内容、内边距、边框和外边距,没错,而这些,正是我们前几篇文所提到的。比如:

CSS 基础:border 的 3 个基础属性和简写方法

CSS基础:margin属性4种值类型,4个写法规则详解

CSS基础:最详细 padding的 4 种用法解析

CSS基础:width,height尺寸属性详解

理解盒模型对于前端开发者来说至关重要,它可以控制元素的尺寸和布局,美化页面样式,是实现各种复杂页面布局的基础。

那我们一起来看看吧。

CSS 盒模型

盒模型的主要组成部分包括以下几个方面:

  1. 内容区域(Content): 指的是元素内部的实际内容,比如文字、图片或其他嵌套的元素。内容区域的大小由元素的 width 和 height 属性决定。

  2. 内边距(Padding): 内边距是内容区域与边框之间的空间,用于控制元素内部内容与边框之间的距离。可以使用 padding 属性来设置内边距的大小,是透明的。

  3. 边框(Border): 边框是围绕在内容区域和内边距外部的线条,用于界定元素的边界。可以使用 border 属性来设置边框的样式、宽度和颜色。

  4. 外边距(Margin): 外边距是边框外部的空白区域,用于控制元素与其他元素之间的距离。可以使用 margin 属性来设置外边距的大小,是透明的。

如图所示:

图片

在 HTML 中,每个元素都具有一个盒模型,这个盒模型包括了内容区域、内边距、边框和外边距。当我们在页面上选中一个元素的盒模型任一部分时,会看到相应的盒模型边界,这有助于我们直观地了解元素在页面中的布局情况。

通过这种实践观察调试,即使新手可以更好地理解盒模型的概念,并在编写页面和排查问题时更加得心应手。所以,建议你可以多写多观察其构成,加深对盒模型的认识和掌握。

需要注意的是:背景(background)属性可以应用于整个盒模型,包括内容区域、内边距、边框和外边距。

CSS 重置

我们有没有发现一个问题?当写一个新页面的时候,在页面上始终无法从头写,而是有一些间距?那我们在 google 浏览器检查一下看下这个是什么,然后呢就发现,body 标签 的盒模型始终有个 margin:8px 的值?对吧,如下图。

图片

这些啊,是浏览器对元素的默认样式,像 bug 一样对吧。其实啊,不只是 body 标签,很多标签默认都有一些盒模型的值,那我们如果想要清除这些默认浏览器的样式,怎么做呢?

只需要在 CSS 的开头,加上这个:

* {
  margin: 0;
  padding: 0;
}

整体代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>boxModel</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <h1>大标题</h1>
    <h2>二标题</h2>
    <p>这是段落</p>
    <ul>
      <li>li-1</li>
      <li>li-2</li>
      <li>li-3</li>
    </ul>
  </body>
</html>

那效果就如下图了:

图片

这样,是不是就好了。

其实,重置 CSS 中的 margin 和 padding 为 0 是一种常见的做法,原因有很多,比如以下 4 点:

  1. 统一浏览器样式: 不只是谷歌,不同的浏览器(IE,360,火狐等)对元素的默认样式有所不同,特别是对于 margin 和 padding 的默认值可能存在差异。通过将 margin 和 padding 重置为 0,可以消除不同浏览器之间的差异,确保页面在各个浏览器中呈现一致的效果。

  2. 清除默认样式: 浏览器会为一些元素(如 <body><ul><li> 等)设置默认的 margin 和 padding,如果不进行重置,可能会导致页面样式不如预期。重置为 0 可以清除这些默认样式,从而更加灵活地自定义页面样式。

  3. 规范化布局: 重置 margin 和 padding 为 0 可以让页面布局更加规范化和可控。开发者可以根据实际需求,自行设置元素的 margin 和 padding,而不受浏览器默认样式的影响。

  4. 减少意外空白: 有时候元素之间的间距会受到 margin 和 padding 的影响,如果不加以控制,可能会出现意外的空白或布局错乱。将 margin 和 padding 设置为 0 可以避免这种情况的发生。

总的来说,重置 margin 和 padding 为 0 是一种良好的开发习惯,能够帮助开发者更好地控制页面布局和样式,提高开发效率和代码可维护性。在写 CSS 的时候,把这个规则,放在最前面就可以了。

计算元素的宽度和高度

要正确设置元素的宽度和高度,必须了解盒模型的工作原理,这样后续在网页实战时,才能更愉快地代码。

要理解的事,在设置元素的 width 和 height 属性时,应该只考虑内容区域的宽度和高度。要计算元素的整体大小,需要加上内边距、边框和外边距的值。

假设我们有一个<div>元素:

.box {
  width: 300px;
  padding: 20px;
  border: 2px solid black;
  margin: 10px;
}

我们来计算这个<div>元素的总宽度:

  • 宽度:300px

  • 左右内边距:20px + 20px = 40px

  • 左右边框:2px + 2px = 4px

  • 左右外边距:10px + 10px = 20px

总宽度计算:

300px(宽度) + 40px(左右内边距) + 4px(左右边框) + 20px(左右外边距) = 364px.

所以,这个<div>元素的总宽度是 364px。

ok,以上,希望你多多实践来理解,其实,很多知识点是在实践中会逐渐拨开迷雾的,更多前端系列内容可以go公众.h:云桃桃,本文完。

图片

推荐阅读:

高颜值登录页面第 2 波(CV即可,带动态背景!)

高颜值登录页面(一键复制)

作者介绍:

深耕互联网行业 9 年,在写作的程序媛。24 岁实现月入过万,26 岁独立买房。终身学习者,陪你一起成长,一起变富。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/560025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Kubernetes集群构建MongoDB

基于Kubernetes集群构建MongoDB 作者:行癫(盗版必究) 一:基础环境 1.Kubernetes集群正常运行 2.Harbor私有仓库正常运行 二:MongoDB项目部署 ​ MongoDB项目对应Kubernetes的yaml文件: --- apiVersion: v1 kind: Namespace metadata:name: m

揭开ChatGPT面纱(一):准备工作(搭建开发环境运行OpenAI Demo)

文章目录 序言&#xff1a;探索人工智能的新篇章一、搭建开发环境二、编写并运行demo1.代码2.解析3.执行结果 本博客的gitlab仓库&#xff1a;地址&#xff0c;本博客对应01文件夹。 序言&#xff1a;探索人工智能的新篇章 随着人工智能技术的飞速发展&#xff0c;ChatGPT作为…

ruoyi element-ui 实现拖拉调整图片顺序

ruoyi element-ui 实现拖拉调整图片顺序 安装sortablejs https://sortablejs.com/npm 安装sortablejs npm install sortablejs --save相关options var sortable new Sortable(el, {group: "name", // or { name: "...", pull: [true, false, clone, …

【大模型系列】大模型评价指标总结

文章目录 1 图生文 (Image-to-Text)1.1 BLEU&#xff1a;基于准确率&#xff0c;得分越高越好1.2 METEOR&#xff1a;基于准确率和召回率&#xff0c;得分越高越好1.3 ROUGE&#xff1a;得分越高越好1.4 CIDEr&#xff1a;得分越高越好1.5 SPICE&#xff1a;得分越高越好1.6 Hu…

【云计算】云数据中心网络(五):对等连接

《云网络》系列&#xff0c;共包含以下文章&#xff1a; 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络&#xff08;一&#xff09;&#xff1a;VPC云数据中心网络&#xff08;二&#xff09;&#xff1a;弹性公网 IP云数据中心网络&#xff08;三&#xff09;…

OpenHarmony网络通信-socket-io

简介 socket.io是一个在客户端和服务器之间实现低延迟、双向和基于事件的通信的库。建立在 WebSocket 协议之上&#xff0c;并提供额外的保证&#xff0c;例如回退到 HTTP 长轮询或自动重新连接。 效果展示 下载安装 ohpm install ohos/socketio OpenHarmony ohpm 环境配置等更…

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏

原始部落版本潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙小程序定制大逃杀游戏APP开发H5游戏 潮玩宇宙大逃杀小游戏模块成品源码&#xff0c;可嵌入任何平台系统&#xff0c;增加用户粘性&#xff0c;消除泡沫&#xff0c;短视频直播引流。 玩家选择一间房间躲避杀手…

Vue3+Spring Boot3实现跨域通信解决办法

Vue3Spring Boot3实现跨域通信解决办法 1 跨域是什么&#xff1f;2 何为同源呢?3 解决办法3.1 全局配置3.1.1 实现CorsFilter过滤器3.1.2 实现SpringMVC配置类3.1.3 创建CorsFilterFactory工厂类返回CorsFilter对象 3.2 局部跨域3.2.1 注解配置3.2.2 手动设置响应头(局部跨域)…

Python | Leetcode Python题解之第37题解数独

题目&#xff1a; 题解&#xff1a; class Solution:def solveSudoku(self, board: List[List[str]]) -> None:def dfs(pos: int):nonlocal validif pos len(spaces):valid Truereturni, j spaces[pos]for digit in range(9):if line[i][digit] column[j][digit] bloc…

类和对象【二】this指针,构造函数和成员初始化列表【超详细】

文章目录 this指针this指针的定义this指针的“工作”原理this指针的作用this指针的特点 构造函数构造函数的定义构造函数的作用构造函数的特点构造函数的调用方式括号法无参构造或者全缺省构造需要传参才能调用的构造函数 隐式类型转换法是只传一个参数就能调用的构造函数是要传…

发泡机液压站比例阀放大器

发泡机液压站是提供动力和压力以驱动发泡机工作的系统。 发泡机是一种用于制备聚氨酯发泡材料的设备&#xff0c;而液压站则扮演着为发泡机提供必要动力的角色。具体来看&#xff0c;液压站的主要组成包括&#xff1a; 液压油箱&#xff1a;存储液压油&#xff0c;为系统提供液…

11.接口自动化测试-Allure报告(2)

目录 1.如何同时执行多个测试文件2.Allure的不同层级应用Allure报告&#xff1a; 1.如何同时执行多个测试文件 &#xff08;1&#xff09;新建bat文件 &#xff08;2&#xff09;写命令 cd ./testCase pytest -s --alluredir ./report --clean-alluredir allure serve ./repo…

Unity之圆环slider

一、参考文章 Unity_圆环滑动条&#xff08;圆形、弧形滑动条&#xff09;_unity弧形滑动条-CSDN博客 此滑动条拖动超过360后继续往前滑动值会从0开始&#xff0c;正常我们超过360度时不可在滑动。 二、 超过360度不可滑动问题解决 参考HTML文章制作&#xff1a; https://www.c…

Java后端-文件上传大小限制解决

spring版本 2.5.4 报错如下&#xff1a;The field multipartFile exceeds its maximum permitted size of 1048576 bytes. 我上传的文件大小为2.5MB&#xff0c;如下图 原因&#xff1a;springboot默认的上传单个文件大小为1MB&#xff0c;而一次请求最大为10MB。 解决方案…

DFS专题:电话号码的字母组合

DFS专题&#xff1a;电话号码的字母组合 题目链接: 17.电话号码的字母组合 参考题解&#xff1a; 代码随想录 题目描述 代码思路 将数字到字母的映射用字符串数组表示出来。然后利用回溯算法&#xff0c;解决n个for循环的问题&#xff0c;枚举出每一种符合要求的情况。 代…

【Java探索之旅】用面向对象的思维构建程序世界

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、初识面向对象1.1 什么是面向对象&#xff1f;1.2 面向对象与面向过程 二、类的定义…

中颖51芯片学习7. ADC模数转换

中颖51芯片学习7. ADC模数转换 一、ADC工作原理简介1. 概念2. ADC实现方式3. 基准电压 二、中颖芯片ADC功能介绍1. 中颖芯片ADC特性2. ADC触发源&#xff08;1&#xff09;**软件触发**&#xff08;2&#xff09;**TIMER4定时器触发**&#xff08;3&#xff09;**外部中断2触发…

LLM推理加速,如何解决资源限制与效率挑战

©作者|Zane 来源|神州问学 LLM加速推理&#xff0c;GPU资源破局之道。 引言 大型语言模型&#xff08;LLM&#xff09;已经在多种领域得到应用&#xff0c;其重要性不言而喻。然而&#xff0c;随着这些模型变得越来越普遍&#xff0c;对GPU资源的需求也随之激增&#xff…

Github Actions实现CI/CD(golang项目)

Github Actions构建CI/CD&#xff08;golang项目&#xff09; 1 基础概念 1.1 Actions GitHub Actions允许构建一个完整的 CI/CD Pipeline&#xff0c;与 GitHub 生态系统深度集成&#xff0c;而无需使用 Travis CI 或者 Circle CI 等第三方服务&#xff0c;对于开源项目都是…

在IDEA中解决SSM项目修改图片不能回显问题

1.问题描述 图片成功上传之后&#xff0c;件夹中已经显示图片了&#xff0c;但是访问图片资源会出现404错误&#xff0c;再重新启动服务器之后&#xff0c;发现这个错误又消失了&#xff0c;图片又能正常显示&#xff0c;但是必须重启Tomcat才有效。 2.解决方法如下&#xff…