日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

聊聊 CSS 實(shí)現(xiàn)自適應(yīng)導(dǎo)航欄

來源: 責(zé)編: 時(shí)間:2023-10-23 17:05:33 267觀看
導(dǎo)讀在移動(dòng)端應(yīng)用中,經(jīng)常會(huì)碰到這樣的導(dǎo)航欄,導(dǎo)航欄左邊通常是一個(gè)返回按鈕,中間是標(biāo)題,右邊是工具欄,如下:圖片值得注意的是,右側(cè)的工具欄是不固定的,有可能有多個(gè),也有可能沒有,并且中間的標(biāo)題是整體居中的,如果標(biāo)題過長(zhǎng),還能出現(xiàn)省

在移動(dòng)端應(yīng)用中,經(jīng)常會(huì)碰到這樣的導(dǎo)航欄,導(dǎo)航欄左邊通常是一個(gè)返回按鈕,中間是標(biāo)題,右邊是工具欄,如下:Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

值得注意的是,右側(cè)的工具欄是不固定的,有可能有多個(gè),也有可能沒有,并且中間的標(biāo)題是整體居中的,如果標(biāo)題過長(zhǎng),還能出現(xiàn)省略號(hào),各種適應(yīng)場(chǎng)景如下:Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

一、兩種不完美實(shí)現(xiàn)

假設(shè)布局是這樣的:Pr828資訊網(wǎng)——每日最新資訊28at.com

<appbar>  <tool>    <a class="icon back"></a>  </tool>  <h2 class="title">我是標(biāo)題</h2>  <tool class="right">    <a class="link">規(guī)則</a>  </tool></appbar>

很多同學(xué)可能會(huì)直接用 flex 布局讓標(biāo)題自動(dòng)填充剩余空間,然后設(shè)置文本居中。Pr828資訊網(wǎng)——每日最新資訊28at.com

appbar{  display: flex}.title{  flex: 1;  text-align: center;}

這種布局在左右功能區(qū)寬度差不多的時(shí)候還好,看著像居中的,一旦右邊的寬度差異很大,就看著不居中了。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

還有一種是絕對(duì)定位,可以實(shí)現(xiàn)整體居中。Pr828資訊網(wǎng)——每日最新資訊28at.com

.title{  position: absolute;  left: 0;  right: 0;  text-align: center;}

但是,一旦文本過長(zhǎng),就會(huì)和左右的功能區(qū)發(fā)生重疊,如下:Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

那么,有沒有辦法可以同時(shí)滿足這兩種情況呢?Pr828資訊網(wǎng)——每日最新資訊28at.com

下面介紹兩個(gè)方法Pr828資訊網(wǎng)——每日最新資訊28at.com

二、flex 布局實(shí)現(xiàn)

還是前面的 flex 布局,相信大家都用過flex:1這樣的屬性,它可以讓子元素平均分配剩余空間。Pr828資訊網(wǎng)——每日最新資訊28at.com

.item{  flex: 1}

如果有3個(gè)子元素,那么就會(huì)平分為3等分。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

如果僅僅設(shè)置左右兩邊的flex:1,中間寬度不設(shè)置,那么中間部分的寬度就自適應(yīng)內(nèi)容寬度,由于兩邊寬度相等,「因此中間的文本看著就是整體居中的」。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

當(dāng)左右空間不足以均分剩余空間時(shí),會(huì)自動(dòng)壓縮另一個(gè)空間。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

直到中間部分不足以放下文本內(nèi)容,出現(xiàn)省略號(hào)。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

按照這個(gè)原理,先將左右兩邊設(shè)置平均分布。Pr828資訊網(wǎng)——每日最新資訊28at.com

tool{  flex:1;}

這樣標(biāo)題就是整體居中的了。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

然后,只需要將右邊菜單居右展示就行了,比如用flex中的justify-content。Pr828資訊網(wǎng)——每日最新資訊28at.com

.right{  display: flex;  justify-content: end;}

這樣就就可以很輕松的實(shí)現(xiàn)文章開頭的效果。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

完整代碼可以查看:Pr828資訊網(wǎng)——每日最新資訊28at.com

  • CSS Appbar flex (juejin.cn)[1]
  • CSS Appbar flex (codepen.io)[2]

三、grid 布局實(shí)現(xiàn)

grid 布局也能和能輕易的實(shí)現(xiàn)這種效果,原理也基本一致。Pr828資訊網(wǎng)——每日最新資訊28at.com

和flex中的flex:1比較類似的是,grid中也有一個(gè)單位也能做到均等分布的效果,那就是1fr。Pr828資訊網(wǎng)——每日最新資訊28at.com

div{  display: grid;  grid-template-columns: 1fr auto 1fr;}

這樣3個(gè)子容器,中間是自適應(yīng)寬度,左右是自動(dòng)等分的。Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

原理和前面相同,這里就不重復(fù)了,關(guān)鍵實(shí)現(xiàn)如下:Pr828資訊網(wǎng)——每日最新資訊28at.com

appbar{  display: grid;  grid-template-columns: 1fr auto 1fr;}.right{  justify-content: end;}

這樣也能實(shí)現(xiàn)我們想要的效果:Pr828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Pr828資訊網(wǎng)——每日最新資訊28at.com

完整代碼可以查看:Pr828資訊網(wǎng)——每日最新資訊28at.com

  • CSS Appbar grid (juejin.cn)[3]
  • CSS Appbar grid (codepen.io)[4]

四、總結(jié)一下

這樣一個(gè)實(shí)用的布局小技巧,你學(xué)到了嗎?下面總結(jié)一下:Pr828資訊網(wǎng)——每日最新資訊28at.com

  1. 移動(dòng)端導(dǎo)航欄一般都是標(biāo)題整體居中的,并且右側(cè)的工具欄是不固定的
  2. 傳統(tǒng)的標(biāo)題flex自適應(yīng)和絕對(duì)定位都有一定的局限性
  3. 在剩余空間充足情況下, flex:1可以讓左右兩邊布局尺寸相同,這樣中間標(biāo)題看著就是居中的了
  4. 在剩余空間不足情況下,中間標(biāo)題空間會(huì)撐滿剩余空間,超長(zhǎng)則出現(xiàn)省略號(hào)
  5. grid 和 flex 原理相同,有一個(gè)1fr單位也可以做到均等分布的效果

本文鏈接:http://www.www897cc.com/showinfo-26-14575-0.html聊聊 CSS 實(shí)現(xiàn)自適應(yīng)導(dǎo)航欄

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Golang數(shù)組:全面指南與實(shí)際示例

下一篇: 通過Spring MVC 實(shí)現(xiàn) Restful 風(fēng)格請(qǐng)求支持

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 阳朔县| 阿克苏市| 万年县| 赤峰市| 长岭县| 聂荣县| 称多县| 宝坻区| 德清县| 曲麻莱县| 林芝县| 砚山县| 黄梅县| 加查县| 江门市| 余江县| 阳曲县| 安乡县| 抚远县| 历史| 繁昌县| 富平县| 富阳市| 潼关县| 双鸭山市| 叙永县| 通州区| 芜湖县| 铜鼓县| 龙川县| 新竹县| 兴隆县| 突泉县| 枣庄市| 新建县| 兴国县| 凌海市| 萍乡市| 喀喇| 开封市| 辽宁省|