CSS3 伸缩盒子布局

伸缩布局

传统布局和伸缩布局

  • 布局的传统解决方案,基于盒装模型,依赖dispaly属性+position属性+flot属性
  • 对于特殊布局非常不便
  • CSS3在布局方面做了非常大的改进
  • 使得我们对块级元素的布局排列变得十分灵活,适宜性非常强
  • 其强大的伸缩性,在响应式开发中发挥极大的作用

重要属性

  • display: flex;
  • 给父元素设置了这个属性,其子元素都会自动的变成伸缩项(flex item)

justify-content

  • justify-content
  • 设置或检索弹性盒子元素在主轴(默认横轴)方向上的对其方式
  • 语法:
    • flex-start弹性盒子元素向行起始位置对齐
    • flex-end弹性盒子元素向行结束位置对齐
    • center弹性盒子元素向行中间位置对齐
    • space-between左右对其父容器的开始和结束,中间平均分页,产生相同的间距
    • space-around将多余的空间平均的分页在每一个子元素的两边
      • 类似于magin: 0 auto;
      • 造成中间盒子的间距时左右两边盒子间距的两倍
  • 代码演示
    • 首先创建一个父容器包裹四个子容器
    <div class="father">
        <div class="one"></div>
        <div class="two"></div>
        <div class="three"></div>
        <div class="four"></div>
    </div>
    • 父元素设置
    .father {
    width: 900px;
    height: 200px;
    border: 1px solid red;
    box-sizing: border-box;
    }
    • 子元素宽高200px,颜色各不相同
    • 然后给父元素添加属性display: flex;
    • 下面是各种情况下的盒子排列

  • 当子元素宽度和大于父容器宽度的时候,子元素会自动的平均收缩
    • 将父元素高度设置为600px
    • 在添加第五个盒子
    • 第五个盒子并没有挤下来,每个盒子都一样大
    • (900-2) / 5 = 179.6px
    • 每个元素都在平均收缩,但可能并不是我们想要的结果

flex-flow

  • flex-flow:=flex-wrap: + flex-direction:

    • 简写属性
  • flex-wrap:控制子元素是否换行显示,默认不换行
    • nowrap不换行,仍然收缩显示
    • wrap换行
    • wrap-reverse翻转(不常用)
  • flex-direction:设置子元素的排列方向
    • 就是用来设置主轴(默认横轴)方向

      • 默认主轴方向是row
      • 我们来试一下
      • row水平方向排列,从左至右
      • row-reverse水平方向排列,从右至左
      • column垂直方向排列,从下至上
      • column-reverse垂直方向排列,从上至下
  • flow-grow:可以来扩展子元素的宽度
    • 对子元素进行设置
    • flow-grow:默认值为0:说明子元素不会去占据剩余的空间
    • 具体是用来设置当前元素占据剩余空间的比例值
    • 比例值计算 : (当前空间的flex-grow)/(所有兄弟元素的flex-grow的和)
  • 代码演示
    • 去掉4,5两个盒子
    • 给盒子1添加属性flex-grow:1
    • 盒子1吸收掉了所有的剩余空间
    • 给盒子1,2,3都添加属性flex-grow:1
    • 三个盒子均等分了剩余空间

flex-shrink

  • flex-shrink定于收缩比例,通过设置的值来计算收缩空间

    • 默认值为1
    • 值为1时,将不去承担收缩比例
    • 具体是用来设置当前元素收缩的比例值
    • 比例值计算:(当前元素的flex-shrink)/(所有兄弟元素的flex-shrink的和)
  • 代码演示
    • 我们将父元素宽度改为500px
    • 现在每个盒子都只有166px大小了
    • 我们将盒子1设置属性flex-shrink:1
    • 盒子并无变化,因为其默认值本来就是1
    • 现在我们将盒子1设置属性flex-shrink:2
    • 盒子1变成了149px大小
    • 盒子2,3变成了174.5px
    • 盒子1收缩程度占据了两份,盒子2,3收缩程度占据了一份
    • 现在我们将3个盒子属性都设置为flex-shrink:0
    • 页面发生了伪溢出(谨慎设置)

flex

  • flex = flow-grow + flex-shrink + flex-basis

    • 简写属性
    • 默认值为 0 1 auto
    • 后两个属性为可选属性
    • flex一般是用来设置伸缩子项占据剩余空间的比例值(常用)

