css — 權重、繼承性、排版、float

来源:https://www.cnblogs.com/yangjie0906/archive/2019/09/16/11405155.html
-Advertisement-
Play Games

[TOC] 1. 繼承性 繼承性:在css有某些屬性是可以繼承下來,如 color,text xxx,line height,font xxx,letter spacing,word spacing是可以繼承下來,但有些屬性是不可以繼承下來的,如 border:1px solid green; 2. ...


目錄

1. 繼承性

繼承性:在css有某些屬性是可以繼承下來,如 color,text-xxx,line-height,font-xxx,letter-spacing,word-spacing是可以繼承下來,但有些屬性是不可以繼承下來的,如 border:1px solid green;

2. css中的權重

繼承來的屬性權重值約為0

權重比較規則:

  • 如果選中了標簽:
    • 1.數選擇器數量: id 類 標簽 ,誰大它的優先順序越高,如果一樣大,後面的會覆蓋掉前面的屬性
    • 2.選中的標簽的屬性優先順序用於大於繼承來的屬性,它們是沒有可比性
    • 3.同是繼承來的屬性
      • 1.誰描述的近,誰的優先順序越高
      • 2.描述的一樣近,這個時候才回歸到數選擇器的數量

!important 它設置當前屬性的權重為無限大,大不過行內樣式的優先順序

註意:!important要寫在分號的前面

使用!important是一個壞習慣,應該儘量避免,因為這嚴重破壞了樣式表中固有的權值比較規則,使得在調試bug變得更加困難。

3. 常用格式化排版

3.1 字體屬性

1.字體

語法:

/*網頁中的文字設置字體為微軟雅黑*/
body{font-family:"Microsoft Yahei"}

2.備選字體

語法:

body{font-family:'Microsoft Yahei','宋體','黑體';font-size: 14px}

備選字體可以有無數個,那麼瀏覽器在去解析這個代碼的時候,是從左往右解析的,如果沒有微軟雅黑,再去找宋體,最後黑體。

3.字體大小

字體大小單位:px、em、rem,一般瀏覽器的字體大小預設為為16px。

語法:

boy{font-size: 20px;}

px是絕對單位也叫固定尺寸,不管在多少尺寸的屏幕下,始終是當前的尺寸

em相對單位,相對於當前盒子的字體大小

.box{
    font-size: 20px;
    /*1em = 20px*/
    width: 20em;
    height: 20em;
    background-color: red;
}

rem相對單位,相對於根元素(html)的字體大小

html{
    font-size: 40px;
}
.box{
    /*1rem = 40px  1px  = 0.025rem */
    /*1 : 0.025 = 400 : ?*/
    font-size: 12px;
    width: 20rem;
    height: 20rem;
    background-color: red;
}

4.字體樣式

norma 預設的,文本設置為普通字體

italic 斜體字體

oblique 傾斜字體

語法:

{font-style: italic;}

5.字體粗細

normal 普通的字體粗細,預設的,相當於數字值400

bold 加粗的字體粗細,相當於數字值700

lighter 比普通字體更細的字體

bolder 比bold更粗的字體,相當於數字值900

數字值:100~900,取值範圍:100、200、300、400、500、600、700、800、900

語法:

{font-weight: 700;}

3.2 文本屬性

1.文本修飾

none 無文本的修飾

underline 文本下劃線

overline 文本上劃線

line-through 穿過文本的線,可以模擬刪除線

語法:

#box p:hover{
    text-decoration: underline;
}

2.文本縮進

語法:

#box2{
    /*字體大小*/
    font-size: 20px;
    /*設置文本縮進*/
    text-indent: 2em;
}

3.中文字間距、英文單詞間距

#box2{
    /*字體大小*/
    font-size: 20px;
    /*設置文字之間的間距*/
    letter-spacing: 2px;
    /*設置英文單詞之間的間距*/
    word-spacing: 10px;
}

4.文本對齊

left 靠左

center 居中

right 靠右

justify 僅限於對英文的兩端對齊

語法:

{text-align: center;}

4. 浮動佈局float

4.1 浮動的介紹

