1.@charset是做什么的?
概述
@charset CSS @規則 指定樣式表中使用的字符編碼。它必須是樣式表中的第一個元素,而前面不得有任何字符。因為它不是一個嵌套語句,所以不能在@規則條件組中使用。如果有多個 @charset
@規則被聲明,只有第一個會被使用,而且不能在HTML元素或HTML頁面的字符集相關 <style>元素的樣式屬性使用。
在樣式表中有多種方法去聲明字符編碼,瀏覽器會按照以下順序嘗試下邊的方法(一旦找到就停止并得出結果):
文件的開頭的 Unicode byte-order 字符值。
由Content-Type:HTTP header 中的 charset 屬性給出的值或用于提供樣式表的協議中的等效值。
CSS @規則 @charset。
使用參考文檔定義的字符編碼: 元素指定了外部資源與當前文檔的關系. 這個元素的使用方法包括為導航定義關系框架.這個元素經常用來鏈接css文件。" href="https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/link" style="font-style: normal !important; color: rgb(56, 120, 148); margin: 0px; padding: 0px; border: 0px; text-decoration: none;"><link>
元素的 charset 屬性。 該方法在 HTML5 標準中已廢除,無法使用。假設文檔是 UTF-8。
語法
1.@charset "UTF-8";
2.@charset "iso-8859-15";
例子
@charset "UTF-8";
@charset "utf-8"; /*大小寫不敏感*/ /* Set the encoding of the style sheet to Unicode UTF-8 */
@charset 'iso-8859-15'; /* Invalid, wrong quoting style used */@charset 'UTF-8'; /* Invalid, wrong quoting style used */@charset "UTF-8"; /* Invalid, more than one space */
@charset "UTF-8"; /* Invalid, there is a character (a space) before the at-rule */
@charset UTF-8; /* Invalid, without ' or ", the charset is not a CSS [<string>
](https://developer.mozilla.org/zh-CN/docs/Web/CSS/string) */
2. @import有什么作用?如何使用?
概述
@import CSS@規則,用于從其他樣式表導入樣式規則。這些規則必須先于所有其他類型的規則, @charset 規則除外; 因為它不是一個嵌套語句,@import不能在條件組的規則中使用。
因此,用戶代理可以避免為不支持的媒體類型檢索資源,作者可以指定依賴媒體的@import規則。這些條件導入在URI之后指定逗號分隔的媒體查詢。在沒有任何媒體查詢的情況下,導入是無條件的。指定所有的媒體具有相同的效果。
語法
1.@import url;
2.@import url list-of-media-queries;
例子
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import 'custom.css';
@import url("chrome://communicator/skin/");
@import "common.css" screen, projection;
@import url('landscape.css') screen and (orientation:landscape);
3.id 選擇器和 class 選擇器的使用場景分別是什么?
- ID唯一性,不能給多個DOM設置同一個ID.即不能通過ID選擇器去控制多個DOM節點.雖然在測試代碼
- 在編寫樣式時盡量使用類選擇器,即使該DOM節點可能只出現一次。因為ID選擇器的優先級比類選擇器高,在后期樣式的控制中會越來越難控制。也許有人會問:我可不可以全篇都使用ID選擇器,那么就不存在和類選擇器比較優先級了。理論上這是可以的,但是請注意上一點——ID必須能夠唯一的確定DOM節點。如果你全篇都使用ID選擇器,那么即使兩個DOM節點樣式完全相同,那么你也必須把節點樣式寫兩遍, 如果后期要進行維護,那么你必須對兩處的代碼都進行維護!!!極大的增加了維護的成本。
- 既然有了類選擇器為什么還要規定一個ID選擇器?在一個完整的HTML+CSS+JavaScript的頁面體系中,對一個DOM節點的ID使用最多的其實是JavaScript(因為通過ID能唯一的確定DOM節點,方便控制),CSS中的使用的ID選擇器一般情況下只會添加少量樣式,更多對DOM節點的樣式控制都是使用類選擇器,既能夠產生樣式疊加,又方便后期的維護。請盡量避免在CSS中使用大量的ID選擇器
- 常規情況下,CSS中會出現大量的ID選擇器的情況——JavaScript插件配套的樣式表中。
4. em、rem分別是什么?
em是相對元素的父元素的字體大小。rem相對的是html根元素的字體大小
5.CSS 選擇器的權重是如何計算的?
!important>行內樣式(1000)>ID選擇器(100)>類、屬性、偽類選擇器(10)>元素和偽元素選擇器(1)>*通配符選擇器(0)