Web - CSS3基礎語法與盒模型

概述

這篇文章是關于 Web 前端 CSS3 的基礎語法與盒模型的講解。包括 CSS3 層疊性及處理沖突規則、偽元素和新增偽類元素、屬性選擇器等。還介紹了文本與字體屬性,如段落和行相關屬性、字體文本屬性。最后闡述了盒子模型,如元素隱藏、行內與塊元素轉換、盒子構成及相關屬性等。

css3 層疊樣式表

css全名叫做層疊樣式表,層疊性是它很重要的性質,多個選擇器可以同時作用于同一個標簽,效果疊加。

css有嚴密的處理沖突的規則:ID權重 > Class權重 > 標簽權重,復雜選擇器可以通過個數的形式,計算權重:

項目權重值
ID2
Class1
Tag0
偽元素

1、::before 和::after

在被選元素的內容前面或后面插入額外的內容,常用來添加一些裝飾性的元素或實現特定的布局效果。

p::before {content: "?";color: blue;margin-right: 5px;
}p::after {content: "?";color: green;margin-left: 5px;
}

2、::first-letter

用于選擇并設置文本塊中第一個字母的樣式,可實現首字下沉等效果。

p::first-letter {font-size: 2em;color: red;float: left;margin-right: 5px;
}

3、::first-line

用來選擇并設置文本塊中第一行的樣式,比如可以改變第一行文本的字體、顏色、背景等。

p::first-line {font-weight: bold;color: purple;
}

4、::selection

用于設置用戶選中頁面元素時的樣式,包括文字選中時的背景色和文字顏色等。

p::selection {background-color: yellow;color: black;
}

5、::placeholder

用于設置表單輸入框中占位文本的樣式,可調整占位文本的顏色、字體等。

input::placeholder {color: gray;font-style: italic;
}

6、::marker

主要用于設置列表項標記(如項目符號或數字)的樣式。

ul li::marker {color: red;font-size: 1.2em;
}
新增偽類元素

1、:empty 選擇空標簽
2、:focus 選擇當前獲得焦點的表單元素
3、:enabled 和 :disabled 分別匹配可使用(啟用)和不可使用(禁用)的表單元素。
4、:checked 匹配被選中的表單元素,如復選框、單選框。
5、root 選擇根元素,即<html>標簽

屬性選擇器
舉例意義
img[alt]選擇有alt屬性的img標簽
img[alt=“故宮”]選擇有alt屬性是故宮的img標簽
img[alt^=“北京”]選擇有alt屬性是北京開頭的img標簽
img[alt$=“夜景”]選擇有alt屬性是夜景結尾的img標簽
img[alt*=“美”]選擇有alt屬性中含有美的img標簽
img[alt~=“手機拍攝”]選擇有alt屬性中有空格隔開的手機拍攝字樣的img標簽
img[alt=“參賽作品”]
序號選擇器
舉例意義
:first-child選擇父元素的第一個子元素
:last-child選擇父元素的最后一個子元素
:nth-child(n)第n個子元素
:nth-of-type(n)選擇父元素下指定類型的第n個元素,只針對指定類型的元素進行計數和選擇,而不會考慮其他類型的元素
:nth-last-child(n)]從父元素的最后一個子元素開始計數,選擇第n個元素
:nth-last-of-type(n)從父元素的最后一個指定類型的子元素開始計數,選擇第n個元素
元素關系選擇器
名稱舉例意義
子選擇器div > pdiv的子標簽p
相鄰兄弟選擇器img+p圖片后面緊跟著的將被選中
通用兄弟選擇器p~spanp元素之后的所有同層級span元素

文本與字體屬性

文本相關的屬性普遍具有繼承性,只需要給祖先標簽設置,即可在后代所有標簽中生效。因為文字相關屬性有繼承性,所以通常會設置body標簽的字號、顏色、行高等,這樣就能當做整個網頁的默認樣式了。

繼承性有一個重要的原則:就近原則,在繼承的情況下,選擇器權重計算失效,而是就近原則。

段落和行相關屬性

1、text-indent

設置段落首行的縮進,可以使用長度值(如px、em、rem等)或百分比來指定縮進量。