浮動是網頁佈局中非常重要的一個屬性。那麼 浮動 這個屬性一開始設計的初衷是為了網頁的 文字環繞效果 。

例:如果讓兩個div在一排內顯示,那怎麼辦,可能有的同學會說使用display屬性啊,把他們設置成inline-block。但是,你會發現兩個div盒子中間有間隙,僅僅的這點間隙,到底是多大呢,如果我們在一行內計算整個盒模型的寬度的話,是否又計算的精準呢?所以使用display的方法是不對的,這時我們就用到了浮動屬性 ,浮動可以實現元素併排。

4.2 浮動屬性

none 表示不浮動,所有之前講解的HTML標簽預設不浮動

left 左浮動

right 右浮動

inherit 繼承父元素的浮動屬性

語法:

box{
    float: left;
}

4.3 浮動的現象

1.我們之前說浮動的設計初衷是為了做”文字環繞效果“。那麼我們就來看一下如果對盒子設置了浮動,會產生什麼現象?

  • 1.脫離標準文檔流,不在頁面上占位置 ,即“脫標”

  • 2.產生‘文字環繞’的效果 ,設置浮動屬性的初衷

  • 3.“貼邊” 現象: 給盒子設置了浮動,會找浮動盒子的邊,如果找不到浮動盒子的邊,會貼到父元素的邊,如果找到了,就會貼到浮動盒子的邊上

    出現貼邊現象的原因:

    • 當一個元素浮動之後,它會被移出正常的文檔流,然後向左或者向右平移,一直平移直到碰到了所處的容器的邊框,或者碰到另外一個浮動的元素的邊框
  • 4.收縮效果

    • 在沒有給盒子設置浮動之前,盒子是占據一整行的,一旦設置了浮動那麼盒子的寬度就是內容的寬度了。
<style>
    *{
        padding: 0;
        margin: 0;
    }
    .father{
        width: 800px;
        margin: 100px auto;
        height: 400px;
        border: 1px solid #000;
    }
    .child1{
        /*width: 200px;*/
        height: 400px;
        background-color: red;
        float: left;
    }
    .child2{
        /*width: 300px;*/
        height: 200px;
        background-color: green;
        float: right;
    }
</style>

<body>
    <div class="father">
        <div class="child1">mjj</div>
        <div class="child2">wusir</div>
    </div>

</body>
</html>

2.標準文檔流

文檔流指的是元素排版佈局過程中,元素會預設自動從左往後、從上往下的流式排列方式。

即不對頁面進行任何佈局控制時,瀏覽器預設的HTML佈局方式,這種佈局方式從左往右,從上往下,有點像流水的效果,我們稱為流式佈局

3.浮動帶來的問題 :

不去計算浮動元素的高度,撐不起父盒子的高度

4.4 清除浮動的方式

1.給父元素添加固定高度

  • 問題:不靈活,後期不易維護
  • 應用:萬年不變導航欄

2.內牆法

  • 給最後一個浮動元素的後面添加一個空的塊級標簽,並且設置該標簽的屬性為clear:both;

  • 問題:太冗餘了

    <style>
      .clear{
                clear: both;
            }
    </style>
    <div class="father clearfix">
        <div class="child1">mjj</div>
        <div class="child2">wusir</div>
        <div class="clear"></div>
    </div>

3.偽元素清除法 (推薦大家使用)

給父元素添加一個類

.clearfix::after{
    content:'';
    display: block;
    clear: both;
    
    /*在content:'有內容的時候'; 上面三行代碼 + 下麵兩行代碼*/
    /*visibility: hidden;*/  /*把內容隱藏*/
    /*height: 0;*/  /*內容隱藏後的高度設置為0*/
}

4.overflow:hidden; (常用)

CSS屬性overflow定義一個元素的內容太大而無法適應盒子的時候該做什麼。

visible 預設屬性,可見

hidden 內容會被修剪,並且超出內容會隱藏、不可見

scroll 內容會被修剪,瀏覽器會顯示滾動條以便查看超出內容

auto 由瀏覽器定奪,如果內容被修剪,就會顯示滾動條

inherit 規定從父元素繼承overflow屬性的值

