<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          3分鐘精通flex布局 - flex布局可視化學(xué)習(xí)工具

          共 5009字,需瀏覽 11分鐘

           ·

          2021-02-05 00:54

          寫(xiě)在前面

          現(xiàn)在大前端中被使用最多的布局方式非flex莫屬,像h5、pc、小程序、rn、甚至native都在使用flex布局,可見(jiàn)掌握好flex布局是多的重要。

          然而在flex布局興起時(shí),我們學(xué)習(xí)flex布局的方法大部分就是看一些博客文章的解析,官方文檔說(shuō)明,然后挨個(gè)去看各個(gè)屬性的作用和示例,然后再自己手敲實(shí)踐幾次。這也是我當(dāng)初學(xué)習(xí)flex布局的方法,常規(guī)手段,也很有效。如果愣是要說(shuō)一些不足的地方,應(yīng)該就是不直觀,效率不太高。

          那有沒(méi)有一種更直觀、更高效的學(xué)習(xí)方式呢?

          為了能解決這個(gè)問(wèn)題,flex布局可視化工具就誕生了。

          這個(gè)工具適合什么人?

          畢竟flex布局很簡(jiǎn)單,加起來(lái)屬性也沒(méi)幾個(gè),學(xué)習(xí)成本也不高,如果你在日常工作中,存在下面一種或者幾種情況,那就可以繼續(xù)往下看,否則就可以跳出了。

          • 對(duì)有些屬性的作用有些模糊,畢竟是web開(kāi)發(fā),寫(xiě)了就能即時(shí)看效果,多試幾次總能對(duì)
          • 有時(shí)候還需要百度
          • 搞不清主軸變化后的變化,容易搞混
          • 其他

          可視化工具展示

          父元素屬性設(shè)置

          在這里控制父元素的屬性值,操作后即時(shí)渲染到下面的結(jié)果預(yù)覽區(qū)。

          結(jié)果預(yù)覽

          在這里可以添加子元素,也可以單獨(dú)對(duì)其中的一個(gè)子元素設(shè)置不同的屬性值。

          上面實(shí)現(xiàn)的是一個(gè)水平垂直居中效果

          圖解FlexBox

          以下截圖均來(lái)自可視化工具,看不下去可以直接跳到到文章末尾,直接在線(xiàn)體驗(yàn)。

          flex-direction:row

          flex-direction:row-reverse

          flex-direction:row, justify-content:space-around

          flex-direction:column,justify-content:space-around

          還有很多屬性就不一一截圖了,可以直接打開(kāi)文末的網(wǎng)址體驗(yàn)下。

          特別說(shuō)明下

          其實(shí)很多人迷惑的是justify-contentalign-items的關(guān)系,很多人誤認(rèn)為align-items是設(shè)置垂直方向的布局,這么理解其實(shí)是有問(wèn)題的。

          這里要搞清楚一個(gè)概念,主軸和交叉軸。

          • justify-content 用來(lái)設(shè)置主軸方向的布局或?qū)R方式
          • align-items 用來(lái)設(shè)置交叉軸方向的布局或?qū)R方式

          主軸可以通過(guò)flex-direction來(lái)進(jìn)行設(shè)置,取值為rowcolumn

          當(dāng)為row時(shí),justify-content 控制水平方向的布局,align-items 控制垂直方向的布局。

          當(dāng)為column時(shí),justify-content 控制垂直方向的布局,align-items 控制水平方向的布局。

          截圖演示下

          flex-direction:row,justify-content:space-around,align-items:center

          flex-direction:column,justify-content:space-around,align-items:center

          本工具的實(shí)現(xiàn)方式

          實(shí)現(xiàn)很簡(jiǎn)單,使用react開(kāi)發(fā),只遵循一個(gè)原則即可 UI=fn(state),所以只要定義好你的state就完成了一半兒。

          細(xì)節(jié)就不說(shuō)了,貼下主要用到的state

          const?ChildEleDefaultStyle?=?[
          ????{?text:?'order',?type:?'number',?jsxKey:?'order'?},
          ????{?text:?'flex-grow',?type:?'number',?jsxKey:?'flexGrow'?},
          ????{?text:?'flex-shrink',?type:?'number',?jsxKey:?'flexShrink'?},
          ????{?text:?'flex-basis',?type:?'string',?jsxKey:?'flexBasis'?},
          ????{?text:?'align-self',?type:?'list',?jsxKey:?'alignSelf',?values:?['auto',?'flex-start',?'flex-end',?'center',?'base-line']?},
          ]

          const?initState?=?{
          ????parentEleStyle:?{
          ????????flexDirection:?'row',
          ????????justifyContent:?'center',
          ????????alignItems:?'center',
          ????????flexWrap:?'wrap',
          ????},
          ????parentFlexData:?[
          ????????{
          ????????????id:?1,
          ????????????propertiyName:?'flex-direction',
          ????????????propertiyObjName:?'flexDirection',
          ????????????values:?[
          ????????????????{?name:?'row',?checked:?2,?},
          ????????????????{?name:?'row-reverse',?checked:?1?},
          ????????????????{?name:?'column',?checked:?1?},
          ????????????????{?name:?'column-reverse',?checked:?1?},
          ????????????]
          ????????},
          ????????{
          ????????????id:?2,
          ????????????propertiyName:?'flex-wrap',
          ????????????propertiyObjName:?'flexWrap',
          ????????????values:?[
          ????????????????{?name:?'nowrap',?checked:?1?},
          ????????????????{?name:?'wrap',?checked:?2?},
          ????????????????{?name:?'wrap-reverse',?checked:?1?},
          ????????????]
          ????????},
          ????????{
          ????????????id:?3,
          ????????????propertiyName:?'justify-content',
          ????????????propertiyObjName:?'justifyContent',
          ????????????values:?[
          ????????????????{?name:?'flex-start',?checked:?1?},
          ????????????????{?name:?'flex-end',?checked:?1?},
          ????????????????{?name:?'center',?checked:?2?},
          ????????????????{?name:?'space-between',?checked:?1?},
          ????????????????{?name:?'space-around',?checked:?1?},

          ????????????]
          ????????},
          ????????{
          ????????????id:?4,
          ????????????propertiyName:?'align-items',
          ????????????propertiyObjName:?'alignItems',
          ????????????values:?[
          ????????????????{?name:?'flex-start',?checked:?1?},
          ????????????????{?name:?'flex-end',?checked:?1?},
          ????????????????{?name:?'center',?checked:?2?},
          ????????????????{?name:?'space-between',?checked:?1?},
          ????????????????{?name:?'space-around',?checked:?1?},

          ????????????]
          ????????},
          ????????{
          ????????????id:?5,
          ????????????propertiyName:?'align-content',
          ????????????propertiyObjName:?'alignContent',
          ????????????values:?[
          ????????????????{?name:?'stretch',?checked:?2?},
          ????????????????{?name:?'flex-start',?checked:?1?},
          ????????????????{?name:?'flex-end',?checked:?1?},
          ????????????????{?name:?'center',?checked:?1?},
          ????????????????{?name:?'space-between',?checked:?1?},
          ????????????????{?name:?'space-around',?checked:?1?},

          ????????????]
          ????????}
          ????],
          ????resultItems:?[
          ????????{
          ????????????id:?1,?elementStyle:?{
          ????????????????order:?0,
          ????????????????flexGrow:?0,
          ????????????????flexShrink:?1,
          ????????????????flexBasis:?'auto',
          ????????????????alignSelf:?'auto'
          ????????????}
          ????????},
          ????????{
          ????????????id:?2,?elementStyle:?{
          ????????????????order:?0,
          ????????????????flexGrow:?0,
          ????????????????flexShrink:?1,
          ????????????????flexBasis:?'auto',
          ????????????????alignSelf:?'auto'
          ????????????}
          ????????},
          ????????{
          ????????????id:?3,?elementStyle:?{
          ????????????????order:?0,
          ????????????????flexGrow:?0,
          ????????????????flexShrink:?1,
          ????????????????flexBasis:?'auto',
          ????????????????alignSelf:?'auto'
          ????????????}
          ????????},
          ????????{
          ????????????id:?4,?elementStyle:?{
          ????????????????order:?0,
          ????????????????flexGrow:?0,
          ????????????????flexShrink:?1,
          ????????????????flexBasis:?'auto',
          ????????????????alignSelf:?'auto'
          ????????????}
          ????????},
          ????]
          }

          彩蛋

          面試中經(jīng)常被問(wèn) flex:0 1 auto,表示什么?所以特地在子元素上作了一個(gè)順序。

          flex: flex-grow、flex-shrink 、flex-basis 縮寫(xiě)

          工具地址

          http://bigerfe.com/yflex

          獲得更好的體驗(yàn),需要在pc端訪問(wèn)哦。

          目前只是具備的基本功能,還有一些需要優(yōu)化要做,后面持續(xù)更新,歡迎體驗(yàn)。

          今天分享到就這里,希望對(duì)你有用。

          可否點(diǎn)個(gè)『在看』支持下?


          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  啊啊啊啊啊啊啊啊乱伦 | 无码人妻丰满熟妇区蜜桃 | 午夜日B网 | 人人操人人人 | 天堂网久久 |