盒子模型-详解

news2024/11/20 4:23:26

一、盒子模型组成

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

margin:外边距 用于控制盒子与盒子之间的距离

border:边框 盒子的边框

padding:内边距 用于控制内容与边框之间的距离

content:内容

二、边框

2.1 边框的复合写法

border: 1px solid red; 没有顺序

2.1.1 边框的分开写法:

/*上边框 边框宽度为5px 实线 粉色*/
border-top: 5px solid pink;
/*下边框 边框宽度为10px 虚线 紫色*/
border-bottom: 10px dashed purple;

2.2 案例

请给一个200*200的盒子,设置上边框为红色,其余边框为蓝色。

div{
    width: 200px;
    height: 200px;
    border-top: 1px solid red;
    border-bottom: 1px solid blue;
    border-left: 1px solid blue;
    border-right: 1px solid blue;
}

利用层叠性

div{
    width: 200px;
    height: 200px;
    border: 1px solid blue;
    /* 层叠性: 就近原则,标签会选离它最近的一个样式 */
    border-top: 1px solid red;
}

三.内边距

padding属性用于设置内边距,即边框与内容之间的距离。

属性作用
padding-left左内边距
padding-right右内边距
padding-top上内边距
padding-bottom下内边距

3.1 padding复合性写法

值的个数表达意思
padding: 5px1个值,代表上下左右都为5px
padding: 5px 10px2个值,代表上下5px,左右10px
padding: 5px 10px 20px3个值,上5px,左右10px,下20px
padding: 5px 10px 20px 30px4个值,上5px,右10px,下20px,左30px

3.2注意

当我们给盒子指定padding值之后,会发生2件事情:

1.内容和边框有了距离,添加了内边距。

2.padding会撑大盒子的大小。即:如果盒子已经添加了height\width属性后,再指定内边框会撑大盒子。(如果盒子沒有添加height\width則不會撑大盒子)

解决方案:

让width\height减去多出来的内边距大小即可。

 四.外边距

 margin属性用于设置外边距,即控制盒子与盒子之间的距离。

属性作用
margin-left左外边距
margin-right右外边距
margin-top上外边距
margin-bottom下外边距

4.1 margin复合性写法

值的个数表达意思
margin: 5px1个值,代表上下左右都为5px
margin: 5px 10px2个值,代表上下5px,左右10px
margin: 5px 10px 20px3个值,上5px,左右10px,下20px
margin: 5px 10px 20px 30px4个值,上5px,右10px,下20px,左30px

4.2外边距典型应用 

外边距可以让盒子水平居中,但是必须要满足两个条件:

1.盒子必须指定了宽度(width)。

2.盒子的左右外边距都设置为auto。

常见的写法实现盒子水平居中:

  • margin-left:auto;margin-right:auto;
  • margin:auto;
  • margin:0 auto;

注意:

以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加text-align:center即可。

4.3 外边距合并

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

1.相邻块元素垂直外边距的合并

当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和。而是取两个值中的较大者,这种现象被称为相邻块元素垂直外边距的合并。

解决方案:

尽量只给一个盒子添加margin值。

2.嵌套块元素垂直外边距的塌陷 

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大外边距值(即会发现子元素的外边距没有效果。)

解决方案 
  1. 可以为父元素定义边框\上边框。
  2. 可以为父元素定义上内边距
  3. 可以为父元素添加overflow:hidden 

五.清除内外边距

 网页元素很多都带有默认的内外边距,而且不同的浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。

/* 通配符选择器 */
* {
  padding: 0; /* 清除内边距 */
  margin: 0;  /* 清除外边距 */
}

注意:

行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内块元素就可以了。

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

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

相关文章

【ROS导航Navigation】一 | 概述

目录 致谢:ROS赵虚左老师 一、【概述】二狗子找大水法 Navigation全图 二、【SLAM】即时定位与地图构建 三、【AMCL】自适应蒙特卡洛定位 四、【Move_base】路径规划 五、【cmd_vel】运动控制 六、环境感知 致谢:ROS赵虚左老师 Introduction A…

多行业用户齐聚,2023 IoTDB 用户大会详细议程更新!

上周我们官宣了 2023 IoTDB 用户大会举办的消息,获得了多方小伙伴们积极的响应,作为第一次线下大会,我们已经开始期待与大家线下相见! 为了回应大家对于大会内容的期待,我们火速把更加详细的议程“搬运”来啦~ 20 位大…

【亚马逊云科技】使用Amazon Lightsail快速建站

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

Webpack Bundle Analyzer包分析器

当我们需要分析打包文件dist里哪些资源可以进一步优化时,就可以使用包分析器插件webpack-bundle-analyzer。NPM上的介绍是使用交互式可缩放树图可视化 webpack 输出文件的大小。 我的是vue2项目。 1、webpack-bundle-analyzer插件的安装 $ npm install --save-dev…

Python数据容器(集合)

集合 1.集合的定义2.集合中常用操作4.常用功能总结5.集合的特点6.练习 思考? 我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为何要学新的集合类型呢? 通过特性分析 列表可以修改、支持重复元素且有序元组、字符串不可修…

