CSS基础:盒子模型详解

news2024/11/19 5:56:31

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 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 岁独立买房。终身学习者,陪你一起成长,一起变富。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQLite的PRAGMA 声明(二十三)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite从出生到现在&#xff08;发布历史记录&#xff09;&#xff08;二十二&#xff09; 下一篇&#xff1a;用于 SQLite 的异步 I/O 模块&#xff08;二十四&#xff09; PRAGMA 语句是特定于 SQLite 的 SQL 扩…

功能测试前景揭秘:会被淘汰吗?

在当今快速发展的信息时代&#xff0c;软件已经成为我们工作、学习乃至生活中不可或缺的一部分。随着技术的不断进步和应用的广泛普及&#xff0c;软件测试作为保障软件质量和功能实现的关键步骤&#xff0c;其职业发展路径也受到了广泛的关注。特别是针对功能测试这一细分领域…

踏上R语言之旅:解锁数据世界的神秘密码(二)

R语言学习 文章目录 R语言学习1.数据的R语言表示2.多元数据的R语言调用3.多元数据的简单R语言分析 总结 1.数据的R语言表示 数据框&#xff08;data frame) R语言中用函数data.frame()生成数据框&#xff0c;其句法是&#xff1a; data.frame(data1,data2,…)&#xff0c;例如…

记录一个hive中因没启yarn导致的spark引擎跑insert语句的报错

【背景说明】 刚在hive中配置了Spark引擎&#xff0c;在进行Hive on Spark测试时报错&#xff0c; 报错截图如下&#xff1a; [atguiguhadoop102 conf]$ hive which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/mod…

【Linux】服务器时区 [ CST | UTC | GMT | RTC ]

目录 1. 硬件时间&#xff08;Real_TIME Clock [RTC time]&#xff09; 1.1 硬件时间简介 1.2 如何使用硬件时间 2. 系统时间&#xff08;UTC时间&#xff09;&#xff08;Universal time&#xff09; 2.1 系统时间简介 2.2 UTC时间 3. 本地时间&#xff08;Local time&…

webpack源码分析——enhanced-resolve库之getType、normalize、join和cachedJoin函数

一、PathType 路径类型 const PathType Object.freeze({Empty: 0, // 空Normal: 1, // 默认值Relative: 2, // 相对路径AbsoluteWin: 3, // win 下的绝对路径AbsolutePosix: 4, // posix 下的绝对路径Internal: 5 // enhanced-resolve 内部自定义的一种类型&#xff0c;具体是…

颠覆传统消费,走向可持续:每次购物都是循环的开始

亲爱的读者朋友们&#xff0c;大家好&#xff0c;我是微三云周丽。今天&#xff0c;我非常激动地想要向大家分享一种极具创新性和前瞻性的商业模式——循环购。这种模式将消费返利与积分返利理念相融合&#xff0c;为商家与消费者之间搭建了一座互动与共赢的桥梁&#xff0c;让…

安全开发实战(1)--Cdn

目录 安全开发专栏 CDN介绍 1.信息收集阶段 1.1判断CDN是否存在 1.1.1, One 1.1.2,Two(改进) 1.1.3,进行整合 增加输入功能 1.1.4 批量读取监测存储(进行测试) 问题1: 问题2: 解决方案: 1.1.4 基本编写完成 命令框中: cdn存在.txt 总结 这里我是根据整个渗透测…

【spring】springProperty 使用

springProperty 是一个在 Spring 框架中使用的SpEL&#xff08;Spring Expression Language&#xff09;表达式&#xff0c;它允许你在应用程序的配置中引用 Spring 应用程序上下文中的属性值。这个表达式通常用于从 Spring 的 Environment 对象中获取配置属性的值&#xff0c;…

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

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

HDLbits 刷题 -- Adder100

Create a 100-bit binary adder. The adder adds two 100-bit numbers and a carry-in to produce a 100-bit sum and carry out. 译&#xff1a; 创建一个100位二进制加法器。加法器将两个100位的数字和一个进位相加&#xff0c;产生一个100位的和并执行。 个人解法&#xf…

短视频素材哪里去找?推荐几个视频素材免费下载的网站

高质量的资源&#xff0c;会让你的视频创作更加生动和具有吸引力。下面我为你介绍世界各地的优质无水印视频素材网站&#xff0c;以拓宽你的创作视野&#xff0c;帮助你在这个视觉革命的时代中脱颖而出。 1. 蛙学府&#xff08;中国&#xff09; 提供各种类别的优质高清视频素…

【Linux C | 多线程编程】互斥量、信号量、条件变量对比总结

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a; 本文未经允许…

【UKE!】2024.4.19

2024.4.19 【你知道的都是真相。只可惜那些并不是真相的全部。】 Friday 三月十一 谷雨 <BGM “谷雨–音阙诗听”> AC :Answer Coarse,粗劣的答案 ​ CE :Compile Easily,轻松通过 ​ PC :Perfect Compile 完美的编译 ​ WA :Wonderful Answer,好答案 ​ RE :Run Exce…

【Java开发指南 | 第十六篇】Java数组及Arrays类

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 数组数组特点创建数组处理数组多维数组Arrays类 数组 Java中的数组是一种用来存储固定大小的相同类型元素的数据结构。 数组特点 数组具有以下特点&#xff1a; 1、固定大小: 一旦数组被创建&#xff0c;其…

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

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

vue3 echarts 图表主题切换

我主要是用了localStorage和composable来实现的。 先创建composable文件夹存储composable的操作方法&#xff1b; 在App.vue文件里面&#xff0c;先将主题数据存储在localStorage里面&#xff1b; 主题切换 图表theme包更换 为什么要用composable呢&#xff1f; 单纯的使用…

CS61B sp21fall Project02 Gitlet

Project02 Gitlet 一、项目简介二、Git和Gitlet2.1 Git简介2.2 Gitlet简介 三、框架设计3.1 Blobs3.2 Trees3.3 Commits 四、.Gitlet文件结构设计4.1 .git文件架构4.1.1 重点介绍index&#xff08;VSCode中无法查看&#xff0c;会乱码&#xff09;objects&#xff08;VSCode中无…

【汇编语言】初识汇编

【汇编语言】初识汇编 文章目录 【汇编语言】初识汇编前言由机器语言到汇编语言机器语言与机器指令汇编语言与汇编指令汇编语言程序示例 计算机组成指令和数据的表示计算机的存储单元计算机的总线 内存读写与地址空间CPU对存储器的读写内存地址空间 总结 前言 为什么要学习汇编…

精通MongoDB聚合操作API:深入探索高级技巧与实践

MongoDB 聚合操作API提供了强大的数据处理能力&#xff0c;能够对数据进行筛选、变换、分组、统计等复杂操作。本文介绍了MongoDB的基本用法和高级用法&#xff0c;高级用法涵盖了setWindowFields、merge、facet、expr、accumulator窗口函数、结果合并、多面聚合、查询表达式在…