p { text-indent: 2em; }

2、line-height

設置段落行與行之間的垂直間距,即行高。可以是數字、長度值或百分比。數字表示相對于字體大小的倍數;長度值直接指定行高的具體尺寸;百分比是相對于字體大小的比例。

p { line-height: 1.5; }

3、text-align

設置段落文本的水平對齊方式,left(左對齊)、right(右對齊)、center(居中對齊)、justify(兩端對齊)等。

p { text-align: center; }

4、letter-spacing

設置字符之間的水平間距,長度值,正值會增加字符間距,負值會減小字符間距。

p { letter-spacing: 2px; }

5、word-spacing

設置單詞之間的水平間距,長度值,用于調整單詞之間的間隔距離。

p { word-spacing: 5px; }
字體文本屬性

1、font-family

指定文本使用的字體族。可以設置多個字體,按優先級排列,瀏覽器會依次嘗試使用這些字體,直到找到可用的字體。

p {font-family: "微軟雅黑", Arial, sans-serif;
}

2、font-size

設置字體的大小。可以使用多種單位,如 px(像素)、em 、rem、% 等,網頁文字正文字號通常是16px,瀏覽器最小支持10px字號。

3. font-weight

設置字體的粗細程度。常見取值有 normal(正常粗細)、bold(粗體),還可以使用數字值,范圍從 100 - 900,數字越大字體越粗。

strong {font-weight: bold;
}
span {font-weight: 600;
}

4、font-style

設置字體的樣式,主要用于指定文本是否為斜體。取值有 normal(正常樣式)、italic(斜體)。

5、text-decoration

text-decoration屬性用于設置文本的修飾線外觀的(下劃線、刪除線)

p.red-underline {text-decoration-line: underline;text-decoration-color: red;
}

盒子模型

在 CSS3 中,有多種方法可以隱藏元素,每種方法都有其特點和適用場景:

元素的隱藏

1、display

該屬性值會讓元素完全從文檔流中移除,就好像這個元素在 HTML 文檔中不存在一樣。它不會占據頁面的空間,也不會響應任何用戶交互事件。

.hidden-element {display: none;
}

2、visibility

元素雖然在頁面上不可見,但它仍然占據原來的空間,并且保留其布局位置。也就是說,它會影響頁面的布局,但不會顯示內容,同時也不會響應鼠標事件等交互操作。

行內元素和塊元素的相互轉換

在 CSS3 中,可以使用display屬性來實現行內元素和塊元素的相互轉換。

1、行內元素轉換為塊元素

span {display: block;
}

2、塊元素轉換為行內元素

塊元素如<div><p>等,默認會獨占一行。若要將塊元素轉換為行內元素,需將display屬性值設置為inline。

div {display: inline;
}

3、轉換為行內塊元素

還有一種常見的情況是將元素轉換為行內塊元素,即display屬性值設置為inline-block。這種方式結合了行內元素和塊元素的部分特點,元素既可以在一行內顯示,又可以設置寬度、高度等塊級元素的屬性。

p {display: inline-block;
}
盒子模型

所有的html標簽都可以看成柜型盒子,由width、height、padding、border構成,成為盒模型。

需要注意的是:++width、height不是盒子的總寬高,盒子的總寬度 = width + 左右padding + 左右border,盒子的總高度 = height + 上下padding + 上下border++

1、box-sizing

在 CSS3 中,box-sizing 屬性用于定義元素在計算寬度和高度時所采用的盒模型類型,它可以改變元素的寬度和高度的計算方式。

2、margin

margin是盒子的外邊距,即盒子其他盒子的距離,豎直方向的margin有塌陷現象:小的margin會塌陷到大的margin中,從而margin不疊加,只以大值為準。

一些元素比如body、ul、p,都有默認的margin,在開始制作網頁的時候,要將他們清除。

盒子的水平居中,將盒子的左右兩邊的margin都設置成auto,盒子將水平居中。盒子的垂直居中,需要使用絕對定位技術實現。

3、padding

padding是盒子的內邊距,即盒子邊框內壁到文字的距離

4、width屬性

width屬性表示盒子內容的寬度,單位屬性通常是px,移動端開發也會涉及百分數、rem等單位。

