盒子模型-详解

一、盒子模型组成

所谓盒子模型:就是把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.hqwc.cn/news/172017.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一个错误

通过Resource注解,将IStateHandler接口的实现类 StateHandlerImpl注入进来 Resource private IStateHandler stateHandler;Resource注解默认按照名称进行装配,这里抛出异常是因为IStateHandler和StateHandlerImpl都被 Spring 容器管理,在进行…

嵌入式工作岗位未来会不会越来越少?

今日话题,嵌入式工作岗位未来会不会越来越少?未来的嵌入式岗位机会将会逐渐增多,因为嵌入式技术是万物互联的基础,从智能手表到智能汽车,嵌入式都扮演着关键角色。虽然相比计算机科学CS,嵌入式领域的天花板…

List中的迭代器实现【C++】

List中的迭代器实现【C】 一. list的结构二. 迭代器的区别三. 迭代器的实现i. 类的设计ii. 重载iii. !重载iiii. begin()iiiii. end()iiiii. operator* 四.测试五. const迭代器的实现i. 实现ii 优化实现 六. 整体代码 一. list的结构 其实按照习惯来说,应该要专门出…

初识RabbitMQ - 安装 - 搭建基础环境

RabbitMQ 各个名词介绍 Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当…

OpenAI调查ChatGPT故障;向量搜索的优势与局限

🦉 AI新闻 🚀 OpenAI调查ChatGPT故障,发布新AI产品GPTs和GPT-4 Turbo 摘要:OpenAI的ChatGPT和其他服务出现故障,经过调查后发现是由于DDoS攻击导致的异常流量模式。OpenAI在首届开发者大会上发布了新的AI产品GPTs&am…

【Java】集合(一)单列集合List

1.集合 可以动态保存任意多个对象,并提供了一系列的操作对象的方法:add、remove、set、get等。 2.集合框架体系 分为两大类: 单列集合和双列集合 3.List接口基本介绍 List接口是Collection接口的子接口 List集合类中元素有序&#xff0…

大数据治理——为业务提供持续的、可度量的价值(一)

目录 大数据治理——为业务提供持续的、可度量的价值... 1 概述... 2 大数据治理系列... 2 第一部分:大数据治理统一流程模型概述和明确元数据管理策略... 2 第二部分:元数据集成体系结构... 15 第三部分:实施元数据管理... 25 第四部…

Springboot+Dubbo+Nacos 集成 Sentinel(入门)

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 官网 1.版本选择 参考 SpringClou…

3D模型人物换装系统二(优化材质球合批降低DrawCall)

3D模型人物换装系统 介绍原理合批材质对比没有合批材质核心代码完整代码修改总结 介绍 本文使用2018.4.4和2020.3.26进行的测试 本文没有考虑法线贴图合并的问题,因为生成法线贴图有点问题,放在下一篇文章解决在进行优化 如果这里不太明白换装的流程可以…

腾讯云服务器如何登陆宝塔

腾讯云服务器如何登陆宝塔面板 1.登录腾讯云控制台,找到对应的服务器,设置实例密码 “重置密码” 设置自己的实例密码 2.查看更多,登录账号 3.查看宝塔面板原始账号密码 !!注意:记得防火墙提前开放 88…

httpRequest库代码示例

python # 首先导入所需的库 library(httpRequest) # 设置主机名和端口号 proxy_host <- proxy_port <- # 使用httpRequest库的get函数下载图片 response <- httpRequest(", proxyHost proxy_host, proxyPort proxy_port) # 确保请求成功 if (response$sta…

GPT 写作与改编

GPT 写作与改编 文商科GPT 写作收益 改编技巧【改编一段话】【改编评价】【意识预设】落差&#xff0c;让顾客看到就感性和冲动害怕&#xff0c;让顾客看到就想买和拥有画面&#xff0c;切换空间&#xff0c;瞬间代入&#xff0c;勾人魂魄对比&#xff0c;设置参考物&#xff0…