align-items

  • align-items是设置子元素(伸缩项)在侧轴方向上的对齐方式

    • 父元素设置的属性
    • center 设置在侧轴方向上居中对齐
    • flex-start 设置在侧轴方向上顶对齐
    • flex-end 设置在侧轴方向上底对齐
    • stretch 拉伸
      • 让子元素在侧轴方向上进行拉伸,填充满整个侧轴方向,
      • 注意盒子不要有高度值
    • baseline文本基线
  • align-self设置单个元素在侧轴上的对齐方式
  • 代码演示
    • 我们还是保留三个盒子,并将父元素宽度改为900px
    • 父元素设置属性align-items:center
    • 父元素设置属性align-items:flex-start
    • 父元素设置属性align-items:flex-end
    • 父元素设置属性align-items:stretch,注意这里要把子元素的高度属性移除掉
    • 这里给三个盒子添加文字大小不一的文本
    • 父元素设置属性align-items:baseline
    • 接下来给单个元素设置属性
    • 给盒子1设置属性align-self:center

原文地址:https://www.cnblogs.com/landuo629/p/12500201.html

时间: 2024-08-01 02:25:13

CSS3 伸缩盒子布局的相关文章

CSS3弹性盒子--布局(2)

使用弹性盒子兼容低端适配有时需要: display:flex 和 display:-webkit-box display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column; -moz-box-flex:3; -we

css3 flex盒子布局

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } .nav{ display: -webkit-flex; background-color: lightgreen; height: 100px

css3总结(三)立方体、动画、web字体、字体图标、弹性布局、多列布局、伸缩盒子

目录: 1.立方体2.动画3.设置动画的一些属性4.案例:无缝滚动5.web字体6.弹性布局7.多列布局8.弹性布局9.案例:伸缩盒子的flex属性的应用案例(菜单个数不限)10.伸缩盒子的align-items属性     设置侧轴对齐方式11.案例:伸缩盒子,宽高自适应 1.立方体    *transform-style: preserve-3d;/*子元素保留其3d样式*/ <!DOCTYPE html> <html> <head> <title>立方

css3伸缩布局中justify-content详解

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS3伸缩布局</title> <style> body { margin: 0; padding: 0; font-family: '微软雅黑'; background-color: #F7F7F7; } ul { margin: 0; pa

CSS3总结五:弹性盒子(flex)、弹性盒子布局

弹性盒子容器的属性与应用 display:flex/inline-flex flex-direction flex-wrap justify-content align-items align-content flex-flow 弹性盒子子项的属性与应用 order align-self flex flex-grow flex-shrink flex-basis 弹性盒子布局 flex居中/T字布局 可动态增加导航栏 等分布局 圣杯布局 流式布局 一.弹性盒子容器的属性与应用 1.1.定义弹性盒

CSS3中flex伸缩盒子的使用

flex伸缩盒子: 在父盒子中设置display: flex:子盒子中分别设置flex: 1,按比例设置flex属性值. 其他属性如下: 1.flex-grow:<number>  // 用数值来定义扩展比率.不允许负值 2.flex-shrink:<number>  // 用数值来定义收缩比率.不允许负值 3.flex-basis:<length> | <percentage>  // 设置或检索弹性盒伸缩基准值. 4.flex-flow:<' fl

Flex布局(伸缩盒布局)

Flexible Box是什么?Flexible意为可伸缩的,Box意为盒子,可以理解为一种新式的盒模型——伸缩盒模型.由CSS3规范提出,这是在原有的大家非常熟悉的block, inline-block, inline的基础上延伸出的新一代布局模式. 浏览器兼容性 作为非常现实的开发者,是否对一个新技术进行关注,首先要考虑它的浏览器兼容性如何.我们的伸缩盒模型的浏览器兼容性看起来还是相当不错的. 可以看到,现代浏览器基本上都支持了,IE10开始也支持了(IE和Safari分别加-ms-和-we

CSS3与页面布局学习笔记(四)——页面布局大全

一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能如下: 1.1.1.向上移动 当多个元素同时从标准流中脱离开来时,如果前一个元素的宽度为100%宽度,后面的元素通过负边距可以实现上移.当负的边距超过自身的宽度将上移,只要没有超过自身宽度就不会上移,示例如下: <!DOCTYPE html> <html> <head> &

使用 CSS3 Flexible Boxes 布局

转自https://segmentfault.com/a/1190000000484017 Flexible Box是什么?Flexible意为可伸缩的,Box意为盒子,可以理解为一种新式的盒模型——伸缩盒模型.由CSS3规范提出,这是在原有的大家非常熟悉的block, inline-block, inline的基础上延伸出的新一代布局模式. 浏览器兼容性 作为非常现实的开发者,是否对一个新技术进行关注,首先要考虑它的浏览器兼容性如何.我们的伸缩盒模型的浏览器兼容性看起来还是相当不错的. 可以看