當塊級元素div、h、li等沒有設置width屬性時,它將自動撐滿,但這不意味著width屬性可以繼承。

5、height屬性

height屬性表示盒子的內容高度,height屬性的單位通常是px,移動端開發也會涉及到百分數、rem等單位。

盒子的height屬性如果不設置,它將自動被其內容撐開,如果沒有內容,則height默認是0。

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

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

相關文章

國防科大:雙目標優化防止LLM災難性遺忘

&#x1f4d6;標題&#xff1a;How to Complete Domain Tuning while Keeping General Ability in LLM: Adaptive Layer-wise and Element-wise Regularization &#x1f310;來源&#xff1a;arXiv, 2501.13669 &#x1f31f;摘要 &#x1f538;大型語言模型&#xff08;LLM…

Verilog基礎(一):基礎元素

verilog基礎 我先說,看了肯定會忘,但是重要的是這個過程,我們知道了概念,知道了以后在哪里查詢。語法都是術,通用的概念是術。所以如果你有相關的軟件編程經驗,那么其實開啟這個學習之旅,你會感受到熟悉,也會感受到別致。 入門 - 如何開始 歡迎來到二進制的世界,數字…

一次線程數超限導致的hive寫入hbase作業失敗分析

1.集群配置 操作系統:SuSe操作系統 集群節點:100臺相同配置的服務器 單臺:核心112Core,內存396G 2.問題現象 現象1:跑單個入庫任務報錯,批量提交任務后出現OOM異常 執行12個hivesql,將數據寫入hbase.hbase入庫有近一半的任務報錯。 每次報錯的任務不是同一個,hivesql…

優化fm.jiecao.jcvideoplayer_lib中視頻橫豎屏自動適配原視頻方案

fm.jiecao:jiecaovideoplayer:x.x.x 優化fm.jiecao.jcvideoplayer_lib中視頻橫豎屏自動適配原視頻方案&#xff1a; 僅優化關鍵代碼部分&#xff0c;源碼&#xff1a; public void startWindowFullscreen() {Log.i(TAG, "startWindowFullscreen " " [" …

多無人機--強化學習

這個是我對于我的大創項目的構思&#xff0c;隨著時間逐漸更新 項目概要 我們的項目平臺來自挑戰杯揭綁掛帥的無人機對抗項目&#xff0c;但是在由于時間原因&#xff0c;并未考慮強化學習&#xff0c;所以現在通過大創項目來彌補遺憾 我們項目分為三部分&#xff0c;分為虛…

工業相機常用詞語解釋

線陣相機和面陣相機&#xff1a; 線陣相機&#xff0c;是采用線陣圖像傳感器的相機。線陣圖像傳感器以CCD為主&#xff0c; 一行的數據可以到幾K甚至幾十K&#xff0c;但是高度只有幾個像素&#xff0c;行頻很高&#xff0c;可以到每秒幾萬行&#xff0c;適合做非常高精度、寬…

2501,編寫dll

