91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么掌握CSS工具Flexbox

發布時間:2021-11-06 16:20:54 來源:億速云 閱讀:225 作者:iii 欄目:web開發

本篇內容主要講解“怎么掌握CSS工具Flexbox”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么掌握CSS工具Flexbox”吧!

隨著CSS網格布局的引入,你可能會問flexbox布局是否真的還有必要。雖然它們所能做的事情有一些重疊,但其各自在CSS布局中有著非常特別的目的。一般來說,flexbox在一維場景(比如,一串類似的元素)下有最佳應用,而網格是二維場景下理想的布局方案(例如整個頁面的元素)。

即便如此,flexbox仍可以用于整個頁面的布局,這樣它能為那些還不支持網格布局的瀏覽器提供合適的兼容處理。(必須承認,網格布局正在大多數現代瀏覽器中快速得到支持,不過對flexbox的支持仍然更為廣泛,所以如果你想讓你的布局在稍微老舊的瀏覽器中也生效,使用flexbox作為網格布局的降級方案是很容易的)。

使用Flexbox的好處

flexbox的一些好處是:

  • 頁面元素能被任意方向地放置(靠左、靠右、從上往下甚至從下往上)

  • 布局內容的可視順序能夠被反轉或重排

  • 元素大小能“彈性”適應可用空間,并根據容器或者兄弟元素進行相應地對齊

  • 能輕松實現等列寬布局(與每一列里面的內容無關)

為了闡述其多樣的屬性和可能性,讓我們假設下面有這樣的布局用例:

<div class="example">
  <header>
    header content here
  </header>
  <main class="main">
    <nav>
      nav content here
    </nav>
    <div class="content">
      main content here
    </div>
    <aside>
      aside content here
    </aside>
  </main>
  <footer>
    footer content here
  </footer>
</div>

首先,是把元素一起放進.main里,比如,<nav>和<aside>。如果沒有flexbox,我們可能會把三個元素全部進行浮動,但想讓它按理想的方式工作顯得并不直觀。而且,按傳統的方式做這件事會出現一個眾所周知的問題:每一列僅僅和它的內容一樣高。因此,你可能需要把三個元素都設置為統一的高度。

讓flexbox來救場吧。

讓我們Flex

flexbox的要點是出現在display屬性上的flex值,它需要被設置在容器元素上。如此設置會讓它的子元素變成“彈性項目(flex item)”。這些彈性項目擁有一些易于使用的默認屬性。比如,它們被緊挨著放置,那些沒有特別指明寬度的元素自動占滿了剩余的空間。

因此,如果你給.main設置了display:flex,它的子元素.content就被自動擠在<nav>和<aside>之間。不需要再多余的計算,多么方便是吧?作為附加獎賞,所有三個元素神奇地擁有了相同的高度。

.main {
  display: flex;
}

請查看下面的例子,包含了所有的細節

項的順序:Flebox的****order****屬性

另外一個flexbox的能力,是能夠輕松改變元素的顯示順序。讓我們假設你為一個客戶制作了上面的布局,而她現在想要.content出現在<nav>之前。

通常,你需要深入到HTML源碼中去,在那里改變元素的順序。而有了Flexbox,你可以完全使用CSS完成這項任務。只需把.content的order屬性設置為-1,那么這一列就會出現在前面,這本例就是最左邊。

.main {
  display: flex;
}
 
.content {
  order: -1;
}

本例中,你不需要改變其他列的order。例子在 flexbox-demo-2 。

如果你傾向于顯式地為每一列指定order,你可以將.content的order設為1,把<nav>的order設為2,把<aside>的設為3。

HTML源碼獨立于CSS的Flexbox樣式

但你的客戶并不滿足。她想讓<footer>成為頁面的第一個元素,顯示在<header>之前。那好,同樣的,flexbox是你的朋友(雖然像在此例中,可能你得跟你的客戶好好談談,而不是跟隨指示)。因為你不僅要重排列內部元素,還要重排外部的,display:flex規則將被設置在<div class=”example”>之上。注意這里是如何在頁面中嵌套使用flex容器來達到你想要的效果的。

因為<header>,<main class=”main”>和<footer>相互堆疊著,你需要首先設置一個垂直上下文,它能夠通過設置flex-direction:column來快速完成。還有,<footer>的order被設置為-1,如此一來它就出現在頁面的最上頭。就這么簡單。

.example {
  display: flex;
  flex-direction: column;
}
 
