CSS 高級佈局技巧

来源:http://www.cnblogs.com/ZachChan/archive/2016/12/15/6182833.html
-Advertisement-
Play Games

用 :empty 區分空元素 相容性:不支持 IE8 Demo 假如我們有以上列表: <div class="item">a</div> <div class="item">b</div> <div class="item"></div> 我們希望可以對空元素和非空元素區別處理,那麼有兩種方案。 用 ...


用 :empty 區分空元素

相容性:不支持 IE8

Demo

假如我們有以上列表:

<div class="item">a</div>
<div class="item">b</div>
<div class="item"></div>

  

我們希望可以對空元素和非空元素區別處理,那麼有兩種方案。

用 :empty 選擇空元素:

.item:empty {
  display: none;
}

  

或者用 :not(:empty) 選擇非空元素:

.item:not(:empty) {
  border: 1px solid #ccc;
  /* ... */
}

  

用 :*-Of-Type 選擇元素

相容性:不支持 IE8

舉例說明。

給第一個 p 段落加粗:

p:first-of-type {
  font-weight: bold;
}

  

給最後一個 img 加邊框:

img:last-of-type {
  border: 10px solid #ccc;
}

  

給無相連的 blockquote 加樣式:

blockquote:only-of-type {
  border-left: 5px solid #ccc;
  padding-left: 2em;
}

  

讓奇數列的 p 段落先死紅色:

p:nth-of-type(even) {
  color: red;
}

  

此外,:nth-of-type 還可以有其他類型的參數:

/* 偶數個 */
:nth-of-type(even)

/* only 第三個 */
:nth-of-type(3)

/* 每第三個 */
:nth-of-type(3n)

/* 每第四加三個,即 3, 7, 11, ... */
:nth-of-type(4n+3)

  

用 calc 做流式佈局

相容性:不支持 IE8

Demo

左中右的流式佈局:

nav {
  position: fixed;
  left: 0;
  top: 0;
  width: 5rem;
  height: 100%;
}

aside {
  position: fixed;
  right: 0;
  top: 0;
  width: 20rem;
  height: 100%;
}

main {
  margin-left: 5rem;
  width: calc(100% - 25rem);
}

  

用 vw 和 vh 做全屏滾動效果

相容性:不支持 IE8

Demo

vw 和 vh 是相對於 viewport 而言的,所以不會隨內容和佈局的變化而變。

section {
  width: 100vw;
  height: 100vh;
  
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
}

section:nth-of-type(1) {
  background-image: url('https://unsplash.it/1024/683?image=1068');
}
section:nth-of-type(2) {
  background-image: url('https://unsplash.it/1024/683?image=1073');
}
section:nth-of-type(3) {
  background-image: url('https://unsplash.it/1024/683?image=1047');
}
section:nth-of-type(4) {
  background-image: url('https://unsplash.it/1024/683?image=1032');
}

body {
  margin: 0;
}
p {
  color: #fff;
  font-size: 100px;
  font-family: monospace;
}

  

用 unset 做 CSS Reset

相容性:不支持 IE

Demo

body {
  color: red;
}
button {
  color: white;
  border: 1px solid #ccc;
}

/* 取消 section 中 button 的 color 設置 */
section button {
  color: unset;
}

  

用 column 做響應式的列佈局

相容性:不支持 IE9

Demo

nav {
  column-count: 4;
  column-width: 150px;
  column-gap: 3rem;
  column-rule: 1px dashed #ccc;
  column-fill: auto;
}

h2 {
  column-span: all;
}

  作者:sorrycc    原文地址:https://github.com/sorrycc/blog/issues/14


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

-Advertisement-
Play Games
更多相關文章
  • 一、jQuery MobilejQuery Mobile 是jQuery在移動設備上的版本,做為主要針對移動設備的框架來說,它提供一個移動設備平臺統一的介面來相容不同的移動平臺,其特性包括:1.簡單易用2.漸進增強和優雅降級3.Accessibility4.小規模5.主題設置6.跨平臺學習容易,資料... ...
  • 公司里的項目由於發展較快,很多東西都沒有好好梳理一下,以至於有很多的潛在的問題。 最近就遇到了一個比較坑的問題。datepicker 有兩個插件庫中的datepicker插件比較有名。一個是jQuery-UI,一個是bootstrap。兩個的api網址分別是 然而在項目中很不巧的兩個庫都用到了。然後 ...
  • JavaScript的自動垃圾收集機制 執行環境會負責管理代碼執行過程中使用的記憶體,編寫JavaScript程式時,所需記憶體的分配以及無用記憶體的回收完全實現自動管理。 原理: 找出那些不再繼續使用的變數,然後釋放其占用的記憶體。為此,垃圾收集器會按照固定的時間間隔(或代碼執行中預定的收集時間)周期性地 ...
  • 前言聲明: 本文這是作者隨筆,文筆隨(tai)意(cha),顧如有不嚴謹之處,歡迎指出(求不打臉)。 在某人際關係app上看到一道題: 當然,每個人可能都有自己的答案,作為程式員,我給了以下答案,不是最佳。 ************************* Fen Ge Xian ******** ...
  • <! TOC "FEE Development Essentials" "JS Basic" "function" "call() and apply()" "func1.bind(thisObj,arg1...argn)" "Custom object" "prototype" "Serializ ...
  • 第一種: function Person() { this.username = new Array(); this.password = "123"; } Person.prototype.getInfo = function() { alert(this.username + ", " + th ...
  • ie6對hover相容性問題的解決: 1,在body里添加以下樣式: behavior:url(../scripts/csshover.htc); csshover.htc可直接在網上下載 2,js解決 判斷是否為ie6 window.onload=function(){ var isIE=!!wi ...
  • 效果圖: 點擊菜單 中英文切換 css樣式: .top-nav { font-size: 12px; font-weight: bold; list-style: none; border-bottom: 8px solid #DC4E1B; overflow: auto; //去浮動,使下級的浮動 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...