前端整理——css部分

来源:https://www.cnblogs.com/fangnianqin/archive/2019/01/02/10191278.html
-Advertisement-
Play Games

(1)盒模型(普通盒模型、怪異盒模型) 1、元素的content(內容)、padding(內邊距)、border(邊框)、margin(外邊距)構成了CSS盒模型 2、IE盒模型和W3C盒模型 1)IE盒模型是怪異模式下的盒模型,W3C盒模型是標準模式下的盒模型; 2)IE盒模型的width/hei ...


(1)盒模型(普通盒模型、怪異盒模型)

1、元素的content(內容)、padding(內邊距)、border(邊框)、margin(外邊距)構成了CSS盒模型
2、IE盒模型和W3C盒模型
1)IE盒模型是怪異模式下的盒模型,W3C盒模型是標準模式下的盒模型;
2)IE盒模型的width/height包含了content的width/heigh+padding+border
W3C盒模型的width/height只是content的width/height
3、CSS3中的box-sizing
不同的人有不同的習慣,在css3中增加了box-sizing:content-box(遵循W3C盒模型)| border-box(遵循ie盒模型)|inherit(該屬性的值從父元素繼承)

(2)如何讓元素水平居中

1、絕對定位實現水平垂直居中:

position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;

註意:
1>對父元素要使用 position: relative; 對子元素要使用 position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; 缺一不可。
2>如果只要垂直居中,可以不寫right: 0;left: 0;
margin: auto; 可以換成 margin-top: auto; margin-bottom: auto;
3>如果只需要水平居中,top: 0; bottom: 0; 可以省略不寫
margin: auto; 可以換成 margin-rihgt: auto; margin-left: auto; 。

2、確定高度的塊級元素居中:

position:absolute;
top:50%;
margin-top:(自身高度的值的一半的負值)

3、對不定高的div實現垂直居中
a、利用css3的彈性佈局實現
在父元素的css樣式中加入以下代碼:

display:flex;
justify-center:center;
align-items:center;

b、利用平移實現
在子組件中加入以下代碼:

position:relative:
left:50%;
top:50%;
transform:translate(-50%,-50%);
-weikit-transform: translate(-50%,-50%);

4、一段文本、一張圖片水平居中
text-content:center;
圖片是行內元素,在 ie, edge, chrome, firefox, opera 中對於 img 的預設顯示方式是: display: inline;
5)塊級元素水平居中,使用margin:auto;
6)單行文本垂直居中 ,讓height和line-height相等
註意:當box-sizing:content-box時,line-height和height相等;
當box-sizing:border-box時,line-height=height-(padding-top)-(padding-bottom)-(border-top)-(border-bottom)四個值,也就是說line-height等於content的有效高度。

(3)浮動&清浮動

1、是什麼浮動?
浮動的元素會脫離文檔流並向左/向右浮動,直到碰到父元素或者另一個浮動元素。
2、為什麼要清浮動?
浮動會導致父元素的高度塌陷。當父元素不設置高度,由內容撐開時,浮動元素脫離了文檔流,並不占據文檔流的位置,父元素就不能被撐開,也就沒有了高度。所以需要通過清浮動來解決父元素高度坍塌的問題。
3、清浮動的方式:
1)clear清除浮動
在浮動元素後面添加一個空的div,設置clear屬性為both。
clear屬性不允許被清除浮動的元素的左邊/右邊挨著浮動元素,原理在被清除浮動的元素上面或者下麵添加足夠的清除空間。
2)clear清除浮動的最佳實踐:利用偽類元素來清除有浮動的標簽
IE8和非ie瀏覽器才支持:after,相當於在該元素後面添加了一個空元素,利用clear:both清除浮動。zoom可解決ie6、ie7的浮動問題。

<div class="box clearfix">
    <div class="red"></div>
    <div class="green"></div>
</div>
<style>
.clearfix::after{ //向元素的內容之後添加新內容
    display: block;
    content:'';
    clear:both;
    visibility:hidden;
    height:0
}
.clearfix{  
    zoom:1;
}
</style>

3)父級div定義overflow:hidden
原理:必須要定義width或zoom:1,同時不能定義高,使用overflow:hidden時,瀏覽器會自動檢查浮動區域的高度。缺點:不能和position配合使用,因為超出的尺寸的會被隱藏。

(4)聖杯佈局和雙飛翼佈局

聖杯佈局和雙飛翼佈局都是三欄佈局,兩邊的盒子寬度固定,中間盒子寬度自適應。
1)聖杯佈局
寫結構時優先寫中間盒子,因為中間盒子優先被渲染,設置其自適應,寬度設為100%。中間欄放在文檔流前面以優先渲染。
註意:最好給body加一個最小寬度min-width
聖杯佈局有個問題,就是當面板的main部分比兩個子面板寬度小的時候,佈局就會亂掉。

<body>
   <div id="header">header</div>
   <div id="container">
       <div id="center">center</div>
       <div id="left">left</div>
       <div id="right">right</div>
   </div>
   <div id="footer">footer</div>
