国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用CSS Flexbox 構(gòu)建可靠實用的網(wǎng)站 Header

開發(fā) 架構(gòu)
在 CSS3 沒有普及的時候,創(chuàng)建一個網(wǎng)站 header 是一項既可怕又困難的任務(wù) ?

 [[360340]]

本文已經(jīng)過原作者 Shadeed 授權(quán)翻譯。

在 CSS3 沒有普及的時候,創(chuàng)建一個網(wǎng)站 header 是一項既可怕又困難的任務(wù) ?。那時,F(xiàn)lexbox 還是個新東西,我們不得不使用老方法,比如 float和clearfix技術(shù)。今天,情況完全不同了,F(xiàn)lexbox 得到了廣泛的支持,大大的減少了我們的開發(fā)工作,同時也為我們提供了更多的可能性。

有人可能會說,現(xiàn)在 CSS3 這么普及,制作一個網(wǎng)站 header 不是很容易么 ??并非如此,因為有一些有趣的挑戰(zhàn)需要解決,在本文中我們會介紹其中的幾種。

簡介首先,這里所說的網(wǎng)站 Header 是用戶訪問網(wǎng)站時首先看到的內(nèi)容之一。通常,它包含logo或網(wǎng)站名稱以及導(dǎo)航鏈接,如下所示:

 

不管 Header 的視覺設(shè)計如何,關(guān)鍵元素都是logo 和導(dǎo)航。

Flexbox

當(dāng) flexbox 應(yīng)用于 Header 元素時,它將使所有子項目在同一行中。然后,你所需要做的就是應(yīng)用justify-content來分配它們之間的間距。

html

 

  1. <header class="site-header"
  2.   <a href="#" class="brand">Brand</a> 
  3.   <nav class="nav"></nav> 
  4. </header> 

 

