CSS: 選擇器與三大特性

標簽選擇器

標簽選擇器就是選擇一些HTML的不同標簽,由于它們的標簽需求不同,所以CSS需要設置標簽去選擇它們,為滿足它們的需求給予對應的屬性

基礎選擇器

標簽選擇器

<!DOCTYPE html>
<head><title>HOME</title><style>p{color: brown;}</style>
</head>
<body><p>Hello,World</p>
</body>
</html>

這里的<style></style>里面的p{}就是標簽選擇器,它選擇了<p></p>標簽,將<p></p>標簽內的文本顏色修改為紅色?

演示結果

這里的Hello,World是紅色的

?類選擇器

類選擇器的存在是為了差異化每個選擇器標簽,它的基本格式為

.類名{所需要的屬性}

<div class="類名 類名 ...">文本</div>

基本代碼

<!DOCTYPE html>
<head><title>HOME</title><style>.set{color: brown;}.size{font-size: 50px;}</style>
</head>
<body><p class="set size">Hello,World</p>
</body>
</html>

演示結果

這里<p></p>的文本添加了兩個類型名,分別是更改顏色和大小的類選擇器

id選擇器?

id選擇器和類選擇器的使用方式是相同的,唯一的不同點在于id選擇器只能引用一個類名,而類選擇器可以引用多個類名

基本使用方式

#id{屬性}

<div id="屬性名">文本內容</div>?

代碼演示

<!DOCTYPE html>
<head><title>HOME</title><style>#set{color: brown;font-size: 50px;}</style>
</head>
<body><div id="set">Hello,World</div>
</body>
</html>

演示結果

?

通配選擇器?

通配選擇器格式

*{屬性}

通配選擇器會對所有文本生效

演示代碼

<!DOCTYPE html>
<head><title>HOME</title><style>*{color:aqua;font-size: 50px;}</style>
</head>
<body><div>Hello,World</div>
</body>
</html>

演示結果

CSS復合選擇器

復合選擇器是由基礎選擇器構成的,當我們的代碼非常龐大時,復合選擇器可以用來更準確的定位某個標簽,將它的屬性改寫

后代選擇器

后代選擇器是由兩個父子選擇器構成的,當標簽的class既滿足父標簽又滿足子標簽那么它的屬性才會被后代選擇器修改

基本結構

.father son{}

我們來演示一下

演示代碼