</body>
body{
   min-width:550px;
}
#header{
    background: black;
}
#footer{
    background: black;
    clear:both;
}
#center{
    background: pink;
    width:100%;
    float:left;
}
#left{
    background: greenyellow;
    width:200px;
    float:left;
    margin-left: -100%;
    position: relative;
    left:-200px;
}
#right{
    background: yellow;
    width:150px;
    float:left;
    margin-left:-150px;
    position: relative;
    right:-150px;
}
  #container{
      padding-left:200px;
      padding-right:150px;
  }

2)雙飛翼佈局

<body>
<div class="box">
    <div class="main">
        <div class="center">center</div>
    </div>
    <div class="left">left</div>
    <div class="right">right</div>
</div>
</body>
<style>
    *{margin:0;padding:0;}
    body{
        min-width:500px;
    }
    .main{
        width:100%;
        background: palevioletred;
        float:left;
    }
    .left{
        width:150px;
        background: greenyellow;
        float:left;
        margin-left:-100%;
    }
    .right{
        width:200px;
        background: yellow;
        float:left;
        margin-left:-200px;

    }
    .center{
        margin:0 200px 0 150px;
    }
</style>

https://www.zhihu.com/question/21504052/answer/50053054

聖杯佈局和雙飛翼佈局解決的問題是一樣的,就是兩邊頂寬,中間自適應的三欄佈局,中間欄要在放在文檔流前面以優先渲染。
聖杯佈局和雙飛翼佈局解決問題的方案在前一半是相同的,也就是三欄全部float浮動,但左右兩欄加上負margin讓其跟中間欄div併排,以形成三欄佈局。
不同在於解決”中間欄div內容不被遮擋“問題的思路不一樣:
聖杯佈局,為了中間div內容不被遮擋,將中間div設置了左右padding-left和padding-right後,將左右兩個div用相對佈局position: relative並分別配合right和left屬性,以便左右兩欄div移動後不遮擋中間div。
雙飛翼佈局,為了中間div內容不被遮擋,直接在中間div內部創建子div用於放置內容,在該子div里用margin-left和margin-right為左右兩欄div留出位置。
多了1個div,少用大致4個css屬性(聖杯佈局中間divpadding-left和padding-right這2個屬性,加上左右兩個div用相對佈局position: relative及對應的right和left共4個屬性,一共6個;而雙飛翼佈局子div里用margin-left和margin-right共2個屬性,6-2=4),個人感覺比聖杯佈局思路更直接和簡潔一點。
簡單說起來就是”雙飛翼佈局比聖杯佈局多創建了一個div,但不用相對佈局了“。


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

-Advertisement-
Play Games
更多相關文章
  • 配置:Android Studio3.2.0,gradle-4.6 ,windows10 在http://www.android-studio.org/完成下載工作,我下載的版本是3.2.0。之後一路安裝,最後沒有SDK的需要安裝一系列東西,準備開始創建第一個項目: application name ...
  • 問題: 執行cordova build android 出現輸出如下,編譯不成功。 ANDROID_HOME=/Users/huangenai/Library/Android/sdkJAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jd ...
  • 在小米8等一系列圓角的手機上測試項目時,發現我的自定義dialog無法全屏了,這時我的dialog全屏的解決方案還是和網上大部分人是一樣的 但是當手機使用了圓角設計時,可能就會為了顯示效果而強制使dialog能夠完整顯示。 常規做法可能是在其周圍加上padding。但是通過我的代碼可以看到,我已經使 ...
  • 在實際開發中,我們禁止縮放的實現方式: 1.meta設置: <meta name="viewport" content="width=device-width,height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-sc ...
  • 1.web前端開發,如何提高頁面性能優化? 2.前端開發中,如何優化圖像?圖像格式的區別? 3.Vue的雙向數據綁定原理是什麼? 4.請說下封裝 vue 組件的過程? 5.vue.cli中怎樣使用自定義的組件?有遇到過哪些問題嗎? ...
  • 1. 全局安裝vue cli 2. 初始化 vue ui 執行命令 2.1 該命令會自動打開你的瀏覽器,預設地址為: localhost:8000/project/select ,瀏覽器展示的頁面如下: 切換界面到創建,點擊下麵 在此創建新項目按鈕 2.2 2.3 上面的兩項不用管,是我之前創建過玩 ...
  • 1.var reg=/./ var reg=/\./ 前者代表任何一個字元,後者代表這個字元中得有一個 2.?的使用 如果單獨一個字元後面帶? var reg=/\d?/ /n?/ 代表一個或0個字元的出現 如果是量詞+和*,{2,}後面帶?取消正則的貪婪性 在捕獲階段 3.捕獲 1.普通捕獲 ex ...
  • (註:此文是在看過許多學習資料和視頻之後,加上自身理解拼湊而成,僅作學習之用。若有版權問題,麻煩及時聯繫) 標準頁面結構: Html發展歷史: 註:每一種HTML需要有對應的doctype聲明。 H5 <!doctype html> 無文檔聲明瀏覽器以怪異模式解析html Html標簽: 不使用ht ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...