CSS3伸缩布局

html-css013

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这样这个属性的设置才会起作用。

div+css 如何让背景图片横向缩小方法

方法/步骤

1、首先,需要新建一个html页面,并在页面中写上一个div。并为div添加背景图片,为背景图片添加一些基本的样式。

2、然后,按下键盘上的F12,查看其在浏览器中的效果。效果肯定是页面中没有相应的背景图片,理由是做的是背景图片,无法将div撑起一定的高度。

3、既然不能撑起来,也不能单纯的为div设置高度,这样无法解决不同大小背景图片的问题,可以利用css中的伪元素::after或者::before

4、可以简单的解释一下,利用伪元素是将指定标签的前面或者后面的内容设为空,并设成块元素,并设定以百分比为单位的padding-bottom或者padding-top。以此撑开这个div。

5、另一种方法是,我们在有背景图片的div的内部再套一个div,然后为这个内部的div添加相应的样式,使得外层div可以被撑起来。

6、这里采用的是和第一个相同的做法,为这个内部div设定内部边距上或者下都可以。同样是以百分比作为单位。这样我们再次在浏览器中查看,就可以看到作为背景的图片了。

7、不管采用方法一还是方法二,都是设置的上下的内边距而不是外边距,并且要以百分比作为单位。

当父元素和子元素都没有定义宽度的情况下实现水平居中: 

display:inline-block 

可以使用text-align:center和display:inline-block相结合,这个技巧需要一个父元素。 

1、HTML代码: 

代码如下:

<div class="navbar"> 

<ul> 

<li><a href="/">Home</a></li> 

… 

</ul> 

</div> 

2、CSS代码: 

代码如下:

.navbar { 

text-align:center 

.navbar ul { 

display:inline-block 

.navbar li { 

float:left 

.navbar li + li { 

margin-left:20px 

3、IE系列IE8+支持,要IE7 IE6 支持需要加入以下代码使display:inline像display:inline-block一样 

代码如下:

.navbar ul { 

*display:inline 

*zoom:1 

position:relative 

使用position:relative与float相结合的技巧及其浮动和定位参照物的关系,这个技巧需要两个父元素,一个用来定位而另外一个用来避免出现滚动条。 

HTML代码: 

代码如下:

<div class="navbar"> 

<div> 

<ul> 

<li><a href="/">Home</a></li> 

… 

</ul> 

</div> 

</div> 

CSS代码: 

代码如下:

.navbar { 

overflow:hidden 

.navbar >div { 

position:relative 

left:50% 

float:left 

.navbar ul { 

position:relative 

left:-50% 

float:left 

.navbar li { 

float:left 

.navbar li + li { 

margin-left:20px 

}

浏览器支持度较低 只Chrome和Firefox这样的-webkit- -moz-内核浏览器。当然以后慢慢会发展起来的。 

这个方式是推动浏览器发展的一个新的东西,目前供应于所以可以写前缀的浏览器,并没有工作在IE9和IE9以下。 

根据你的需求来选择合适的方法吧,display:inline-block兼容性较好,flex-box将会用于未来。