CSS

伸缩布局

字号+ 编辑: Snake 修订: Snake 来源: 慕课网 2023-09-10 我要说两句(0)

Flexbox布局常用于设计比较复杂的页面,可以轻松的实现屏幕和浏览器窗口大小发生变化时保持元素的相对位置和大小不变,同时减少了依赖于浮动布局实现元素位置的定义以及重置元素的大小。

伸缩布局

CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定、调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简称为Flex

Flexbox布局常用于设计比较复杂的页面,可以轻松的实现屏幕和浏览器窗口大小发生变化时保持元素的相对位置和大小不变,同时减少了依赖于浮动布局实现元素位置的定义以及重置元素的大小。

Flexbox布局在定义伸缩项目大小时伸缩容器会预留一些可用空间,让你可以调节伸缩项目的相对大小和位置。例如,你可以确保伸缩容器中的多余空间平均分配多个伸缩项目,当然,如果你的伸缩容器没有足够大的空间放置伸缩项目时,浏览器会根据一定的比例减少伸缩项目的大小,使其不溢出伸缩容器。综合而言,Flexbox布局功能主要具有以下几点:

  • 屏幕和浏览器窗口大小发生改变也可以灵活调整布局;

  • 可以指定伸缩项目沿着主轴或侧轴按比例分配额外空间(伸缩容器额外空间),从而调整伸缩项目的大小;

  • 可以指定伸缩项目沿着主轴或侧轴将伸缩容器额外空间,分配到伸缩项目之前、之后或之间;

  • 可以指定如何将垂直于元素布局轴的额外空间分布到该元素的周围;

  • 可以控制元素在页面上的布局方向;

  • 可以按照不同于文档对象模型(DOM)所指定排序方式对屏幕上的元素重新排序。即说可以在浏览器渲染中不按照文档流先后顺序重排伸缩项目顺序。

Flexbox规范版本众多,浏览器对此语法支持度也各有不同,接下来的内容以最新语法版本为例向大家展示:

  • 创建一个flex容器

任何一个flexbox布局的第一步是需要创建一个flex容器。为此给元素设置display属性的值为flex。在Safari浏览器中,你依然需要添加前缀-webkit,

.flexcontainer{ display: -webkit-flex; display: flex; }
  • Flex项目显示

Flex项目是Flex容器的子元素。他们沿着主要轴和横轴定位。默认的是沿着水平轴排列一行。你可以通过flex-direction来改变主轴方向修改为column,其默认值是row。

图片1.png

  •  Flex项目列显示

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: column; 
flex-direction: column; 
}

 图片2.png

  • Flex项目移动到顶部

如何实现将flex项目移动到顶部的效果,关键点:取决于主轴的方向。justify-content 属性定义了项目在主轴上的对齐方式。align-items 属性定义项目在交叉轴上如何对齐。 如果主轴是水平的方向,通过align-items设置;如果主轴是垂直的方向,通过justify-content设置。

.flexcontainer{
 -webkit-flex-direction: column; 
 flex-direction: column; 
 -webkit-justify-content: flex-start; 
 justify-content: flex-start;
 }

 图片3.png

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: row;
flex-direction: row;
-webkit-align-items: flex-start; 
align-items: flex-start; 
  }

 图片4.png

  • Flex项目移到左边

flex项目称动到左边或右边也取决于主轴的方向。如果flex-direction设置为row,设置justify-content控制方向;如果设置为column,设置align-items控制方向。

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: row; 
flex-direction: row; 
-webkit-justify-content: flex-start; 
justify-content: flex-start; 
}

 图片5.png

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: column; 
flex-direction: column; 
-webkit-align-items: flex-start; 
align-items: flex-start; 
}

 图片6.png

  • Flex项目移动右边

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: row; 
flex-direction: row; 
-webkit-justify-content: flex-end; 
justify-content: flex-end; 
}

 图片7.png

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: column; 
flex-direction: column; 
-webkit-align-items: flex-end; 
align-items: flex-end; 
}

 图片8.png

  • 水平垂直居中

在Flexbox容器中制作水平垂直居中是微不足道的。设置justify-content或者align-items为center。另外根据主轴的方向设置flex-direction为row或column。

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: row; 
flex-direction: row; 
-webkit-align-items: center; 
align-items: center; 
-webkit-justify-content: center; 
justify-content: center; 
}

 图片9.png

.flexcontainer{ 
display: -webkit-flex; 
display: flex; 
-webkit-flex-direction: column; 
flex-direction: column; 
-webkit-align-items: center; 
align-items: center; 
-webkit-justify-content: center; 
justify-content: center; 
}

 图片10.png

  • Flex项目实现自动伸缩

您可以定义一个flex项目,如何相对于flex容器实现自动的伸缩。需要给每个flex项目设置flex属性设置需要伸缩的值。

.bigitem{ 
-webkit-flex:200; 
flex:200; 
}  

.smallitem{ 
-webkit-flex:100; 
flex:100; 
}

 图片11.png

实现图片水平垂直居中

图片12.png

图片13.png

阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    1

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • 多个高度相同, 属性inline-block的div,有的div没有内容而有的div有内容,有内容的会下沉?

  • 让整个网页全局变成黑白色调的css代码

  • CSS生成内容

  • CSS3外轮廓属性

我要说说
网上宾友点评