CSS 瞭解一下

来源:https://www.cnblogs.com/msunh/archive/2019/12/06/11996413.html
-Advertisement-
Play Games

CSS 認識一下 1、CSS 的那些事 CSS(Cascading Style Sheets)譯「 層疊樣式表 」,我的理解是: 各種樣式疊加的表 。 一個網頁,如果沒有 CSS,就是穿著“國王的新衣”,在裸奔!CSS 的重要性不言而喻! 作為 HTML 的衣服,CSS 為 HTML 元素提供了一種 ...


CSS 認識一下

1、CSS 的那些事

CSS(Cascading Style Sheets)譯「層疊樣式表」,我的理解是:各種樣式疊加的表

一個網頁,如果沒有 CSS,就是穿著“國王的新衣”,在裸奔!CSS 的重要性不言而喻!

作為 HTML 的衣服,CSS 為 HTML 元素提供了一種樣式描述,定義其顯示方式,TA 能夠對網頁中元素進行像素級精確控制。

CSS 的歷史不做過多贅述,先瞭解幾種引入方式以及其區別。

2、外部樣式

外部樣式是指單獨建立一個擴展名為 .css 的樣式表,在 head 標簽中採用 link 方式引入,也可以使用 import 方式引入:

// link 引入
<link rel="stylesheet" type="text/css" href="css/style.css" /> 
// @import 引入
<style type="text/css">
  @import url("css/style.css");
</style>

引入外部樣式的好處就是,一個樣式表可以在多個頁面中復用,牆裂建議使用 link 方式引入,import 新手慎用。

3、內嵌樣式

內嵌樣式主要通過 <style> 標簽在頁面中編輯樣式:

<style>
  .title {
      color: red      
  }
</style>

該方法編寫的樣式僅在當前頁面有效,無法用於其他頁面,<style>標簽可以放在任意位置,建議放在 head 中。

4、行內樣式

行內樣式是在 HTML 頁面中的某個元素上直接對其直接定義,以 p 元素為例:

<p style="color: red"></p>

行內樣式只對其所在的標簽生效,實際上寫頁面時建議少用或者不用。

引用樣式最好是採用第一種 link 方式引入,分離 HTML 頁面代碼與 CSS 樣式,方便項目的維護管理,以及提高 CSS 樣式的復用性。

其他兩種方法少用或者不用,儘量降低頁面的的複雜性。

5、CSS 選擇器

HTML 頁面中的元素樣式大多是通過 CSS 選擇器進行控制的。

要想用 CSS 對 HTML 頁面中的元素實現一對一,一對多或者多對一的控制,離不開 CSS 選擇器。

CSS 的選擇器大概有這些:

  • 通用選擇器
  • 標簽選擇器
  • class 選擇器(類選擇器)
  • id 選擇器
  • 後代選擇器
  • 子代選擇器
  • 組合選擇器
  • 相鄰兄弟選擇器
  • 偽類選擇器
  • 媒體查詢(姑且也算吧)

還有一些可能漏掉了,歡迎留言補充,先復盤一些常見選擇器。

5.1 通用選擇器

通用選擇器用 * 開頭,後面直接跟上樣式,作用於所有標簽,表示通用定義。

就好比定義所有正常人:一個頭、兩隻手、兩條腿。

例:

* {
   font-size: 18px;
   color: red
}

這裡表示所有標簽中的字體大小為 18px,顏色為紅色。

5.2 標簽選擇器

標簽選擇器可以選中所有的同類標簽元素,標簽後面直接跟上樣式。

好比規定學生穿校服,不同工廠的工人有對應的工服。

例:

p {
    font-size: 16px;
    color: blue
}

這裡表示所有 p 標簽中的字體大小為 16px,顏色為藍色。

5.3 class 選擇器(類選擇器)

class 選擇器可以選中帶有特定類名的標簽進行樣式定義,也就是一對多,書寫時以 . 開頭,跟上 class 名稱,然後編寫樣式,在對應的標簽中用 class="" 引用。

好比分配一個班級的班幹部,給予他們同一類屬性。

例:

// css 樣式
.title{
  background-color: red
}
// html 頁面
<div class="title">語文課代表</div>
<div class="title">數學課代表</div>