css

  1. .site-header { 
  2.   display: flex; 
  3.   justify-content: space-between
  4.   align-items: center; 

很簡單,對吧?對于這樣的用例,是的,可能會比這更復(fù)雜。

Header Wrapper

在上面的 lago 和 nav 外沒有包含一層 wrapper,這在大屏幕可能會出現(xiàn)問題。

 

從上可以看到第一個Header太寬了,因為它沒有內(nèi)部 wrapper 相比第一個,第二個看起來好多了。所以,我們可以對 HTML 進行如下調(diào)整。

 

 

flexbox應(yīng)該移動到.site-header__wrapper元素中。

  1. .site-header__wrapper { 
  2.   display: flex; 
  3.   justify-content: space-between
  4.   align-items: center; 

使用 flex-wrap當(dāng)屏幕很小的時候,可以水平滾動。見下圖

 

如果沒有設(shè)置flex-wrap: wrap,當(dāng)屏幕過小的時候就會出現(xiàn)水平滾動,如果不想這樣,可以加上 flex-wrap: wrap` ?。

Header 的多種形式

我喜歡使用flexbox的原因是它可以很容易地處理 header 設(shè)計的多種變化。基于前面的 header 設(shè)計,我擴展了 header 元素的一些選項,如添加按鈕、搜索輸入和更改子項目的順序。

Header 變化 1

 

假設(shè)我想要在導(dǎo)航鏈接旁邊添加了一個按鈕。這應(yīng)該如何處理?我們應(yīng)該把它作為鏈接添加到導(dǎo)航欄中嗎?還是應(yīng)該和導(dǎo)航分開?我更喜歡這樣做。

 

 

這種情況下,我們不能在用 justify-content: space-between來處理間隙,相反,我會在 nav 元素上使用 margin-left: auto,

這樣,它就會自動向右靠齊。

 

將導(dǎo)航和 track 按鈕分開對于移動設(shè)備非常有用,因為我們需要保留該按鈕并在其旁邊顯示一個移動切換按鈕。

 

Header 變化 2

 

與第一個變化類似,這個變化增加了一個搜索輸入,占用了剩余的可用空間。對于flexbox,這可以通過使用flex屬性來實現(xiàn)。

html

  1. <header class="site-header"
  2.   <div class="wrapper site-header__wrapper"
  3.     <a href="#" class="brand"><img src="logo.svg" alt="brand" /></a> 
  4.     <div class="search"></div> 
  5.     <nav class="nav"></nav> 
  6.     <a href="/track-shipment" class="button">Track</a> 
  7.   </div> 
  8. </header> 

 

css

  1. .search { 
  2.   flex: 1; 

現(xiàn)在,搜索輸入將填充 brand 和nav 之間的可用空間。但是,這有一些限制。在較小的視口上,header 將如下所示:

 

搜索輸入寬度不應(yīng)小于此寬度,因為這樣很難輸入和查看全文。下面有兩種解決方案:

 

我更喜歡第二種解決方案,因為它不會過早隱藏導(dǎo)航。一般來說,如果元素不影響布局,我會盡量避免隱藏它。

Header 變化 3

 

對于這個示例,HTML標(biāo)記是相同的,但是 header 里的元素順序是不同的。我們?nèi)绾尾拍茏龅竭@一點? 你可能想到用 order 屬性來解決這個問題 ?

html

  1. <header class="site-header"
  2.   <div class="wrapper site-header__wrapper"
  3.     <a href="#" class="brand"><img src="logo.svg" alt="brand" /></a> 
  4.     <nav class="nav"></nav> 
  5.     <a href="/track-shipment" class="button">Track</a> 
  6.   </div> 
  7. </header> 

 

css

  1. .site-header { 
  2.   display: flex; 
  3.   justify-content: space-between
  4.  
  5. .nav { 
  6.   order: -1; 

 

這樣有個問題,間隔空間不會使 logo 居中,它只是分散項目之間的空間。

解決方案是給每個子項一個flex: 1,這將在它們之間分配可用空間。

  1. .brand, 
  2. .nav, 
  3. .button { 
  4.   flex: 1; 

 

這樣,由于flex: 1,按鈕元素變寬了, 解決此問題的唯一方法是將其包裹到另一個元素中。

HTML

  1. <header class="site-header"
  2.   <div class="wrapper site-header__wrapper"
  3.     <a href="#" class="brand"><img src="logo.svg" alt="brand" /></a> 
  4.     <nav class="nav"></nav> 
  5.     <div class="button-wrapper"
  6.       <a href="/track-shipment" class="button">Track</a> 
  7.     </div> 
  8.   </div> 
  9. </header> 

 

這樣,我們就可以將下面的logo和按鈕居中。

.logo { text-align: center;}/* 不要介意這里的命名,這只是出于演示*/.button-wrapper { text-align: end; /* end 等同于LTR語言中的right */}

 

但是,如果添加了更多導(dǎo)航鏈接,這種方法很容易失敗。我們需要確保導(dǎo)航鏈接的數(shù)量不會超過特定的限制。下面一個logo偏離中心的例子 ?:

 

 


 

 

正如在上圖中看到的,logo沒有居中。所以要記住這一點,以避免這種意想不到的問題 ?。

使用 Flexbox 構(gòu)建 Header 的有用技巧flex-basis

如果某個元素需要在移動設(shè)備上占據(jù)整個寬度(不能隱藏的重要導(dǎo)航),我會使用flex-basis: 100% ?。


 

 

從上面的模型看,做起來可能很簡單。實際上不是。通常,header 可能有一個內(nèi)部間距(padding),當(dāng)我們強制某項占據(jù)全部寬度時,除非清除padding ,否則它不會生效。但是,刪除padding不切實際,因為它將影響設(shè)計中的其他元素 ?。

下面解決此問題的一種解決方法 ?:

  1. 將flex: 1 0 100%添加到導(dǎo)航元素。
  2. 如有需要,請更改其order。有時,可能還有其他元素,我們想確保導(dǎo)航是最后一個。
  3. 加上一個等于寬度等于 padding 的負(fù) margin,這也會讓導(dǎo)航占據(jù)整個寬度。
  4. 在導(dǎo)航中添加 padding,這會增加一些適當(dāng)?shù)目臻g。
  5. 最后,使用了justify-content: center將導(dǎo)航項居中(不重要)
  1. .nav { 
  2.   flex: 1 0 100%; /* [1] */ 
  3.   order: 2; /* [2] */ 
  4.   margin: 1rem -1rem -1rem -1rem; /* [3] */ 
  5.   padding: 1rem; /* [4] */ 
  6.   display: flex; /* [5] */ 
  7.   justify-content: center; /* [5] */ 

 

間距

著 Chrome 和 Firefox 支持flex gap屬性,現(xiàn)在在flex項目之間添加間距比以往任何時候都容易。考慮以下標(biāo)題


 

 

要做到上圖的高亮間距,只需將gap: 1rem添加到flex父節(jié)點。沒有了gap,我們還是需要用舊的方式來間隔 ?。

  1. /* 老的方式 */ 
  2. .brand { 
  3.   margin-right: 1rem; 
  4.  
  5. .sign-in { 
  6.   margin-right: 1rem; 
  7.  
  8. /* 新的方式 */ 
  9. .site-header { 
  10.   /* Other flexbox styles */ 
  11.   gap: 1rem; 

作者:Shadeed 譯者:前端小智 來源:ishadeed原文:https://ishadeed.com/article/website-headers-flexbox/

 本文轉(zhuǎn)載自微信公眾號「大遷世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系大遷世界公眾號。

 

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2017-10-10 15:52:17

前端FlexboxCSS Grid

2025-07-10 00:00:00

2021-10-12 15:00:00

Jekyll網(wǎng)站生成器開源

2017-07-10 13:09:45

前端Flexbox

2023-10-23 10:06:53

數(shù)據(jù)性能

2023-06-01 15:14:55

架構(gòu)Python微服務(wù)

2025-06-05 08:00:00

Go事件驅(qū)動系統(tǒng)編程

2022-11-14 11:41:13

SVG開發(fā)組件

2023-02-13 15:09:01

開發(fā)webCSS技巧

2022-07-21 07:05:13

粒子動畫CSS

2010-08-24 10:26:47

DIV+CSS

2024-12-12 08:55:25

CSS代碼模式

2023-12-19 13:31:00

CSS前端技巧

2010-08-27 10:12:53

CSS

2024-02-26 08:20:00

CSS開發(fā)

2020-10-26 08:06:59

網(wǎng)絡(luò)技巧CSS

2010-08-16 13:46:20

DIV+CSS

2010-09-14 17:33:55

DIV+CSS布局

2024-09-18 00:00:05

Grid場景技術(shù)

2021-05-11 08:30:54

前端css技術(shù)熱點
點贊
收藏

51CTO技術(shù)棧公眾號

精品日韩中文字幕| 久久久精品日本| 少妇高潮喷水久久久久久久久久| 亚洲日本国产| 欧美专区在线播放| 国产精久久久| 日韩精品极品视频| 九七电影韩国女主播在线观看| 国产精品入口麻豆原神| 成人性生活视频免费看| 久久九九99| 久久青青草综合| 国模大胆一区二区三区| 91视频九色网站| 无遮挡亚洲一区| 91九色02白丝porn| 国产精品视频99| 久久久久久久国产精品| 日韩有码视频在线| 亚洲爽爆av| xxxxxxxxx欧美| 午夜亚洲视频| 亚洲自拍偷拍第一页| 在线免费国产| 亚洲精品久久久蜜桃| 亚洲妇熟xx妇色黄| 午夜精品一区二区三区在线观看| 久久天天久久| 欧美高清在线视频观看不卡| 韩国毛片一区二区三区| 蜜桃成人免费视频| 国产高清视频一区| 亚洲一区在线日韩在线深爱| 国产精品草草| 黄色直播在线| 日韩电影中文字幕在线| 黄色免费看片| 校园春色综合| 欧美精品一区三区| 爽好久久久欧美精品| 日韩久久久久久久久久久久久| 亚洲v在线看| 亚洲精品一区国产精品| 91免费观看视频在线| 上原亚衣加勒比在线播放| 免费精品视频在线| 亚洲欧洲日韩综合二区| 四虎影院在线域名免费观看| 亚洲一区二区三区三| 91亚洲精品久久久| 国产做a爰片久久毛片| 欧洲一区二区三区精品| 制服国产精品| 国产精品国产三级国产aⅴ原创| av免费观看一区二区| 亚洲在线播放电影| youjizz亚洲| 91视频91自| 各处沟厕大尺度偷拍女厕嘘嘘| 国产亚洲欧美在线| 在线观看av资源| 欧美精品一区二区三区在线| 国产一区二区精品调教| 国产精品日韩精品| 七七婷婷婷婷精品国产| 成年人羞羞的网站| 日韩午夜在线观看| 激情亚洲另类图片区小说区| 国产精品日本一区二区| 成人精品一区二区三区中文字幕 | 妺妺窝人体色www在线观看| 亚洲一区二区美女| 蜜桃视频在线观看播放| 日本一本a高清免费不卡| 日韩国产欧美在线视频| 99热播在线观看| 成人av资源电影网站| 亚洲欧美国产精品桃花| 一区二区三区四区在线| 麻豆视频在线观看免费网站黄| 国产不卡av在线免费观看| 久久er精品视频| 中文在线最新版天堂8| 亚洲免费成人av电影| 欧美日韩水蜜桃| 国产香蕉一区二区三区| 亚洲电影在线免费观看| 日韩不卡免费高清视频| 亚洲最大福利视频| 中文字幕av不卡| 电影在线观看一区| 91最新在线免费观看| 国产欧美精品一区| 自拍亚洲图区| 国产精品黄页免费高清在线观看| а天堂中文在线官网| 91精品国产高清久久久久久91| 日韩激情在线观看| 免费黄色在线视频网站| 色综合天天狠天天透天天伊人| 久久综合激情| 久蕉依人在线视频| 国产精品99导航| 久久久久久久电影| 最新日韩一区| 天天做天天爱天天高潮| 欧美日韩国产成人在线免费| 精品99久久| 牛夜精品久久久久久久| 伊人伊人伊人久久| 精品一区二区三区视频在线观看| 日本在线www| 亚洲aⅴ男人的天堂在线观看| 成年男女免费视频网站不卡| 狠狠色综合欧美激情| 欧美日韩精品中文字幕| 精品国产一区二区三区成人影院 | 欧美一级在线看| 日韩一二三区视频| 99精品国产99久久久久久福利| 麻豆电影在线观看| 日韩av免费在线播放| 国产精品丝袜一区| 日韩三级av高清片| 97国产精东麻豆人妻电影| 亚洲аv电影天堂网| 久久中文在线| av毛片在线| 色综合久久88色综合天天提莫| 欧美精品色综合| 美女被久久久| 国产福利视频一区二区| 亚洲视频一区在线观看| 高清一区二区三区| 丝袜制服影音先锋| 国产精品久久色| 亚洲精品久久7777| 久久精品国产大片免费观看| 美女被人操视频在线观看| 91久久国产综合久久91精品网站| 日韩欧美a级成人黄色| 欧美日韩国产亚洲一区| 国产女人在线视频| 亚洲v国产v| 这里只有精品在线播放| 久久亚洲欧美国产精品乐播| 日韩欧美另类中文字幕| xx欧美撒尿嘘撒尿xx| 国产精品久久久久久久久久东京| 欧美日韩免费看| 日韩成人精品在线观看| 丝袜美腿诱惑一区二区三区| 亚洲激情久久久| 久久国产麻豆精品| 久久电影天堂| 4kfree性满足欧美hd18| 99re视频| 亚洲视频欧美视频| 中文字幕一区二区三区在线播放| 一区中文字幕电影| 最新亚洲人成网站在线观看| 久久这里精品国产99丫e6| 国产一区二区免费| 一区二区三区成人| 亚洲另类视频| 日本精品裸体写真集在线观看| 韩国中文字幕av| 国产欧美中文字幕| 亚洲成人久久电影| 国产日产欧美一区| 欧美特黄一区| 神马久久午夜| 亚洲欧美三级在线| 亚洲精品成人精品456| 亚洲每日在线| av国产精品| yourporn在线观看中文站| 中国女人做爰视频| 国产成人一区二区| 日韩美女av在线| 亚洲一区中文在线| 理论片日本一区| 人妖一区二区三区| 暖暖日本在线观看| 色婷婷狠狠18| 久久综合色一本| 久久久女女女女999久久| 欧美精品高清视频| 亚洲三级久久久| 国产精品一级黄| 欧美日韩网站| 欧美videos粗暴| 日本美女高清在线观看免费| 噼里啪啦国语在线观看免费版高清版| 国产成人精品免费视频大全最热 | 国产一区二区三区四| 亚欧洲精品视频在线观看| 亚洲激情文学| 亚洲综合在线网站| 五码日韩精品一区二区三区视频|