DLL的優點 簡單的說,dll有以下幾個優點: 1)節省內存.同一個軟件模塊,若是源碼重用,則會在不同可執行程序中編譯,同時運行這些exe時,會在內存中重復加載這些模塊的二進制碼. 如果使用dll,則只在內存中加載一次,所有使用該dll的進程會共享此塊內存(當然,每個進程會復制一份的d…

Python----Python高級(并發編程:進程Process,多進程,進程間通信,進程同步,進程池)

一、進程Process 擁有自己獨立的堆和棧&#xff0c;既不共享堆&#xff0c;也不共享棧&#xff0c;進程由操作系統調度&#xff1b;進程切換需要的資源很最大&#xff0c;效率低。 對于操作系統來說&#xff0c;一個任務就是一個進程&#xff08;Process&#xff09;&#xff…

在Mapbox GL JS中“line-pattern”的使用詳解

在Mapbox GL JS中&#xff0c;line-pattern 是一種用于在地圖上繪制帶有圖案的線條的樣式屬性。通過 line-pattern&#xff0c;你可以使用自定義的圖像作為線條的圖案&#xff0c;而不是使用純色或漸變。 1. 基本概念 line-pattern: 該屬性允許你指定一個圖像作為線條的圖案。…

C++ Primer 算術運算符

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

【大數據技術】本機PyCharm遠程連接虛擬機Python

本機PyCharm遠程連接虛擬機Python 注意:本文需要使用PyCharm專業版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso寫在前面 本文主要介紹如何使用本地PyCharm遠程連接虛擬機,運行Python腳本,提高編程效率。 注意: …

堆(Heap)的原理與C++實現

1. 什么是堆&#xff1f; 堆&#xff08;Heap&#xff09;是一種特殊的樹形數據結構&#xff0c;通常用于實現優先隊列。堆可以分為兩種類型&#xff1a; 最大堆&#xff08;Max Heap&#xff09;&#xff1a;每個節點的值都大于或等于其子節點的值。最小堆&#xff08;Min H…

移除元素-雙指針(下標)

題目 給你一個數組 nums 和一個值 val&#xff0c;你需要 原地 移除所有數值等于 val 的元素。元素的順序可能發生改變。然后返回 nums 中與 val 不同的元素的數量。 假設 nums 中不等于 val 的元素數量為 k&#xff0c;要通過此題&#xff0c;您需要執行以下操作&#xff1a…

log4j2日志配置文件

log4j2配置文件每個項目都會用到,記錄一個比較好用的配置文件,方便以后使用時調取,日志輸出級別為debug,也可以修改 <?xml version"1.0" encoding"UTF-8"?> <Configuration monitorInterval"180" packages""><prope…

高等代數筆記—映射與線性空間

映射 映射&#xff1a; σ : M → M ′ \sigma: M \to M σ:M→M′ σ ( a ) a ′ , a ∈ M , a ′ ∈ M ′ \sigma(a)a, a\in M, a \in M σ(a)a′,a∈M,a′∈M′ a ′ a a′是 a a a在 σ \sigma σ下的像&#xff0c; a a a是 a ′ a a′在 σ \sigma σ下的原像 σ : …

提示詞實踐總結

目錄 一、要求創建SqlServer表&#xff08;ChatGpt&#xff09; 二、要求生成多層架構代碼&#xff08;Cursor&#xff09; 三、要求修改方法返回值類型&#xff08;Cursor&#xff09; 四、要求修改方法入參&#xff08;Cursor&#xff09; 五、復雜的多表關聯生成&#…

java進階文章鏈接

java 泛型&#xff1a;java 泛型詳解-絕對是對泛型方法講解最詳細的&#xff0c;沒有之一 Java 泛型&#xff0c;你了解類型擦除嗎&#xff1f; java 注解&#xff1a;深入理解Java注解類型 秒懂&#xff0c;Java 注解 &#xff08;Annotation&#xff09;你可以這樣學 jav…

MyBatis-Plus筆記-快速入門

大家在日常開發中應該能發現&#xff0c;單表的CRUD功能代碼重復度很高&#xff0c;也沒有什么難度。而這部分代碼量往往比較大&#xff0c;開發起來比較費時。 因此&#xff0c;目前企業中都會使用一些組件來簡化或省略單表的CRUD開發工作。目前在國內使用較多的一個組件就是…

Maven jar 包下載失敗問題處理

Maven jar 包下載失敗問題處理 1.配置好國內的Maven源2.重新下載3. 其他問題 1.配置好國內的Maven源 打開??的 Idea 檢測 Maven 的配置是否正確&#xff0c;正確的配置如下圖所示&#xff1a; 檢查項?共有兩個&#xff1a; 確認右邊的兩個勾已經選中&#xff0c;如果沒有請…

Spring 核心技術解析【純干貨版】- IX:Spring 數據訪問模塊 Spring-Jdbc 模塊精講

在現代企業級應用中&#xff0c;數據訪問層的穩定性和高效性至關重要。為了簡化和優化數據庫操作&#xff0c;Spring Framework 提供了 Spring-JDBC 模塊&#xff0c;旨在通過高度封裝的 JDBC 操作&#xff0c;簡化開發者的編碼負擔&#xff0c;減少冗余代碼&#xff0c;同時提…