日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么时候会是用treeset?_flex:1 到底代表什么?

發(fā)布時(shí)間:2023/12/2 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么时候会是用treeset?_flex:1 到底代表什么? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天在做項(xiàng)目的時(shí)候遇到一個(gè)關(guān)于布局的問題, 就是 flex: 1; 我一直以為 flex: 1; 代表的是 flex: aoto; 后來發(fā)現(xiàn)結(jié)果并不是這樣, 所以寫一篇博客來講解一下 flex: 1; 代表什么

代碼第一版

<div class="container"><div class="div">我是一個(gè)div</div><div class="div">我是一個(gè)很多字div</div><div class="div">我是一個(gè)更多字而且第三個(gè)div</div> </div> <style> .container{display: flex; } .div{border: 1px solid red;flex: 1; }</style>

利用 flex: 1; 確實(shí)實(shí)現(xiàn)了三個(gè)不同內(nèi)容的 div 平分空間, 所以按我以前的想法來說:

flex: 1; === flex: 1 1 auto;

這是完整寫法, 詳見mdn, 它還有另外兩種完整寫法, 分別是 initial (0 1 auto) 和 none (0 0 auto)

  • 第一個(gè)參數(shù)表示: flex-grow 定義項(xiàng)目的放大比例,默認(rèn)為0,即如果存在剩余空間,也不放大
  • 第二個(gè)參數(shù)表示: flex-shrink 定義了項(xiàng)目的縮小比例,默認(rèn)為1,即如果空間不足,該項(xiàng)目將縮小
  • 第三個(gè)參數(shù)表示: flex-basis 給上面兩個(gè)屬性分配多余空間之前, 計(jì)算項(xiàng)目是否有多余空間, 默認(rèn)值為 auto, 即項(xiàng)目本身的大小

代碼第二版

上面證實(shí)了我以前的想法, flex:1; 就是代表均勻分配元素, 但是我們來改成完整寫法看看

/* 其他代碼沒有變化, 沿用上面的 */.div{border: 1px solid red;flex: 1 1 auto; }


加入原來以為正確的完整代碼后可以看到三個(gè)元素沒有均分, 所以可以推出:

flex: 1; !== flex: 1 1 auto;

走到這我就一頭霧水, 為什么和我以前想的完全不同, 于是我就去參照了 w3c 對于 flex 的解釋, 官方明確指, flex 最后一個(gè)參數(shù)為 0, 見下圖

所以:

  • flex: 1; === flex: 1 1 0;

但是在 chrome 瀏覽器上設(shè)置 flex: 1 1 0; 時(shí), 它會自動加一個(gè)單位 px

而設(shè)置 flex: 1; 時(shí), 它會自動加一個(gè) %, 看來他們解析到瀏覽器的時(shí)候必須帶一個(gè)單位

于是我就又做了幾個(gè)實(shí)驗(yàn), 改了一下 flex-basis 的參數(shù), 得出以下結(jié)論

  • flex: 1; === flex: 1 1 任意數(shù)字+任意長度單位;

可以看出最重要的一點(diǎn)在 第三個(gè)參數(shù) flex-basis 上, 我們再來回顧以下 這個(gè)屬性的作用

flex-basis給上面兩個(gè)屬性分配多余空間之前, 計(jì)算項(xiàng)目是否有多余空間, 默認(rèn)值為 auto, 即項(xiàng)目本身的大小

auto 為表示項(xiàng)目本身的大小, 如果設(shè)置為 auto, 那么這三個(gè)盒子就會按照自己內(nèi)容的多少來等比例的放大和縮小, 所以出現(xiàn)了上圖中三個(gè)盒子不一樣大的情況

那我們?nèi)绻S便設(shè)置一個(gè)其他帶有長度單位的數(shù)字呢, 那么他就不會按項(xiàng)目本身來計(jì)算, 所以它不關(guān)心內(nèi)容, 只是把空間等比收縮和放大

現(xiàn)在你知道 flex: 1; 為什么能平分元素了吧, CSS 是一門很難學(xué)的語言, 雖然我經(jīng)過不斷試驗(yàn)得出結(jié)果, 但是它還有好多莫名其妙的問題去等你發(fā)現(xiàn). 比如 margin: auto 為什么會實(shí)現(xiàn)居中, overflow: hidden 為何能實(shí)現(xiàn) BFC

你可以遵從官方標(biāo)準(zhǔn), 也可以和我一樣去實(shí)驗(yàn)性的看待 flex: 1;

不過我建議你別深究這些問題, 因?yàn)樗娂此? 它這樣能實(shí)現(xiàn)效果就可以了, CSS 學(xué)習(xí)是沒必要刨根問底的, 會用就是最好的證明, 以上僅為個(gè)人見解, 如有疑問請給我留言或私信

總結(jié)

以上是生活随笔為你收集整理的什么时候会是用treeset?_flex:1 到底代表什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。