CSS2基礎(part-1)

超雄代码狂發表於2024-08-20

CSS2基礎

基礎

簡介

【全稱】Cascading Style Sheets,又名層疊樣式表

  • 層疊:一層一層上去
  • :列表
  • 樣式:如文字大小,顏色,元素寬高等。

CSS 描述了在螢幕、紙質、音訊等其他媒體上的元素應該如何被渲染的問題。

語言型別

標記語言,為HTML結構美化樣式,實現語義與效果的分離,更好地美化網頁,最佳化網頁結構

作用於HTML的方式

行內樣式(不推薦

語法

<!--寫在標籤中的style中-->
<body>
    <h1 style="color:skyblue;">title</h1>
</body>

缺點:

  • 工作量大,效率低下
  • html和css耦合性太高,css使html結構與樣式分離的作用微乎其微

內部樣式

語法

<head>
    <meta charset="UTF-8">
    <title>內部樣式</title>
    <style>
        h1{
            color: skyblue;
        }
        h2{
            color: greenyellow;
        }
    </style>
</head>
<body>

優點

  • 結構和樣式已經初步分開,程式碼可以進行服用

缺點

  • 需要複製到另一個html檔案才可以實現樣式複用,耗費時間

[!NOTE]

一開始寫CSS樣式的時候,可以使用內部樣式,不用再開一個.css檔案來賦予結構樣式,

到後來熟練了可以使用外部樣式,寫在.css檔案中

外部樣式

語法

<!--HTML檔案-->
<head>
    <meta charset="UTF-8">
    <title>外部樣式表</title>
    <link rel="stylesheet" href="../CSS/03.css">
    <!--head中寫link來連線外部樣式表-->
    <!--rel:關係  href:來源-->
</head>
/*CSS檔案*/
h1{
    color: skyblue;
}
h2{
    color: gray;
}

最常使用的方式,實際開發幾乎都使用外部樣式表

優點

  • 第一次透過瀏覽器渲染後,CSS樣式就會因為與.html檔案的分離而進行快取,下次渲染則可以提高訪問速度

樣式的優先順序

順序

行內樣式 > 內部樣式 = 外部樣式

attention

  • 遵循“後來者居上”的原則
  • 相當於塗鴉,塗了第二層,第一層就會看不見了

語法規範

結構

選擇器 找到想要更改樣式的元素
宣告塊 一個或多個宣告(宣告:[屬性名: 屬性值;])
h2{
    color: gray;
}

程式碼風格

風格 作用
展開風格 開發時推薦,便於維護和除錯
緊湊風格 專案上線時推薦,可以減小檔案體積,以節約網路流量,同時使開啟網頁的速度更快

CSS選擇器

基本選擇器

通配選擇器

作用

選中所有的HTML元素(清除樣式的時候有用)

* {
	color: red;
}

元素選擇器

作用

為某種元素統一設定,無法實現同型別的差異化

標籤名 {
    屬性名: 屬性值;
}

類選擇器

作用

透過元素中的class的屬性值來進行可以自己分類的樣式分配

元素中的class屬性的屬性值可以有多個,用空格隔開

class屬性的屬性值儘量為字母+數字,用-連線,避免純數字的出現

/*假設有一個元素h1,它的class屬性的屬性值為skyblue*/
.skyblue {
    color: skyblue;
}

ID選擇器

作用

選中唯一的元素透過id屬性的屬性值(其中的原理是不同的元素,id屬性的屬性值必須不同

/*假設有一個元素h1,它的id屬性的屬性值為special*/
#special {
    color: skyblue;
}

複合選擇器

交集選擇器

作用

選中同時符合多個條件的元素

選擇器1選2選3 {
    color: skyblue;
}
/*比如p.blue 就是說class屬性的屬性值為blue的p標籤(雙重篩選)*/

[!NOTE]

  • 有標籤名必須寫在前面
  • 不可能同時出現兩個元素選擇器

並集選擇器

作用

選中多個選擇器對應的元素

h2,
h3,
p {
            font-size: large;
        }
/*
選擇器1,
選擇器2,
選擇器3 {
 屬性名: 屬性值;
}

*/
  • 一般豎著寫
  • 集體宣告,可以縮小樣式表的體積

HTML元素之間的關係

  • 父元素
  • 子元素
  • 祖先元素(爸爸也算是祖先)
  • 後代元素(兒子也算是後代)
  • 兄弟元素

為後面的後代選擇器等選擇器做知識儲備


後代選擇器(id,類也可)

作用

選中指定元素中,符合要求的後代元素

<style>
        ul li {
            color: skyblue;
            font-size: large;
        }
    </style>
<ul>
        <li>l</li>
        <li>o</li>
        <li>v</li>
        <li>e</li>
        <li>
            <a href="#">love</a>
        </li>
        <li>
            <ul>
                <li>1</li> <!--這個也可以被選中-->
            </ul>
        </li>
    </ul>

[!TIP]

  • 最後選中的是後代,不包括祖先
  • 須符合html的巢狀要求 (可以跨代尋找
  • 子代和孫子輩以及等等可以同時兼顧

子代選擇器

作用

選中指定元素中符合要求的子代元素

選1>選2>選3 {
 color: skyblue;
}
/*
選擇器可以不從最外面開始找尋元素
*/

兄弟選擇器

作用

選中指定元素後,符合條件的相鄰兄弟元素

分類

分類 語法 作用
相鄰 選1+選2 向下找同代,第一個如果是選2,則賦予樣式
通用 選1~選2 向下找通帶,如果是選2,則賦予樣式,可以不止一個
<style>
		ul+ol {
            color: skyblue;
        }
        p+h2 {
            color: yellow;
        }
        h2~h3 {
            color: aquamarine;
            font-size: large;
        }
</style>
<body>
    <div>
        <ul>
            <li>love</li>
            <li>like</li>
        </ul>
        <ol>
            <li>long</li>
            <li>lonely</li>
        </ol>
        <p>paragrah</p>
        <h3>title333</h3>
        <h2>title2</h2>
        <h3>title3</h3>
        <h3>title33</h3>
</body>

屬性選擇器

作用

選中屬性值符合一定要求的元素

 /* 第一種寫法,選中具有相同屬性的元素 */
        [title] {
            color: skyblue;
        }
        /* 第二種寫法,選中屬性以及屬性值都相同的元素 */
        [title = "1"] {
            color: aquamarine;
        }
        /* 第三種寫法,選中屬性相同,且屬性值開頭相同的元素 */
        [title^="a"] {
            color: yellow;
        }
        /* 第四種寫法,選中屬性相同,且屬性值結尾相同的元素 */
        [title$="e"] {
            font-size: larger;
        }
        /* 第五種寫法,選中屬性相同,且屬性值中包含部分值的元素 */
        [title*="1"] {
            color: brown;
        }

偽類選擇器

概念解析

不是真的類class,而是元素的一種狀態

分類

動態偽類 意思 結構偽類 意思
link(超連結獨有) 尚未連線 first-child 第一個孩子
visted(超連結獨有) 連線過 last-child 最後一個孩子
hover 滑鼠懸停 nth-child(n) 第n個孩子
active 元素啟用(按下滑鼠不鬆開) first-of-type 第一個同型別孩子
focus 獲取焦點(表單元素) last-of-type 最後一個同型別孩子
nth-of-type(n) 第n個同型別孩子

結構偽類補充

1.關於括號中的n

  • 0或不寫:什麼都不選
  • n:選中所有(幾乎不用)
  • 1~正無窮:選中對應序號
  • 2n或even:選中序號為偶數
  • 2n+1或odd:選中序號為奇數
  • -n+3:選中前三個

原理:an + b

2.細節:

類似於立嫡立長,即取第一個兒子,孫子...(同時)

例子

div p:first-child

意思是找div中的第一個兒子,孫子...是不是p,是就賦予樣式

p:first-child

意思是找body中的第一個兒子,孫子...是不是p,是就賦予樣式

否定偽類

作用

排除滿足括號中條件的元素

語法

:not(選擇器)

p:not(:first-child) {
            color: skyblue;
        }
UI偽類

分類

what 意思
checked 被選中的核取方塊或單選框
enable 可用的表單元素
disabled 不可用的表單元素
 /* 選中的是被選中的核取方塊和單選框 */
        input:checked {
            width: 100px;
            height: 100px;
        }
        /* 選中的是被禁用的input元素 */
        input:disabled {
            background-color: gray;
        }
        /* 選中的是可用的input元素 */
        input:enabled {
            background-color: skyblue;
        }
目標偽類(瞭解)

作用

選中指定的錨點元素

/* 選中錨點指向的元素 */
        div:target{
            background-color: gray;
        }
語言偽類(瞭解)

作用

根據指定的語言選擇元素

 div:lang(en) {
            color: skyblue;
        }

偽元素選擇器

作用

選中元素中的一些特殊位置(在元素裡

分類

what 意思
first-letter 第一個文字
first-line 第一行文字
selection 被滑鼠選中
placeholder 提示文字(輸入框中)
before 最開始的位置建立子元素
after 最後的位置建立子元素
/* 選中元素中的第一個文字 */
        div::first-letter {
            color:skyblue;
        }
        /* 選中元素中的第一行文字 */
        div::first-line {
            color: gray;
        }
        /* 選中的是滑鼠選中的文字 */
        div::selection {
            color: red;
            background-color: gainsboro;
        }
        /* 選中的是input元素中的提示文字 */
        input::placeholder {
            color:skyblue;
        }
        /* 在p元素一開始的位置,建立一個子元素 */
        p::before {
            content: "¥";
        }
        /* 在p元素最後的位置,建立一個子元素 */
        p::after {
            content: "millions";
        }

[!WARNING]

first-letter 和first-line內容若出現使用重疊first-letter所使用的樣式會覆蓋first-line的樣式


選擇器優先順序

原則:

  • 透過權重來區分到底哪個樣式最優先
  • 行內樣式!important出現就不計較權重誰大誰小

細節呈現

權重語法:(a,b,c){a,b,c為個數}

a ID
b 類,偽類,屬性
c 元素,為元素

權重比較方式

一個一個進行比較,當a比出結果,權重就出結果若沒有,就接著往下讓b進行比較,以此類推

[!IMPORTANT]

!important > 行內樣式 > 一切權重

!important不到情急不可進行使用,因為這種做法會使工作的交接細節出現問題

即使使用了,過後也需要刪除找到無法用權重方式使樣式變更的原因,並解決

快捷方式:

只要將滑鼠放在選擇器上,則可以出現權重,無需計算

之前的講解是為了瞭解其中的權重計算原理,而非只是表面的計算

相關文章