當一個元素設置了overflow:hidden|auto|scroll屬性之後,它會形成一個BFC區域,我們叫做它為塊級格式化上下文。BFC只是一個規則,它對浮動定位都很重要,浮動定位和清除浮動只會應用於同一個BFC的元素。

浮動不會影響其它BFC中元素的佈局,而清除浮動只能清除同一BFC中在它前面的元素的浮動。

總結:只要我們讓父盒子形成BFC的區域,那麼它就會清除區域中浮動元素帶來的影響。

因為overflow:hidden;會形成BFC區域,形成BFC區域之後,內部有它的佈局規則
計算BFC的高度時,浮動元素也參與計算。

註意:小心overflow:hidden;它自己的本意

 .box{
            width: 300px;
            height: 300px;
            border: 1px solid #000;
            /*overflow: visible;!*預設可見*!*/
            overflow: hidden;
            /*overflow: scroll;*/
            /*overflow: inherit;*/
        }

5.BFC

  • 1.BFC 定義

    BFC(Block formatting context)直譯為”塊級格式化上下文”。它是一個獨立的渲染區域,只有Block-level box參與, 它規定了內部的Block-level Box如何佈局,並且與這個區域外部毫不相干。

  • 2.BFC佈局規則

    • 1.內部的Box會在垂直方向,一個接一個地放置。
    • 2.Box垂直方向的距離由margin決定。屬於同一個BFC的兩個相鄰Box的margin會發生重疊
    • 3.每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對於從左往右的格式化,否則相反)。即使存在浮動也是如此。
    • 4.BFC的區域不會與float 元素重疊。
    • 5.BFC就是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素。反之也如此。
    • 6.計算BFC的高度時,浮動元素也參與計算`
  • 3.哪些元素會生成BFC

    • 1.根元素
    • 2.float屬性不為none
    • 3.position為absolute或fixed
    • 4.display為inline-block
    • 5.overflow不為visible

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

-Advertisement-
Play Games
更多相關文章
  • 該模型為創建自定義類型最常用的方式。 部分摘自《JavaScript高級程式設計(第3版)》 ...
  • 今天在學習查閱代碼的時候,發現了一個不認識的CSS代碼,於是進行學習。 效果圖 使圖片在對應的元素內以不同的方式進行垂直對齊 ...
  • 工廠模型抽象了創建具體對象的過程,以下示例代碼說明工廠類型: 部分摘自《JavaScript高級程式設計(第3版)》 ...
  • JavaScript 基礎入門 JavaScript 的組成 JS 由三部分組成,它們分別是:ECMAScript、DOM、BOM. ECMAScript 因為網景開發了JavaScript,一年後微軟又模仿JavaScript開發了JScript,為了讓JavaScript成為全球標準,幾個公司聯 ...
  • <!DOCTYPE>標簽的定義 <!DOCTYPE> 聲明位於文檔中最前面的位置,處於<html>標簽之前。<!DOCTYPE> 聲明不是一個HTML標簽,它是告知Web瀏覽器該頁面使用了哪種HTML版本(規範),瀏覽器用此版本(規範)對該文檔進行解析,渲染。 <!DOCTYPE> 可聲明的 DTD ...
  • 利用快速原型獲取軟體需求 在客戶 開發商 用戶 之間 旨在啟發客戶 引導客戶真正知道和瞭解自己的可行需求 快速搭建原型 高效準確地確定用戶需求 我們可能要用到一個軟體需求方面的知識-快速原型 例子 以CSS語言為例從一個最最最的教務系統入手 代碼如下: <html><center><h2>歡迎返校! ...
  • 以下通過一段示例代碼,說明原型模型中的基本概念以及知識點。 部分摘自《JavaScript高級程式設計(第3版)》 ...
  • 前言 最近在看 React 的新語法—— ,只能一句話概括:React 語法真的是越來越強大,越寫代碼越少。 強烈推薦還沒看 React Hooks 的同學去學習下,這會讓你寫react 項目變得非常爽! 以前 React 組件可以看成是: 無狀態組件(function定義)和有狀態組件(class ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...