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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...