一起聊聊CSS浮动布局及文档流

本篇文章给大家带来了关于css中浮动布局以及文档流的相关知识,其中包括正常文档流以及脱离文档流,希望对大家有帮助。

一起聊聊CSS浮动布局及文档流

文档流简介

什么叫“文档流”?简单来说,就是指元素在页面中出现的先后顺序。可分为“正常文档流”和“脱离文档流”。

1、正常文档流

正常文档流,又称为“普通文档流”或“普通流”,也就是W3C标准所说的“normal flow”。正常文档流的简单定义是:“正常文档流,将一个页面从上到下分为一行一行的,其中块元素独占一行,相邻行内元素在每一行中按照从左到右排列直到该行排满。”即,正常文档流指的就是默认情况下页面元素的布局情况。

如p、p、hr都是块元素,因此独占一行。而span、i、img都是行内元素,因此如果两个行内元素相邻,就会位于同一行,并且从左到右排列。

立即学习“前端免费学习笔记(深入)”;

2、脱离文档流

脱离文档流,指的是脱离正常文档流。而想要改变正常文档流,可以使用两种方法:浮动和定位。

正常文档流效果:

                正常文档流            /* 定义父元素样式 */        .father{            width: 300px;            background-color: #0c6a9d;            border: 1px solid silver;        }        /* 定义子元素样式 */        .father p{            padding: 10px;            margin: 15px;            border: 2px dashed rebeccapurple;            background-color: #fcd568;        }        

box1

box2

box3

登录后复制

在这里插入图片描述
设置浮动后的效果:
当我们为第二、三个p元素设置左浮动时:正常文档流情况下,p是块元素,会独占一行。但是由于设置了浮动,第二、三个p元素却是并列一行,并且跑到父元素之外,跟正常文档流不一样。也就是说,设置浮动使得元素脱离了正常文档流。
在这里插入图片描述
设置定位后的效果:
当我们为第三个p元素设置绝对定位的时候:由于设置了定位,第三个p元素跑到父元素的上面去了。也就是说,设置了定位使得元素脱离了文档流。
在这里插入图片描述

浮动

在传统的印刷布局中,文本可以按照实际需要来围绕图片,我们一般把这种方式称为“文本环绕”。在前端开发中,使用了浮动的页面元素其实就像在印刷布局里被文字包围的图片一样。这样比喻,就很好理解了。浮动是CSS布局的最佳利器,我们可以通过浮动来灵活地定位页面元素,以达到布局网页的目的。例如我们可以通过设置float属性让元素向左浮动或者向右浮动,以便让周围的元素或文本环绕着这个元素。

float属性取值只两2个:
在这里插入图片描述
我们再次用到上文的例子:

                正常文档流            /* 定义父元素样式 */        .father{            width: 300px;            background-color: #0c6a9d;            border: 1px solid silver;        }        /* 定义子元素样式 */        .father p{            padding: 10px;            margin: 15px;            border: 2px dashed rebeccapurple;            background-color: #fcd568;        }        

box1

box2

登录后复制

在这里插入图片描述
接下来我们分别为box1添加左浮动,为box2添加右浮动:

.son1{float: left;}.son2{float: right;}

登录后复制

在这里插入图片描述

由上述例子可见浮动会影响周围元素,并且还会引发很多意想不到的问题。在CSS中,我们可以使用clear属性来清除浮动带来的影响。

clear属性取值如下:
在这里插入图片描述
在实际开发中,我们几乎不会使用“clear:left;”或“clear:right;”来单独清除左浮动或右浮动,往往都是直截了当地使用“clear:both;”来清除所有浮动。在上述例子的基础上我们对浮动进行清除:

                清除浮动            /* 定义父元素样式 */        .father{            width: 300px;            background-color: #0c6a9d;            border: 1px solid silver;        }        /* 定义子元素样式 */        .father p{            padding: 10px;            margin: 15px;            border: 2px dashed rebeccapurple;            background-color: #fcd568;        }        .son1{float: left;}        .son2{float: right;}        .son3{clear: both; display: block;}        

box1

box2

登录后复制

在这里插入图片描述
我们一般都是在浮动元素后面再增加一个空元素,然后为这个空元素定义clear:both;来清除浮动。在实际开发中,使用浮动之后如果发现有什么不对劲的地方,首先检查有没有清除浮动。事实上,清除浮动不仅仅只有clear:both;,还有overflow:hidden,以及更为常用的伪元素。

(学习视频分享:css视频教程)

以上就是一起聊聊CSS浮动布局及文档流的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2937948.html

(0)
上一篇 2025年3月11日 21:17:45
下一篇 2025年3月3日 06:51:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 详细解答css作用域之scoped css和css module的区别

    本篇文章给大家带来了scoped css和css module的区别的相关知识,scoped css和css module都是为了控制css的局部作用域,防止类名重复等问题,那么两者有什么区别呢,希望对大家有帮助。 前言 scoped cs…

    2025年3月11日
    200
  • sass和css3有什么区别

    sass和css3的区别:1、sass是由buby语言编写的一款css预处理语言,不使用花括号和分号,而css3是css技术的升级版本,是使用花括号和分号的;2、sass浏览器不能直接识别解析,需要经过编译器编译,而css3可以识别。 本教…

    2025年3月11日
    200
  • css3的translate3d用法是什么

    在css3中,translate3d()与transform属性配合使用可定义元素的3D转换,语法为“tranform: translate3d(x,y,z)”;其中的参数分别表示了元素在x、y和z轴方向移动的距离。 本教程操作环境:win…

    2025年3月11日
    200
  • css怎么取消列表的项目符号

    取消项目符号方法:1、使用list-style属性,只需要给li元素添加“list-style:none;”样式即可;2、使用list-style-type属性,只需要给li元素添加“list-style-type:none;”样式即可。 …

    2025年3月11日 编程技术
    200
  • css3中scale里面填什么

    在css3中,scale()方法里面的第一个参数填的是元素沿着水平方向缩放的倍数,第二个参数填的是元素沿着垂直方向缩放的倍数,语法为“transform:scale(x,y)”。 本教程操作环境:windows10系统、CSS3&&…

    2025年3月11日
    200
  • css3中什么属性用于创建圆角

    在css3中,“border-radius”属性用于创建圆角,该属性是一个简写属性,可以用于设置元素的四个圆角样式,语法为“border-radius: 1-4 length|% / 1-4 length|%”。 本教程操作环境:windo…

    2025年3月11日 编程技术
    200
  • css3动画怎么设置延迟几秒

    在css3中,可以利用“animation-delay”属性设置动画延迟几秒,该属性的作用就是定义动画什么时候开始,属性值的单位可以是秒“s”也可以是毫秒“ms”,语法为“animation-delay: time;”。 本教程操作环境:w…

    2025年3月11日
    200
  • css3中target的用法是什么

    用法:1、“:target”选择器用于选取当前活动的目标元素,语法为“:target{样式}”;2、target属性用于设置超链接的样式,语法为“target:target-name target-new target-position”。…

    2025年3月11日
    200
  • css3中box-shadow的用法是什么

    在css3中,“box-shadow”属性用于向框添加一个或多个阴影,并且设置阴影的样式,语法为“box-shadow:水平阴影 垂直阴影 模糊距离 阴影的尺寸 阴影的颜色 将外部阴影改为内部阴影;”。 本教程操作环境:windows10系…

    2025年3月11日 编程技术
    200
  • css字体大小指什么的大小

    css字体大小是指字体中字符框的大小。在css中,字体大小使用font-size属性设置,而实际上该属性设置的是字体中字符框的高度;实际的字符字形可能比这些框高或矮(通常会矮)。 本教程操作环境:windows7系统、CSS3&&a…

    2025年3月11日
    200

发表回复

登录后才能评论