【前端】深入理解CSS盒子模型与浮动

目录

  • 一、前言
  • 二、盒子模型
    • 1、盒子模型组成
      • 1.1、border边框
        • 1.1.1、边框的三部分组成
        • 1.1.2、边框复合简写
        • 1.1.3、边框分开写
        • 1.1.4、表格的细线边框
      • 1.2、padding内边距
      • 1.3、margin外边距
        • 1.3.1、外边距水平居中
        • 1.3.2、外边距合并
        • 1.3.3、嵌套块元素垂直 外边距的塌陷
          • 1.3.3.1、解决方案
        • 1.3.4、清除内外边距
    • 2、圆角边框
    • 3、盒子阴影
    • 4、文字阴影
  • 三、CSS浮动
    • 1、浮动
      • 1.1、标准流(普通流/文档流)
      • 1.2、浮动特性
    • 2、清除浮动
  • 四、总结

一、前言

页面中的元素都是由盒子构成的,盒子里面装的就是元素的内容。盒子的从内到外分别是内容(content),内边距(padding),边框(border),外边距(margin),这些属性也是我们常用的属性。我们F12打开开发者工具选中页面的元素就能很清晰的看到对应的属性及属性值
在这里插入图片描述

二、盒子模型

1、盒子模型组成

  • border边框
  • content内容
  • padding内边距:文字与盒子的边框之间的距离
  • margin外边距:控制一个盒子和另一个盒子之间的距离
    在这里插入图片描述
    所谓盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
    CSS盒子模型本质上是一个盒子,封装的HTML元素,包括:边框、外边距、内边距、实际内容
    在这里插入图片描述

1.1、border边框

border可以设置元素的边框

在这里插入图片描述

1.1.1、边框的三部分组成

  • 边框宽度(粗细,单位是px):border-width
  • 边框样式:border-style
  • 边框颜色:border-color
/* 边框高度 */
border-width: 5px;/* 边框样式 solid实线 */
border-style: solid;/* 边框样式 dashed虚线 */
border-style: dashed;/* 边框样式 dotted点线 */
border-style: dotted;/* 边框颜色 */
border-color: red;/* transparent透明色 */
border-color: transparent;

在这里插入图片描述

1.1.2、边框复合简写

/* 边框的复合简写 没有顺序*/
border: 5px solid red

1.1.3、边框分开写

/* 边框分开写*/
border-top: 5px solid red;
border-bottom: 5px solid blue;
border-left: 5px solid pink;
border-right: 5px solid purple;

在这里插入图片描述

1.1.4、表格的细线边框

border-collapse属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框

/* 合并相邻的边框 表示相邻边框合并在一起 */
border-collapse: collapse;

在这里插入图片描述

1.2、padding内边距

padding属性用于设置内边距,即边框与内容之间的距离
在这里插入图片描述padding属性(简写属性)可以有一到四个值
在这里插入图片描述

1.3、margin外边距

margin属性用于设置外边距,即控制盒子和盒子之间的距离
在这里插入图片描述

1.3.1、外边距水平居中

外边距可以让块级盒子水平居中,需满足两个条件:

  1. 盒子必须指定了宽度(width)
  2. 盒子左右的外边距都设置为auto
元素/.类{
width: 20px;
margin: 0 auto;
}

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

1.3.2、外边距合并

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

1.3.3、嵌套块元素垂直 外边距的塌陷

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

在这里插入图片描述

1.3.3.1、解决方案
  1. 可以为父元素定义上边框
/* 设置边框为1px 实线 透明色 */
border: 1px solid transparent
  1. 可以为父元素定义上内边距
/* 设置内边距为1px */
padding: 1px
  1. 可以为父元素添加overflow: hidden

1.3.4、清除内外边距

* {//清除内边距padding: 0//清除外边距margin: 0
}

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

2、圆角边框

border-radius属性用于设置元素的外边框圆角

border-radius: 长度px/%;

在这里插入图片描述

3、盒子阴影

box-shadow属性为盒子添加阴影

box-shadow: h-shadow v-shadow blur spread color inset
box-shadow: 10px 10px 10px 10px rgba(0,0,0,0.3);

在这里插入图片描述
注意
1. 默认的是外阴影(outset),但是不可以写这个单词,否则导致阴影无效
2. 盒子阴影不占用空间,不会影响其他盒子排列
3. 必须使用复合写法,单独写不生效

4、文字阴影

text-shadow属性为文字添加阴影

text-shadow: h-shadow v-shadow blur color
text-shadow: 3px 3px 2px rgba(0,0,0,0.3);

在这里插入图片描述

三、CSS浮动

1、浮动

  1. 元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。
  2. 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
  3. 浮动元素之后的元素将围绕它。
  4. 浮动元素之前的元素将不会受到影响。