這裡就能把兩個課代表的背景顏色都設置成紅色,一對多設置。

5.4 id 選擇器

id 選擇器以 # 開頭,後面跟上 id 名,然後書寫樣式。在對應的標簽中使用 id="" 引用,其 id 名具有唯一性。

以一個學校為例,定義校長的屬性,一個學校只有一個校長。

例:

// css 樣式
#title{
  background-color: black
}
// html 頁面
<div id="title">校長</div>

這裡是定義校長的背景顏色為黑色,雖然說 id 選擇器具有唯一性,如果把幾個元素都命名成相同的 id 名字,CSS 選擇器還是會把被標記的元素都選中應用樣式(和 class 選擇器一樣)。

乍一看,id 選擇器的唯一性似乎不存在。然而,在 javascript 中只會選擇具有相同 id 名字元素中的第一個。所以,養成一個好習慣,同一 id 不要在同一頁面中出現第二次。

註意,由於 CSS 的解釋是自上而下的,對於一個元素的相同屬性賦值,下麵的屬性描述會把上面的覆蓋掉,因此在一定要註意屬性的書寫順序。

5.5 後代選擇器

後代選擇器也稱為包含選擇器,用來選擇特定元素的後代,將父元素放在前面,子元素放在後面,中間加一個空格分開。

這個應該比較好理解吧,打個比方,我是中國人,我所有的後代都留著中國人的血液。

例:

// css 樣式
.china p {
    background-color: yellow
}
// html 頁面
<div class="china">
    <p>兒子</p>
    <p>女兒</p>
</div>

這裡的兒子和女兒的背景顏色都會是黃色。

後代選擇器中的元素不限制兩個,也可適用於多層後代關係,用多個空格加以分開最大嵌套層數不超過 256 層。

5.6 子代選擇器

與後代選擇器的不同的是,子代選擇器僅是指 TA 的第一代,後代選擇器通過空格來選擇,子代選擇器通過 > 選擇。

好比我只給我的子女們發紅衣服,其他後代,例如孫輩,曾孫輩都不發。

例:

// css 樣式
div > strong {
  color:red
}
// html 頁面
<div>
  <strong>兒子</strong>
  <span>
    <strong>孫子</strong>
  </span>
</div>

子女的字體顏色是紅色的,而孫輩是預設的顏色。

5.7 組合選擇器

對多個不同元素做相同的操作的情況下,可以共同使用同一樣式代碼,元素之間用英文逗號分隔,這就是組合選擇器。

好比給不同身份的人發一個“感動玖柒十大青年獎”,可以把他們全部叫到一起來頒獎。

例:

// css 樣式
div, p, span, h1 {
  color: red
}
// html 頁面
<div>小明</div>
<p>小紅</p>
<span>小剛</span>
<h1>小利</h1>

這裡小明、小紅、小剛和小利的顏色都是紅色的,採用組合選擇器最大的好處就是:簡化 CSS 代碼,提高了編碼效率。

5.8 相鄰兄弟選擇器 & 通用兄弟選擇器

相鄰兄弟選擇器還是挺好理解的,MDN 的介紹是:介於兩個選擇器之間,當第二個元素緊跟在第一個元素之後,並且兩個元素都是屬於同一個父元素的子元素,則第二個元素將被選中。

好比皇帝說下一個生的是兒子就當太子,那就是以當前的最後一個子女為參照物,下一個兒子就是太子,如果先生了個女兒,則不算。

例:

// css 樣式
div + p {
  color: red
}
// html 頁面
<div>大兒子</div>
<span>二女兒</span>
<p>二兒子</p>
<p>三兒子</p>

這裡都是預設顏色,因為中間相隔了一個二女兒,所以二兒子不能當太子了。

相鄰兄弟選擇器總結起來就兩個關鍵點:

  • 緊接在另一元素後的第一個
  • 二者有相同父元素

通用兄弟選擇器類似於相鄰兄弟選擇器,但肯定是不一樣的,首先不同的是通用兄弟選擇器是用 ~ 連接後面的元素。

繼續拿皇帝兒子舉例,皇帝說大兒子之後所有的兒子都封王,那就是以大兒子為參照,之後所有的兒子就是王,如果生了個女兒,則略過。

