weex默认的flex布局_Flex布局从了解到使用只需5min

作者:沸羊羊_

https://blog.csdn.net/weixin_42653522/article/details/106940004

Flex简介

    页面布局的传统解决方案是基于盒状模型,使用 display属性+position属性+float属性,但对于特殊布局非常不方便。直到2009年,W3C提出了解决方案-----Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,意味着,现在可以很安全的使用这项功能。

    Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

    任何一个容器都可以指定为Flex布局。

    注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

其他布局

table布局

在实际的项目开发过程中,不建议用table进行布局。

缺点:

  • table 会阻挡浏览其渲染引擎的渲染顺序,会延迟页面的生成速度,让用户等待时间更久。

  • table 比其他html标签占更多的字节。造成下载时间延迟,占用服务器更多的流量资源(代码冗余)。

  • 灵活性差,一旦设计确定,后期很难通过CSS让它展现新的面貌。

  • 不利于搜索引擎抓取信息,直接影响到网站的排名。

优点:

  • 兼容性好,容易上手。

float布局

float 属性定义元素在哪个方向浮动。

缺点:

  • 脱离文档流,需要清除浮动,高度塌陷(float的破坏性主要是指它会使父容器的高度塌陷,也就是父元素在高度计算的时候会忽略浮动的元素)。

优点:

  • 兼容性好,比较简单。

absolute布局

relative属性:脱离文档流,但保留占位符,其偏移位置是相对于本身在正常文档流中时的位置

    脱离文档流是说设置了relative属性之后,元素不在z-index:0;的正常文档流中,其z-index的值>0,但保留占位符,就是在正常文档流中位置保留着,后继元素不能占位,然后相对于本身正常位置进行偏移。

缺点:

  • 脱离文档流,会导致后续元素全部脱离文档流,可用行差。

grid布局

Grid 布局是 CSS 中最强大的布局系统。与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,意味着它可以同时处理列和行

Flex布局

容器属性

25e9deffa2a0faf6a26e0f6f84510b6a.png

元素结构