1.1、标准流(普通流/文档流)

在这里插入图片描述

1.2、浮动特性

  1. 脱离标准普通流的控制(浮)移动到指定位置(动),称之为脱标
  2. 浮动的盒子不再保留原先的位置

2、清除浮动

在这里插入图片描述
在这里插入图片描述

四、总结

通过本文的介绍,读者对CSS盒子模型和浮动有了更深入的理解。掌握了这两个概念后,读者可以更灵活地进行页面布局和设计,提升网页的用户体验和可维护性。同时,了解了盒子模型和浮动的兼容性问题和解决方案,读者可以更好地应对不同浏览器的差异,提高开发效率。希望本文能够帮助读者在前端开发中更好地运用CSS盒子模型和浮动技术。

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

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

相关文章

浅谈Spark的RDD、部署模式

一、RDD Spark RDD(弹性分布式数据集),弹性是指Spark可以通过重新计算来自动重建丢失的分区。 从本质上讲,RDD 是数据元素的不可变分布式集合,跨集群中的节点进行分区,可以与提供转换和操作的低级 API 并行…

滑动验证组件---设置movable-view组件的x属性在微信小程序端失效的问题

场景 采用uniapp的movable-view组件实现滑动验证组件。 流程 滑块未滑到最右端时,回弹到原点滑块滑到最右端时,则显示滑动结束,不可再滑动 问题 频繁设置uniapp的movable-view组件的x属性,在H5端正常,但在微信小程…

微调llama2模型教程:创建自己的Python代码生成器

本文将演示如何使用PEFT、QLoRa和Huggingface对新的lama-2进行微调,生成自己的代码生成器。所以本文将重点展示如何定制自己的llama2,进行快速训练,以完成特定任务。 一些知识点 llama2相比于前一代,令牌数量增加了40%&#xff0…

SpringBoot整合MyBatis

星光下的赶路人star的个人主页 碰到好的欢喜的东西,总是要留得一份清淡余地,才会有中正的缘分 文章目录 1、业务开发1.1 前端页面1.2 MVC1.3Bean1.4 Dao(Mapper)1.5 Service1.6 Controller 2、整合MyBatis2.1 依赖整合2.2 配置整合…

CentOS7安装jq命令

1. 安装依赖 yum install gmp-devel mpfr-devel libmpc-devel -y2. 安装gcc 2.1 离线环境 wget https://ftp.gnu.org/gnu/gcc/gcc-10.3.0/gcc-10.3.0.tar.gz tar -xzf gcc-10.3.0.tar.gz编译安装 yum -y install gcc c --skip-broken./configure --disable-multilib --enab…

linux文本三剑客

linux文本三剑客 1、grep2、sed 1、grep 过滤 参数用法作用-igrep -i STRING xxx.txt从xxx.txt文件查找不区分大小写STRING-wgrep -w STRING xxx.txt精确匹配STRING-egrep -e STRING1 -e STRING2 xxx.txt查找多个STRING行-ngrep -n STRING xxx.txt查看STRING 在第几行-vgrep …

运算放大器发展史

在内部集成了一个补偿电容 MPS公司OP07推出后,大受欢迎。各家厂商都推出了自己的 这4款都是可以替换的

蓝蓝设计ui设计公司作品--泛亚高科-光伏电站控制系统界面设计

泛亚高科(北京)科技有限公司(以下简称“泛亚高科”),一个以实时监控、高精度数值计算为基础的科技公司, 自成立以来,组成了以博士、硕士为核心的技术团队,整合了华北电力大学等高校资源,凭借在电…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 四)

Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化 上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开发中,应用会根据开发需要,封装自己的数据模型。对于多层嵌套的情况,比如二维数组,或者数…

ROS通信机制之话题(Topics)的发布与订阅以及自定义消息的实现

我们知道在ROS中,由很多互不相干的节点组成了一个复杂的系统,单个的节点看起来是没起什么作用,但是节点之间进行了通信之后,相互之间能够交互信息和数据的时候,就变得很有意思了。 节点之间进行通信的一个常用方法就是…

同款爱心Python代码版来了

同款爱心就是一个动态的♥型效果,主要 Python 代码实现如下: def __init__(self, generate_frame20): # 原始爱心坐标集合 self._points set() # 边缘扩散效果点坐标集合 self._edge_diffusion_points set() # 中心扩散效果点坐标集合 self._cent…

SpringIoC基于注解配置

目录 一、Bean注解标记和扫描 (IoC) 二、组件(Bean)作用域和周期方法注解 三、Bean属性赋值:引用类型自动装配 (DI) 四、Bean属性赋值:基本类型属性赋值 (DI) 一、Bean注解标记和扫描 (IoC) 一、注解方式介绍 1.注解介绍 和…