footer {
  order: -1;
}

所以,如果你想把一行元素修改為一列,或者相反,你可以使用flex-direction屬性,并設置它相應地為column或row(row是默認值)。

然而,強大的能力也到來了更多的責任:謹記,一些用戶可能會使用鍵盤來導航你的基于flexbox的網站,如果你HTML源碼中元素的順序和屏幕上顯示的有所出入,那么無障礙訪問的能力就成為需要認真對待的問題。

如何在Flexbox中對齊子項

Flexbox能非常直觀地處理子項的水平對齊和垂直對齊。

你可以使用align-items對flex容器中的所有子項設置統一的對齊。如果你想給個別元素設置不同的對齊方式,使用align-self。元素的對齊方式跟它所在父容器的flex-direction有關。如果它的值是row(意味著元素水平排列),對齊方式是指在垂直軸上。如果flex-direction被設置為column(意味著元素垂直排列),對齊方式就是指在水平軸上。

例如,你讓一些元素在容器中分別有不同的對齊方式,你需要:

設置每個元素的align-self屬性為合適的值。可能的值有:center,stretch(元素撐滿它的容器),flex-start,flex-end和baseline(元素被放置在父容器的baseline上)

把容器元素設置為display:flex

最后,注意父容器的flex-direction屬性,因為它關系到子元素的對齊方式。

.example {
  display: flex;
  flex-direction: column;
}
 
.red {
  align-self: center;
}
 
.blue {
  align-self: flex-start;
}
 
.pink {
  align-self: flex-end;
}

試試在下面的例子中,把父容器的flex-direction在row和column之間切換,看看它們引起的實時變化。

如果想要容器中所有的元素有統一的對齊方式,你可以在容器上使用align-items。可以的值有center,flex-start,flex-end,stretch(默認值:子項被拉伸以適應它們的容器)和baseline(子項被放置在父容器的baseline上)。

.example {
  display: flex;
  align-items: center;
}

像往常一樣,試著把父容器的flex-direction在row和column之間切換,看看它們如何影響著你設置align-items值時所發生的作用。

在Flexbox里兩端對齊

另一個控制對齊的屬性是justify-content,當你想讓多個元素等分空間時非常有用。

可接受的值有:center,flex-start,flex-end, space-between(元素利用主軸之間的空間而排布)和space-around(元素利用主軸之前、之間和之后的空間而排布)。

例如,在之前你一直使用的簡單HTML模板里,你可以在<main>里找到三個元素:<nav>,.content和<aside>。之前,它們都被擠在頁面的左邊。如果你想讓它們之間有一些空間,但是不讓第一個元素的左邊有空間,也不想讓最后一個元素的右邊有空間,你可以把.main(即它們的父容器)里的justify-content設置為space-between。

.main {
  display: flex;
  justify-content: space-between;
}

也試一下設置為space-around,觀察不同的結果。

Flexbox中彈性子項的大小

使用flex屬性,你能夠對照flex容器中其他元素來控制彈性子項的大小。

這個屬性是以下獨立屬性的簡寫:

flex-grow:一個數字,指明元素如何相對其他flex項來拉伸

flex-shrink:一個數字,指明元素如何相對其他flex項來收縮

flex-basis:元素的長度。可接受的值有:auto,inherit或者一個數字后面緊跟著%,px,em或其他長度單位。

例如,想得到三個等寬的列,只需給每一列設置flex:1,其他什么都不用做:

nav, aside, .content {
  flex: 1;
}

如果你需要.content占據<nav>和<aside>的兩倍寬,那么就把.content設為flex:2,讓其他兩個為1。

那僅僅是對flex屬性最簡單的應用。同樣可以設置flex-grow,flex-shrink和flex-basis這些值。

到此,相信大家對“怎么掌握CSS工具Flexbox”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五家渠市| 斗六市| 图木舒克市| 平湖市| 昭觉县| 类乌齐县| 沙雅县| 富民县| 涞源县| 萝北县| 和龙市| 泸州市| 湖口县| 清新县| 兰考县| 额济纳旗| 黄陵县| 涪陵区| 怀仁县| 信宜市| 巴里| 广东省| 丰宁| 扎赉特旗| 文昌市| 波密县| 库尔勒市| 皮山县| 黎城县| 安阳市| 昭觉县| 左贡县| 正安县| 崇信县| 喜德县| 嘉祥县| 遵化市| 罗平县| 松溪县| 垣曲县| 茂名市|