例:

// css 樣式
div ~ p {
  color: red
}
// html 頁面
<div>大兒子</div>
<span>二女兒</span>
<p>二兒子</p>
<p>三兒子</p>

這裡都是你猜一下會是神馬樣子?

5.9 偽類選擇器

偽類選擇器通常是用來描述元素在一些特定狀態下的樣式,最常見的就是用在 a 元素(超鏈接)中了,當然其他元素也可以,只不過相對來說少一些。

就好比拿人來說,不開心的時候會皺眉,開心的時候會笑,發火的時候可能會摔東西,主要是對不同的狀態定義。

例:

// 沒有被訪問過a標簽的樣式
a:link {
  color: black
}
// 訪問過後a標簽的樣式
a:visited {
  color: yellow
}
// 滑鼠懸浮時a標簽的樣式
a:hover {
  color: red
}
// 滑鼠摁住的時候a標簽的樣式
a:active {
  color: blue
}

偽類選擇器我覺得應該是最有趣的選擇器了,試試就知道了。

5.10 媒體查詢

媒體查詢應該算是選擇器吧,不管那麼多我先把 TA 拉進來。

TA 能在不同的條件下使用不同的樣式,使頁面在不同在設備下達到不同的渲染效果。

好比一個人在不同的場景下做不同的事,為父親的時候教育子女,為丈夫的時候保護妻子,為人子的時候照顧父母。

例:

@media screen and (max-width: 300px) {
    body {
        background-color: red
    }
}

這裡的樣式表示如果頁面寬度小於 300px 則修改背景顏色為紅色,簡單易理解吧。

6、最後

CSS 的簡單復盤就到這裡了,所有的實例都沒有用截圖展示,還是希望各位能自己去試一試,看看效果,多敲才是正道。

如果有一些地方寫的不對,也歡迎指正,分享即學習。
file

公眾號「我是玖柒後」首發,分享即學習!


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

-Advertisement-
Play Games
更多相關文章
  • 在Android中, 我們用到的數據有可能是一次性的, 也有可能是需要多個值的. 本文介紹Android中結合協程(coroutines)的MVVM模式如何處理這兩種情況. 重點介紹協程`Flow`在Android中的應用. ...
  • [版權來至mtk FAQ. 請勿隨意轉發] [FAQ20587] Android O 彩信發送在Framework中的控制 內容 (2018-01-30) [DESCRIPTION] Android o mtk預設設計:彩信發送會受到數據開關控制,當數據開關關的時候,無法發送彩信。 這個是回歸goo ...
  • 自定義一個jQuery二級菜單插件 自定義jQuery插件需要瞭解: 命名規範:jQuery.插件名-版本.js 以工具(全局)函數形式加到jQuery中: $.extend({函數名:function(){功能代碼}}); 使用時:$.函數名(); 以成員(局部)函數形式加到jQuery中: $. ...
  • jQuery-cookie插件的使用 什麼是插件? 基於jQuery的語法,按照一定規範書寫,具有特定功能的腳本文件,稱為插件。 插件除了js文件之外,有的還包含css文件,圖片和字體等資源文件。 在jQuery的官網https://jquery.com/搜索和下載需要的插件。 1.引入cookie ...
  • 1. 為元素綁定事件的引入: 用src直接綁定多個,只實現最後一個(programmer2.js) <input type="button" value="按鈕" id="btn"/> <script src="common.js"></script> <script src="programmer ...
  • 1. 追加子元素 my$("dv").appendChild(obj); 2. 把新的子元素插入到第一個子元素的前面 my$("dv").insertBefore(obj, my$("dv").firstElementChild); 3. 移除父級元素中第一個子級元素 my$("btn2").onc ...
  • 元素創建 為了提高用戶的體驗 元素創建的三種方式: 1. document.write("標簽的代碼及內容"); 2. 對象.innerHTML="標簽及代碼"; 3. document.createElement("標簽的名字"); 1. document.write("標簽的代碼及內容"); m ...
  • colspan 屬性規定單元格可橫跨的列數 colspan="2" rowspan 屬性規定單元格可橫跨的行數 rowspan="2" ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...