flexbox的應用

来源:https://www.cnblogs.com/small-coder/archive/2018/05/30/9111969.html
-Advertisement-
Play Games

2009年, 就已經出現,但是直到IE11的發佈,全部的主流瀏覽器才統一支持新的用法 。 這裡只說應用,瀏覽器的相容處理會附在文章的末尾。 起步 在現代主流瀏覽器中,只需要給一個元素加上一行 就可以讓他擁有彈性佈局的魔力。 軸的方向 定義了主軸的方向,在html中,預設值是 ,即子元素橫向排列,但是 ...


2009年,display: box 就已經出現,但是直到IE11的發佈,全部的主流瀏覽器才統一支持新的用法display: flex
這裡只說應用,瀏覽器的相容處理會附在文章的末尾。

起步

在現代主流瀏覽器中,只需要給一個元素加上一行display: flex就可以讓他擁有彈性佈局的魔力。

軸的方向

flex-direction 定義了主軸的方向,在html中,預設值是 row,即子元素橫向排列,但是在微信小程式中,預設值是 column(縱向排列)。

  • 主軸與側軸 flex-direction: row時,
.div1{display: flex; flex-direction: row}
.div1 > div // 從左到右排列
————————
口  口  口  口

.div2{display: flex; flex-direction: column}
.div2 > div // 從上到下排列
————————
口  
口  
口  
口

flexbox預設是不會換行的,如果不想全部的子元素都擠在同一行,需要加上這樣的屬性

.div1{display: flex; flex-direction: row; flex-wrap: wrap}
.div1 > div // 從左到右排列,占滿一行會換行
———————
口  口  口  口
口  口

.div2{display: flex; flex-direction: column; flex-wrap: wrap}
.div2 > div // 從上到下排列,占滿一列會換行
——————————
| 口 口 
| 口 口 
| 口  
| 口

對齊

justify-content 屬性定義如何分配容器 主軸 上多個子元素之間的空間。

  • 如果是 flex-direction: column , 旋轉屏幕90°看效果。

居中

居中使用align-items 屬性,定義側軸上的空間分配,大部分參數和 justify-content 相同(不能使用space-between和space-around)。把屏幕旋轉90°就可以看到效果了。

使用剩餘空間

flex 屬性定義在子元素上,規定它如何使用剩餘的空間。

.div1{width: 1000px}
.div1 > .div2{
    width: 300px;
}
.div1 > .div3{flex: 1} // div3寬度為700px

_______div1(1000px)_________
|__div3(700px)__|___div2___|
____________________________

flex佈局的應用

上下定高,中間高度自適應

<!--css代碼-->
html, body{height: 100%}
.page{display: flex; flex-direction: column}
.header{height: 44px}
.content{flex: 1}
.footer{height: 44px}
<!--結構-->
<html>
    <body>
        <main class='page'>  
            <header class='header'></header>
            <div class='content'></div>
            <footer class='footer'></footer>
        </main>
    </body>
</html>
<!--page示意圖-->
————————————
    .header(44px)
————————————
-
-
-
-
-
.content(視口高度減去88px)
-
-
-
-
-
————————————
     .footer(44px)
————————————

圖文混排,圖片定寬,文字自適應

<!--css代碼-->
.card{width: 300px; display: flex}
.img{width: 100px}
.content{
    flex: 1; 
    display: flex; 
    flex-direction: column;
    justify-content: space-around;
}
<!--結構-->
<div class='card'>  
    <div class='img'></div>
    <div class='content'>
        <div class='title'></div>
        <div class='tag'></div>
        <div class='footer'></div>
    </div>
</div>

子元素水平、垂直居中

<!--css代碼-->
.div{width: 300px; height: 300px;display: flex}
.div1{margin: auto}
<!--結構-->
<div class='div'>  
    <div class='div1'></div>
</div>

flex相容性處理

以下設置可以相容大部分主流瀏覽器,比如IE10,android4,ios5

部分css代碼來自白色橡樹博客,原地址找不到,在此表示感謝

  • 定義為flexbox
.flex{
    display:-webkit-box;
    display:-webkit-flex;
    display:-ms-flexbox;
    display:flex;
}
  • 定義為縱軸排列
.flex-v{
    -webkit-box-orient:vertical;
    -webkit-flex-direction:column;
    -ms-flex-direction:column;
    flex-direction:column;
}
  • 子元素垂直居中
.align-center{
    -webkit-box-align:center;
    -webkit-align-items:center;
    -ms-flex-align:center;
    align-items:center;
}
  • 子元素兩端對齊
.pack-justify{
    -webkit-box-pack:justify;
    -webkit-justify-content:space-between;
    -ms-flex-pack:justify;
    justify-content:space-between;
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Rx,Reactive Extension,源於微軟,火於NetFlix。 線上編輯器jsbin. CDN:https://unpkg.com/rxjs/bundles/rxjs.umd.min.js Rx理解:把任何變化想象成依據事件緯度變化的事件流 一、rxjs改造輸入框 rxjs庫 把inpu ...
  • 關於Rollup rollup是一款用來es6模塊打包代碼的構建工具(支持css和js打包)。當我們使用ES6模塊編寫應用或者庫時,它可以打包成一個單獨文件提供瀏覽器和Node.js來使用。 它的優點有如下: 能組合我們的腳本文件。 移除未使用的代碼(僅僅使用ES6語法中)。 ... ...
  • 1 2 (function (window, document, undefined) { 3 var hearts = []; 4 window.requestAnimationFrame = (function () { 5 return window.requestAnimationFrame... ...
  • 一、Selenium 簡介 Selenium是ThroughtWorks公司一個強大的開源Web功能測試工具系列,提供一套測試函數,用於支持Web自動化測試。函數非常靈活,能夠完成界面元素定位、視窗跳轉、結果比較。他支持IE、Firefox、Safari、Chrome、Android手機瀏覽器,也支 ...
  • Vue2原生始輪播圖組件,支持寬度自適應、高度設置、輪播時間設置、左右箭頭按鈕控制,圓點按鈕切換,以及箭頭、圓點按鈕是否顯示。 ...
  • 加入繪製字母 ...
  • #########################################################################################Node.js 事件迴圈Node.js 是單進程單線程應用程式,但是因為 V8 引擎提供的非同步執行回調介面,通過這些介面可 ...
  • My97DatePicker是一個非常優秀的日曆插件,不僅支持多種調用模式,還支持日期範圍限制。 常規的調用比較簡單,如下所示: 1 <input class="Wdate" id="d1" onclick="WdatePicker()" /> 下麵重點說明日期範圍限制: 1)靜態限制 你可以給通過 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...