CSS3伸缩布局

html-css010

CSS3伸缩布局,第1张

我们知道,标准流中的,父容器里的多个块级的子元素会默认从上往下排列。但我们如果使用伸缩布局,就可以使子元素们在不脱离标准流的情况下,水平方向上,从左至右排列

flex 布局的优势

1、flex 布局的子元素不会脱离文档流,很好地遵从了“流的特性”。

2、flex 是一种现代的布局方式,是 W3C 第一次提供真正用于布局的 CSS 规范。 flex 非常提供了丰富的属性,非常灵活,让布局的实现更佳多样化,且方便易用。

但flex 的缺点在于,它不支持低版本的 IE 浏览器。

我们来明确几个概念

弹性盒子

弹性盒子指的是使用 display:flex 或 display:inline-flex 声明的父容器。

子元素/弹性元素

子元素/弹性元素指的是父容器里面的子元素们(父元素是弹性盒子)。

使用 display:flex 或 display:inline-flex 声明一个父容器为弹性盒子。此时,这个父容器里的子元素们,会遵循弹性布局。我们一般使用display:flex。

1.flex子项目在主轴的缩放比例,不指定flex属性,则不参与伸缩分配

min-width 最小值 min-width: 280px 最小宽度 不能小于 280

max-width: 1280px 最大宽度 不能大于 1280

flex-direction:用于设置盒子中子元素的排列方向。属性值可以是:

flex-direction这个属性默认子元素从左到右排列的。

子盒子如何在父盒子里面水平对齐方式如下所示,

子盒子如何在父盒子里面垂直对齐(单行),如下所示

flex-wrap控制是否换行,如下

flex-flow是flex-direction、flex-wrap的简写形式

align-content是针对flex容器里面多轴(多行)的情况,align-items是针对一行的情况进行排列。必须对父元素设置自由盒属性display:flex,并且设置排列方式为横向排列flex-direction:row并且设置换行,flex-wrap:wrap这样这个属性的设置才会起作用。

比如,建立4个div,要实现宽度随窗口变化而变化很简单,把宽度设成百分比形式就可以了。

css这样写:

这样的话我们的div倒是可以随着窗口的变化进行宽度的缩放,但是高度是不变的,这样肯定不行,我们要达到按比例缩放的话高度肯定也是要写成百分比的。那么怎么写呢?直接写百分比么 height:21%这个就别想了,肯定不行的。

我们可以借用一个不常见的属性,padding-bottom属性。

从手册可以看到,当padding-bottom为百分比的值时,定义的是基于父元素宽度的百分比下内边距。

所以我们的css如果这样写:

我们就会得到一个和我们宽度相等的高度,而且我们的div会随着窗口大小的改变进行等比例的缩放。

但是这个方法有一个问题就是,手册上说我们用的padding-bottom的这个值

感觉像是个雷啊

今天就先到这里,感兴趣的小伙伴可以一起探讨探讨。

将img的宽高设置成100%。层叠样式表是一种用来表现HTML或XML等文件样式的计算机语言,不管容器有多大,只要将img的宽高设置成100%就能自适应容器大小,CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。