<!DOCTYPE html>
<head><title>HOME</title><style>.father span{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div class="father"><span>Ni Hao</span><p><span>Hello,World;</span></p></div>
</body>
</html>

演示結果

?我們可以得知當文本滿足后代選擇器的兩個先后條件時,后代選擇器的更改生效,只要滿足子標簽在父標簽的內部即可

子選擇器

子選擇器需要子標簽是父標簽里面的第一個直接標簽,也就是說子標簽必須要是父標簽的親兒子標簽,否則不生效

語法

父親>兒子{}

演示代碼

<!DOCTYPE html>
<head><title>HOME</title><style>div>span{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div><span>Ni Hao</span><p><span>Hello,World;</span></p></div>
</body>
</html>

演示結果

我們可以看到,同樣是<span></span>標簽,但其中鄙視<div></div>標簽的親兒子標簽不會被后代選擇器選擇?

并集選擇器

并集選擇器可以在同一行定義許多個其它的復合選擇器或基礎選擇器

語法

元素1 元素2{}?

演示代碼

<!DOCTYPE html>
<head><title>HOME</title><style>div,span,.father div{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div>WeChat</div><span>Ni Hao</span><p>Hello,World;</p>
</body>
</html>

演示結果

我們可以發現這個并集選擇器同時選擇了<span></span>和<div></div>兩個標簽

當然我們也可以并上子選擇器和后代選擇器

演示代碼

<!DOCTYPE html>
<head><title>HOME</title><style>.blue span,div>span{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div><p class="blue"><span>P內的span文字標簽</span><div>P內的div文字標簽</div></p><span>div內的span文字標簽</span></div>
</body>
</html>

?演示結果

我們可以看到并集選擇器同時完成了子選擇器和后代選擇器的功能

偽類選擇器?

用于給一些元素添加某種效果

鏈接偽類選擇器

a:link,選擇未被訪問的鏈接

a:visited,選擇已經被訪問的鏈接

a:hover,選擇鼠標懸停的鏈接

a:active,選擇鼠標點擊的鏈接

演示代碼

<!DOCTYPE html>
<head><title>HOME</title><style>a{font-size: 50px;}a:link {color: rgb(165, 14, 14);}a:active {color: rgb(249, 5, 5);}a:hover {color: rgb(153, 0, 255);}a:visited {color: rgb(127, 253, 2);}</style>
</head>
<body><a href="https://www.bilibili.com/">bilibili</a>
</body>
</html>

演示結果

?當我們鼠標懸停時

這里由于瀏覽器的安全限制我們就先不演示其它的了?

:focus 偽類選擇器

focus用于獲取表單,focus通過獲取表單得到修改表單的權限

我們來演示一下

演示代碼

當我們點擊這些表單的時候,這些表單便會因為選擇器添加的屬性而變色

CSS三大特性?

層疊性

當我們由兩個相同的選擇器時,那么就會發生命名沖突,那么命名沖突后,編譯器會怎么選擇屬性呢

演示代碼

<html>
<head><title>Document</title><style>p{color: brown;font-size: 50px;}p{color: blue;}</style>
</head>
<body><p>Hello,World</p>
</body>
</html>

演示結果

當由兩個p選擇器時,后面的選擇器屬性會覆蓋前面的,沒有被覆蓋的屬性會繼承下來,比如顏色被覆蓋,但是文本大小被繼承下來

繼承性?

在CSS中子進程會繼承父進程的特性

演示代碼

<html>
<head><title>Document</title><style>div{color: brown;font-size: 50px;}</style>
</head>
<body><div>your name   <p>Hello,World</p></div>
</body>
</html>

演示結果

這里的<p></p>標簽繼承了<div></div>標簽的特性

優先級?

當一個元素被多個選擇器選擇會出現兩種情況

選擇器相同,執行層優先

選擇器不同,執行優先級

選擇器的優先級取決于,選擇器的權重

選擇器權重
從父級繼承 / 通配符*0.0.0.0
標簽選擇器0.0.0.1
類選擇器 / 偽類選擇器0.0.1.0
id選擇器0.1.0.0
行內樣式style=""1.0.0.0
!important?修飾

代碼演示

<html>
<head><title>Document</title><style>div{color: brown;font-size: 50px;}.father{color:black;}#son{color: blue;}</style>
</head>
<body><div class="father" id="son">Hello,World</div>
</body>
</html>

演示結果

因為id選擇器權重最高,所以是藍色

還有一個!important元素,當選擇器加上它時,那么它的優先級就是最高

當有兩個元素都加了!important時,那么就比較它們各自的優先級,如果它們時相同的選擇器,那么就比它們那個在后面

代碼演示

<html>
<head><title>Document</title><style>div{color: brown;font-size: 50px;}#son{color: blue !important;}.father{color:black !important;}</style>
</head>
<body><div class="father" id="son">Hello,World</div>
</body>
</html>

演示結果

?雖然father加了!important,但是son也加了,所以最后比較的就是son和father的優先級

?權重的疊加

當我們使用后代選擇器或者子選擇器時,便會發生權重的疊加

比如div span的權重疊加起來就是 0.0.0.1 + 0.0.0.1 = 0.0.0.2

div .father的權重? ? ? ? ? ? ? ? ? ? ? ? ? ? 0.0.0.1 + 0.0.1.0 =0.0.1.1

.father .son的權重? ? ? ? ? ? ? ? ? ? ? ? ? 0.0.1.0 + 0.0.1.0 =0.0.2.0

權重會在對應的位置疊加,但權重不會進位

代碼演示

<html>
<head><title>Document</title><style>.FATHER span{color: brown;font-size: 50px;}div span{color: blue;font-size: 50px;}</style>
</head>
<body><div class="FATHER"><span>HELLO,WORLD</span></div>
</body>
</html>

演示結果

因為.FATHER + span的權重大于 div + span的權重,所以最后是.FATHER?+ span選擇器生效

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79422.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙跨平臺開發教程之Uniapp布局基礎

前兩天的文章內容對uniapp開發鴻蒙應用做了一些詳細的介紹&#xff0c;包括配置開發環境和項目結構目錄解讀&#xff0c;今天我們正式開始寫代碼。 入門新的開發語言往往從Hello World開始&#xff0c;Uniapp的初始化項目中已經寫好了一個簡單的demo&#xff0c;這里就不再贅述…

JavaSE核心知識點02面向對象編程02-08(異常處理)

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 JavaSE核心知識點02面向對象編程02-08&#…

【JVM-GC調優】

一、預備知識 掌握GC相關的VM參數&#xff0c;會基本的空間調整掌握相關工具明白一點&#xff1a;調優跟應用、環境有關&#xff0c;沒有放之四海而皆準的法則 二、調優領域 內存鎖競爭cpu占用io 三、確定目標 【低延遲】&#xff1a;CMS、G1&#xff08;低延遲、高吞吐&a…

基于單片機的電子法頻率計

一、電子計數法測頻率原理 通過門控控制閘門開關&#xff0c;閘門時間T自己設定&#xff0c;計數器計數脈沖個數N&#xff08;也就是待測信號&#xff09;&#xff0c;N個脈沖的時間間隔為δt,倒數即為信號的頻率f,由此 δtT/N fN/T——信號頻率 根據公式&#xff0c;如果考慮…

【C/C++】跟我一起學_C++同步機制效率對比與優化策略

文章目錄 C同步機制效率對比與優化策略1 效率對比2 核心同步機制詳解與適用場景3 性能優化建議4 場景對比表5 總結 C同步機制效率對比與優化策略 多線程編程中&#xff0c;同步機制的選擇直接影響程序性能與資源利用率。 主流同步方式: 互斥鎖原子操作讀寫鎖條件變量無鎖數據…

判斷兩臺設備是否在同一局域網內的具體方法

以下是判斷兩臺設備是否在同一局域網內的具體方法&#xff1a; 1. 檢查IP地址和子網掩碼 操作步驟&#xff1a; Windows系統&#xff1a; 按 Win R 鍵&#xff0c;輸入 cmd 并回車。輸入 ipconfig&#xff0c;查看 IPv4 地址 和 子網掩碼&#xff08;如 192.168.1.5/255.255.2…

在R語言中如何將列的名字改成別的

在 R 中&#xff0c;更改數據框&#xff08;data frame&#xff09;中列的名字可以通過多種方法實現。以下是幾種常見的方法&#xff1a; 方法 1&#xff1a;使用 names() 函數 names() 函數可以獲取或設置數據框的列名。 示例 假設我們有一個數據框 data&#xff1a; dat…

JUC并發編程(上)

一、JUC學習準備 核心知識點&#xff1a;進程、線程、并發&#xff08;共享模型、非共享模型&#xff09;、并行 預備知識&#xff1a; 基于JDK8,對函數式編程、lambda有一定了解 采用了slf4j打印日志 采用了lombok簡化java bean編寫 二、進程與線程 進程和線程概念 兩者對比…

單地平面6層PCB設計實戰:如何兼顧電源與信號完整性?

摘要&#xff1a;面對復雜系統&#xff08;SDRAM、WiFi、電機驅動等&#xff09;且僅有1層地平面的6層板設計挑戰&#xff0c;本文從層疊規劃、電源噪聲抑制、高速信號處理等角度&#xff0c;總結可落地的設計技巧與避坑指南。 一、層疊設計&#xff1a;6層板如何“擠”出最優布…

spark:map 和 flatMap 的區別(Scala)

場景設定 假設有一個包含句子的 RDD&#xff1a; scala val rdd sc.parallelize(List("Hello World", "Hi Spark")) 目標是&#xff1a;將每個句子拆分成單詞。 1. 用 map 的效果 代碼示例 scala val resultMap rdd.map(sentence > sentence…

基于VSCode+PlatformIO環境的ESP8266的HX1838紅外模塊

以下是針對ESP8266開發板的紅外遙控解碼系統開發教程&#xff0c;基于VSCodePlatformIO環境編寫 一、概述 本實驗通過ESP8266開發板實現&#xff1a; 紅外遙控信號解碼自定義按鍵功能映射串口監控輸出基礎設備控制&#xff08;LED&#xff09; 硬件組成&#xff1a; NodeMC…

Kubernetes排錯(十四):Pod狀態異常排查手冊

當你在凌晨三點收到告警&#xff0c;發現Pod在崩潰循環中掙扎時&#xff0c;如何快速定位問題&#xff1f;本文將為你梳理一套生產環境通用的Pod排錯流程&#xff0c;并附上救火隊員必備的實用命令清單&#xff01; 一、5分鐘快速定位&#xff1a;四步鎖定問題方向 步驟1&…

醫院藥品管理系統(準備工作)

準備工作 創建數據庫表 搭建Springboot框架 創建工程 定位maven 其他準備工作 創建數據庫表 建了九張表 搭建Springboot框架 創建工程 定位maven 把鏡像改為國內的 其他準備工作 安裝Lombok插件 額外添加依賴 如果添加依賴的過程中一直爆紅&#xff0c;可以刷新…

SpringBoot異步處理@Async深度解析:從基礎到高階實戰

一、異步編程基礎概念 1.1 同步 vs 異步 特性同步異步執行方式順序執行&#xff0c;阻塞調用非阻塞&#xff0c;調用后立即返回線程使用單線程完成所有任務多線程并行處理響應性較差&#xff0c;需等待前任務完成較好&#xff0c;可立即響應新請求復雜度簡單直觀較復雜&#…

簡單的強化學習舉例

1&#xff0c;定義獎勵函數 首先&#xff0c;需要根據具體的任務需求來定義獎勵函數。例如&#xff0c;對于機器人導航任務&#xff0c;可以根據機器人與目標點的距離來定義獎勵函數&#xff1a; import numpy as npdef navigation_reward(robot_position, target_position):…

css背景相關

背景書寫 background: url(src); // 注意&#xff1a;在寫動態樣式時&#xff0c;backgournd賦值格式錯誤&#xff0c;是不會在瀏覽器dom的style上顯示的 // 但是可以創建不可見的img&#xff0c;預加載來提高性能背景也會加載圖片資源 同img的src一樣&#xff0c;background也…

opencascade.js stp vite 調試筆記

Hello, World! | Op enCascade.js cnpm install opencascade.js cnpm install vite-plugin-wasm --save-dev 當你不知道文件寫哪的時候trae還是有點用的 ‘’‘ import { defineConfig } from vite; import wasm from vite-plugin-wasm; import rollupWasm from rollup/plug…

線程的一些事(2)

在java中&#xff0c;線程的終止&#xff0c;是一種“軟性”操作&#xff0c;必須要對應的線程配合&#xff0c;才能把終止落實下去 然而&#xff0c;系統原生的api其實還提供了&#xff0c;強制終止線程的操作&#xff0c;無論線程執行到哪&#xff0c;都能強行把這個線程干掉…

BGP實驗練習1

需求&#xff1a; 要求五臺路由器的環回地址均可以相互訪問 需求分析&#xff1a; 1.圖中存在五個路由器 AR1、AR2、AR3、AR4、AR5&#xff0c;分屬不同自治系統&#xff08;AS&#xff09;&#xff0c;AR1 在 AS 100&#xff0c;AR2 - AR4 在 AS 200&#xff0c;AR5 在 AS …

滑動窗口——將x減到0的最小操作數

題目&#xff1a; 這個題如果我們直接去思考方法是很困難的&#xff0c;因為我們不知道下一步是在數組的左還是右操作才能使其最小。正難則反&#xff0c;思考一下&#xff0c;無論是怎么樣的&#xff0c;最終這個數組都會分成三個部分左中右&#xff0c;而左右的組合就是我們…