Scala---方法与函数

一、Scala方法的定义 有参方法&无参方法 def fun (a: Int , b: Int) : Unit {println(ab) } fun(1,1)def fun1 (a: Int , b: Int) ab println(fun1(1,2)) 注意点: 方法定义语法 用def来定义可以定义传入的参数,要指定传入参数的类型方法可以写返…

【Java】线程的调度、生命周期及状态转换

🌺个人主页:Dawn黎明开始 🎀系列专栏:Java ⭐每日一句:夜色难免黑凉,前行必有曙光 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️ ​ 文章目录 一.&…

3.1 Linux 前置知识

1、硬件 我们知道,组成计算机的硬件主要有“主机”和“输入/输出设备”。 主机包括机箱、电源、主板、CPU(Central Processing Unit,中央处理器)、内存、显卡、声卡、网卡、 硬盘、光驱等。输入/输出设备包括显示器、键盘、鼠标…

王道数据结构课后代码题p40 6.有一个带头结点的单链表L,设计一个算法使其元素递增有序 (c语言代码实现)

这一题其实用到了直接插入排序的思想 视频讲解在这里哦:👇 p40 第6题 王道数据结构课后代码题 c语言代码实现_哔哩哔哩_bilibili 本题代码为 void paixu(linklist* L)//对单链表内的元素排序 {lnode* p (*L)->next;lnode* pre *L;lnode* r p-&…

「 电商API接口系列之淘宝API接口调用 」

API从技术角度来说就是应用程序编程接口。通过API我们可以直接获取一些我们需要的数据结果,而不需要自己编写相应的程序,有点类似模块化调用函数,大大加快了我们编程的速度。当然这个数据传输是需要网络的,所以一般API的形式看起来…

论文十问:ResNet(Deep Residual Learning for Image Recognition)

文章目录 1. 论文试图解决什么问题?2. 这是否是一个新的问题?3. 这篇文章要验证一个什么科学假设?4. 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?5. 论文中提到的解决方案之关键是什么?6. 论文中的实验是如何设计的?…

stable diffusion comfyui的api使用教程

一、为什么要使用comfyui的api?对比webui的api,它有什么好处? 1、自带队列 2、支持websocket 3、无需关心插件是否有开放api接口,只要插件在浏览器中可以正常使用,接口就一定可以使用 4、开发人员只需关心绘图流程的搭建 5、切换…

【LeetCode刷题笔记】二叉树(二)

257. 二叉树的所有路径 解题思路: 1. DFS 前序遍历 ,每次递归将 当前节点的拼接结果 传递到 下一层 中,如果当前节点是 叶子节点 ,就将 当前拼接结果 收集答案并返回。 注意:路径path结果可以使用 String 来拼接,这样可以避免回溯处理。

Git 本地库基本教程

目录 一. Git 概述 1.1 何为版本控制 1.2 为什么需要版本控制 1.3 版本控制工具 1.3.1 集中式版本控制工具 1.3.2 分布式版本控制系统 1.4 Git简介 1.5 Git工作机制 1.6 Git 和代码托管中心 1.6.1 局域网 1.6.2 互联网 二. Git 安装 三. Git…

SystemC 学习之与 System Verilog 的混合仿真(九)

1、下载 uvmc (uvm connect) https://download.csdn.net/download/yp18792574062/88529417?spm1001.2014.3001.5501 2、配置相关环境变量 export UVM_HOME${VCS_HOME}/etc/uvm export UVMC_HOME/home/yangpan/yangpan/uvmc/uvmc-2.3.1 然后执行 source ~/.zshrc 更新 3、…

让公有云服务“宁安如梦”的“定心丸”在哪里?

电视剧《宁安如梦》正在热播中,该剧讲述了主人公在经历人生的重大风险后,重获新生再活一遍,以确定性的方式抵御和化解原有的重大风险。然而,在现实的生活中,却没有这样的重来机会。 2023年11月13日,Gartne…

二、服务拆分及远程调用

目录 一、注意事项: 1.单一职责: 2.数据独立: 3.面向服务: 二、服务拆分例子: 三、远程调用例子: 微服务调用方式: 四、提供者与消费者 服务调用关系: 一、注意事项: 1.单一职责: 不同…

某建筑网页js逆向分析过程(有坑)

某建筑网页: 网站: import base64 # 解码 website base64.b64decode(aHR0cHM6Ly9qenNjLm1vaHVyZC5nb3YuY24vZGF0YS9jb21wYW55.encode(utf-8)) print(website)JSON.parse() ​ 当你有一个包含JSON字符串的变量时,你可以使用JSON.parse()将…

No209.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

19 - 如何用协程来优化多线程业务?

近几年,国内很多互联网公司开始使用或转型 Go 语言,其中一个很重要的原因就是 Go 语言优越的性能表现,而这个优势与 Go 实现的轻量级线程 Goroutines(协程 Coroutine)不无关系。那么 Go 协程的实现与 Java 线程的实现有…