c095aadbfe3fef344946c9547209077c.png
<template>  <div class="body">    <div class="container">      <div class="one">onediv>      <div class="two">twodiv>      <div class="three">threediv>    div>  div>template><style scoped>.body {  margin: 0;  padding: 0;}.container {  width: 300px;  background: #999;  margin: 50px auto;}.one {  width: 100px;  height: 50px;  background-color: #375;}.two {  width: 100px;  height: 50px;  background-color: #854;}.three {  width: 100px;  height: 50px;  background-color: #489;}style>

使用flex布局

display:flex

50976a1cb7a4d7d92ec0b3f152b75daa.png 3241a104198750b7acd5c22e07827b4a.png

    因为flex布局默认主轴方向为 row ,以行为主轴,所以内容在主轴的起点和终点两根轴线之间

改变主轴方向 - flex-direction属性

主轴方向:flex-direction: column;

c095aadbfe3fef344946c9547209077c.png b0e3e6c87e856df71cd3a73ec821f255.png

把 主轴方向改为 column后,以列为主轴,行为交叉轴,所以内容在主轴的两根轴线之间。

主轴方向:flex-direction: column-reverse;

c095aadbfe3fef344946c9547209077c.png

以列为主轴,将排列方式反转,以原点为起点。

改变换行方式 - flex-wrap属性

换行:flex-wrap:wrap;

620a639a356bf1486c4010f0c6d70197.png

换行:flex-wrap:wrap-reverse;

c09d07a182182c64a6fae6e257f3a3ac.png

flex-flow属性(flex-directive和flex-wrap简写)

以行为主轴,换行:flex-flow:row wrap;

ccd0f95c8f8dd19f7b486ad832e6f001.png

以行为主轴,不换行:flex-flow:row nowrap;

b140c732503aedda2794ab680997b41f.png

以列为主轴,换行:flex-flow: column wrap;

5db7809a086d2837d9f5ff6f2530f306.png

以列为主轴,不换行:flex-flow: column nowrap;

5db7809a086d2837d9f5ff6f2530f306.png

主轴对齐方式 - justify-content

行为主轴,左对齐(默认值): justify-content: flex-start;

1c122ecada8ccd0e353d70c9bfc14a68.png

行为主轴,右对齐: justify-content: flex-end;

dacbdb992128a0b9e9af2101a3466bc7.png

行为主轴,居中: justify-content: center;

86e02fb40e732eac661e01fc0ebe6f4d.png

行为主轴,两端对齐,元素之间间隔相等: justify-content: space-between;

627ab3f2f802676d9c45cbe80b11fdde.png

行为主轴,元素边框两侧间隔相等,元素之间间隔比元素边框间隔大一倍: justify-content: space-around;

3d6c4718cebbb37309cfabd0a6825473.png

列为主轴,左对齐(默认值): flex-direction: column; justify-content: flex-start;

ff2f038f4666838a1688c51f87ed859b.png

列为主轴,右对齐: flex-direction: column; justify-content: flex-end;

966b2355e7dba0aadb4a7f467a71311b.png

列为主轴,居中: flex-direction: column; justify-content: center;

9c3a02f9c4e7801774d8a0f571899432.png

列为主轴,两端对齐,元素之间间隔相等: flex-direction: column; justify-content: space-between;

efe9dba8d6ab2b3c00576e98f80480e4.png

列为主轴,元素边框两侧间隔相等,元素之间间隔比元素边框间隔大一倍: flex-direction: column; justify-content: space-around;

0157e6c7c8f5a4cbd5f6b0967a71b1a2.png

交叉轴对齐方式 - align-items

列为交叉轴,左对齐(默认值): align-items: flex-start;

35a56449ef61019d559382a9b8c00066.png

列为交叉轴,右对齐: align-items: flex-end;

2a53c42cb646ea6be42987cdba9909cc.png

列为交叉轴,居中: align-items: center;

42c21ac77d88097c301dbb2c2d13f5c5.png

列为交叉轴,以元素第一行文字基线对齐: align-items: baseline;

35a56449ef61019d559382a9b8c00066.png

列为交叉轴,取消元素高度将占满整个容器高度(默认值): align-items: stretch;

ca4ce4fea3b56ed845c213820001c4e0.png

行为交叉轴,左对齐(默认值): flex-direction: column; align-items: flex-start;

cdb8a6ab648dde088dfe6b64439eec5a.png

行为交叉轴,右对齐: flex-direction: column; align-items: flex-end;

8b97afcb10d018657c72b2685ad18cb2.png

行为交叉轴,居中: flex-direction: column; align-items: center;

435aea14fc4831979e4bc68fcc7de579.png

行为交叉轴,以元素第一行文字基线对齐: flex-direction: column; align-items: baseline;

cdb8a6ab648dde088dfe6b64439eec5a.png

行为交叉轴,取消元素高度(默认值): flex-direction: column; align-items: stretch;

f53f6ea7bd944934cab128a5005fa0d9.png

子元素属性

c83787f988d741c1fd455cd08108d021.png

子元素属性 – order

    order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

.one {  order: 2;}.two {  order: 1;}.three {  order: 1;}
3bb7adaa765f3a6a1ec7d5893c56d275.png

子元素属性 – flex-grow

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

    如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

.one {  flex-grow: 1;}.two {  flex-grow: 2;}.three {  flex-grow: 1;}
a96c4fd28d5f7d0353d99b127508dff8.png

子元素属性 – flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。数值越大,相对比例越小。

    如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

    负值对该属性无效

// case 1.one {  flex-shrink: 3;}.two {}.three {}
d949c1de3b22845c25de5bc3951507fd.png
// case 2.one {  flex-shrink: 0;}.two {}.three {}
b06cb786be39959a460668cd2ab40d74.png

子元素属性 – flex-basis

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间

.one {  flex-basis: 500px;}.two {}.three {}
f72fa41f88150a8ed31dde61c1a14048.png

子元素属性 – flex

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。    

.one {  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]}

    该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

    建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

子元素属性 – align-self

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

//子元素容器.container {  display: flex;  align-items: center;}.one {  align-self: flex-start;}.two {}.three {}
761ca4e9dff247fd428ad8f8c1a9cd1e.png

    该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

09d3c9adfb0c01bc5340b754e134aaa9.png

更多前端分享,请关注:

前端路人甲

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值