flex布局能和浮动一起用吗(CSS布局相关——盒模型和浮动)

本文目录
- CSS布局相关——盒模型和浮动
- div浮动定位:左边纵两个,右边一个,怎么解决
- flex为什么不能跟绝对定位一起用
- css怎么使五个相同大小的圆形图标在同一水平线上,它默认显示在同一竖直线上
- dreamweaver浮动怎么实现
CSS布局相关——盒模型和浮动
在CSS中,所有元素被“ 盒子 ”所包围,利用盒模型的基本原理来实现CSS准确布局,元素排列等处理
CSS广泛使用的两种盒子,其在页面流和元素之间的关系表现为不同的行为:
对于定义为块级盒子(block)的元素会表现出以下行为:
对于定义为内联盒子(inline)的元素会表现出以下行为:
通过对盒子设置display的属性值,来控制盒子的外部显示类型
外部显示类型与内部显示类型
外部显示类型:决定盒子是块级还是内联,即决定了盒子之间的布局方式
内部显示类型:决定了盒子内部的元素是如何布局的,默认情况是按照正常文档流布局,也可以通过设置display值为flex和grid来改变内部元素之间的布局方式
不同显示类型的例子
block:
图中段落里的 《span》 word 《/span》 被设置为 display:block
因此其独占一行,宽度填满整个父元素
flex:
图中的列表被设置为 display:block ,每个列表是一个块级元素 —— 像段落一样 —— 会充满整个容器的宽度并且换行
inline-flex与inline
图中的列表被设置为 display:inline-flex ,使得在一些flex元素外创建一个内联框
最后设置两个段落为 display: inline , inline flex 容器和两个段落在同一行上,而不是像块级元素一样换行
CSS组成一个盒模型需要以下几个部分:
在标准模型中,如果你给盒设置 width 和 height,实际设置的是 content box。 padding 和 border 再加上设置的宽高一起决定整个盒子的大小
如果使用标准模型宽度 = 410px (350 + 25 + 25 + 5 + 5),高度 = 210px (150 + 25 + 25 + 5 + 5),padding 加 border 再加 content box
如果使用替代模型,一切都将变得简单很多,此时的 width 和 height 就是盒子可见的宽度与高度,无论怎么改变 padding 或 border 的值,都会通过压缩 conten box 的大小来保持 width 和 height 的值不变
如需使用,只需要声明以下CSS样式:
外边距是盒子周围一圈看不到的空间。它会把其他元素从盒子旁边推开。 外边距属性值可以为正也可以为负。设置负值会导致和其他内容重叠。无论使用标准模型还是替代模型,外边距总是在计算可见部分后额外添加
CSS:
html:
结果如下:因为上外边距设置为负值,所以两个边框会重叠
外边距折叠
理解外边距的一个关键是外边距折叠的概念。如果你有两个外边距相接的元素,这些外边距将合并为一个外边距,即最大的单个外边距的大小
结果如下,中间间隔的部分为50px
如下图所示,对内联盒子设置 width 和 height 都不会生效,虽然margin,padding和border会生效,但不会改变与其它内联盒子的关系,因此其内边距和边框会与段落的其它元素重叠
要避免上述情况,只需要将内联盒子的display值设置为inline-block即可
设置之后的效果为:
但因其保留有inline的特征,所以它不会跳转到新行
float可以使得当前元素脱离正常文本流,并吸附到父元素的左边(left)或者右边(right)正常布局中位于该浮动元素之下的内容,此时会围绕着浮动元素进行排列
基本的常见用途在于图片与文字环绕排版以及首字母下沉:
重点是这个,元素浮动具有一定的规则与限制
设置如下三个盒子(均以块级元素方式呈现):
将box1设置为向右浮动:
因为box1脱离正常文档流,所以box2和box3会向上填补box1的空位,box1浮动到父元素(body)的最右边
设置box1向左浮动:
同理,box1脱离正常文档流,box2与box3向上填补box1的空位,此时box1浮动到父元素(body)的最左边,所以会覆盖掉box2(浮动元素在正常流文档的上方)
设置box2向左浮动:
可以看到box3因为box2脱离正常文档流而向上填充其空位,box2因为浮动到左边覆盖了box3,然而box1仍处于正常文档流中,并且在html文件中最先声明,所以box2只能在box1的下方进行浮动(即使box2设置为向右浮动也是一样)
设置box1、box2与box3都向左浮动:
可以看到三个盒子均向左浮动,直到碰到前一个浮动框的边缘为止(对于box1来说是碰到父元素的边缘),因此呈现如此的排列状况
如果当父元素太窄,无法包含三个盒子的宽度,则无法容纳的元素向下移动,直到有足够的空间使得其能向某个方向浮动,如下图所示:
如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”
相关参考:
***隐藏网址***
***隐藏网址***
浮动的规则先讨论到此
高度塌陷
在父元素container内设置一个盒子box1,此时没有设置浮动,box1会撑起父元素container的高度
如果此时设置box1浮动,因为其脱离了正常文档流,无法撑起盒子的高度,所以将发生高度塌陷:
为了解决这个问题,在此提供三种方法:
1. 添加额外标签
首先在父元素内添加空白内容的额外标签clearfix
然后再CSS规则中添加以下内容:
通过清除父元素内空白元素的浮动,使得父元素边框重新包含浮动内容
2. 父级元素添加overflow属性
直接在父元素内添加overflow属性:
同样可以清除浮动,结果如下:
3. after伪元素
html文档改为:
在CSS规则里添加:
div浮动定位:左边纵两个,右边一个,怎么解决
左浮动应该放在包含橙红的那个div,而不是橙红这两个div!!!
另外,.box1既然用了flex,那为什么不用flex来做整体布局呢?这样就不需要浮动了。一直以来都不提倡用浮动定位来进行布局,因为很容易就会出现失控的情况,flex才是未来大势所趋。
下面是用flex来实现的方法:
《style》
body {display:flex}
.left {flex:3 1 auto; display:flex; flex-direction:column; height:200px}
.right {flex:2 1 auto; height:200px}
.top {flex:auto}
.bottom {flex:auto}
.y {background-color:#f80}
.b {background-color:#ccc}
.r {background-color:#f00}
《/style》
《body》
《div class="left"》
《div class="y top"》《/div》
《div class="r bottom"》《/div》
《/div》
《div class="b right"》《/div》
《/body》
flex为什么不能跟绝对定位一起用
Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。但是使用Flex布局以后,子元素的float、clear和vertical-align等属性将失效。这是很正常的
css怎么使五个相同大小的圆形图标在同一水平线上,它默认显示在同一竖直线上
哈哈,好简单的问题,为每一个圆形外层加上li,然后5个都在ul中,通过css样式设置li的样式为float:left,这五个圆形就飘起来在一条直线上了。
dreamweaver浮动怎么实现
在样式里面加入浮动属性就可以做到,是需要敲代抄码的。如果敲代码,DW软件系统默认给弄成相对与绝对定位position,但这种方式不利于后面内容的排版。
你可以给左边的图片加入左浮动,就像这样: img{float: left;},然后再给右边的文字加入左浮动,这样:div{float: left;} 。记住是加在和图片并排的div上。
在左边图片img标签和右边文字div层标签的外边最好是套一个大的div层包住,并在些层上面写入样式div{overflow:hidden}。
还有一种简单的样式方法,是在上述外面大层上写入样式div{display:flex;}就可以了,这是新的css3新增的伸缩容器。
注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
扩展资料:
DreamWeaver的使用方法:
1、首先就是新建一个站点。
2、点击新建站点,然后选择一个本地的文件夹,右击新建的文件夹就可以开始新建html、css、 js 等文建了。
3、区,这3个按钮将会让工作区呈现不同的效果,实时视图可以看到自己的代码呈现的效果。
4、当想换自己的浏览器的时候,可以点击文件下面的实时预览的浏览器列表,里面也可以看到用浏览器预览的快捷键,在里面可以找到字体的调整等。
***隐藏网址***

更多文章:
跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意
2026年10月11日 05:10
易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)
2026年10月11日 03:00
compare with造句(用compared with和compared to造句)
2026年10月10日 23:30
tensorflow与keras对应版本(为什么tensorflow2.8没有keras)
2026年10月10日 22:10
maven仓库jar网站(如何在maven仓库中添加jar包)
2026年10月10日 19:50







