天天看點

前端基礎之CSS樣式

一、CSS介紹

CSS:層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(标準通用标記語言的一個應用)或XML(标準通用标記語言的一個子集)等檔案樣式的計算機語言。CSS不僅可以靜态地修飾網頁,還可以配合各種腳本語言動态地對網頁各元素進行格式化。

CSS 能夠對網頁中元素位置的排版進行像素級精确控制,支援幾乎所有的字型字号樣式,擁有對網頁對象和模型樣式編輯的能力。

二、CSS文法

2.1CSS執行個體

每個CSS樣式由兩個組成部分:選擇器和聲明。聲明又包括屬性和屬性值。每個聲明之後用分号結束。

前端基礎之CSS樣式

2.2注釋

/*注釋*/
           

三、CSS的幾種引入方式

3.1行内樣式

行内式是在标記的style屬性中設定CSS樣式。不推薦大規模使用。

<p style="color: red">Hello world.</p>
           

3.2内部樣式

嵌入式是将CSS樣式集中寫在網頁的<head></head>标簽對的<style></style>标簽對中。格式如下:

<head>

      <meta charset="UTF-8">
  <title>Title</title>
  
    <style>
            p{
            background-color: #2b99ff;
        }

      </style>

</head>
           

3.3外部樣式

外部樣式就是将css寫在一個單獨的檔案中,然後在頁面進行引入即可。推薦使用此方式。

<link href="mystyle.css" rel="stylesheet" type="text/css"/>
           

四、CSS選擇器

4.1基本選擇器

4.1.1 标簽選擇器

标簽名{
    color: "red";
}
           

4.1.2 ID選擇器

#ID名 {
    color: "red";
}
           

4.1.3 類選擇器

.類名{
    color: "red";
}

标簽 .類名{
    color: "red";
}
           

注意:樣式類名不要用數字開頭(有的浏覽器不支援)。标簽中的class屬性如果有多個,要用空客分隔。

4.1.4通用選擇器

* {
    color: "red";
}
           

4.2組合選擇器

4.2.1 後代選擇器

/*li内部的a标簽設定字型顔色*/
li a {
    color: green;
}
           

4.2.2 兒子選擇器

/*選擇所有父級是 <div> 元素的 <p> 元素*/
div>p {
    font-family: "Arial Black", arial-black, cursive;
}
           

4.2.3 毗鄰選擇器

/*選擇所有緊接着<div>元素之後的<p>元素*/
div+p {
    margin: 5px;
}
           

4.2.4 兄弟選擇器

/*給同級标簽,所有相同類名的标簽*/
标簽名~ .類名{
    color: red;
}
           

4.3 屬性選擇器

/*用于選取帶有指定屬性的元素。*/
p[title] { color: red; } /*用于選取帶有指定屬性和值的元素。*/ p[title="213"] { color: green; }
           
/*找到所有title屬性以hello開頭的元素*/
[title^="hello"] {
  color: red;
}

/*找到所有title屬性以hello結尾的元素*/
[title$="hello"] {
  color: yellow;
}

/*找到所有title屬性中包含(字元串包含)hello的元素*/
[title*="hello"] {
  color: red;
}

/*找到所有title屬性(有多個值或值以空格分割)中有一個值為hello的元素:*/
[title~="hello"] {
  color: green;
}

不怎麼常用的屬性選擇器
           

4.4分組和嵌套

4.4.1分組

當多個元素的樣式相同的時候,我們沒有必要重複的為每一個元素都設定樣式,我們可以通過在多個選擇器之間使用逗号分隔的分組選擇器來統一設定元素樣式。

div, p {
    color: red;
}
           

4.4.2嵌套

多種選擇器可以混合起來使用,比如:.c1類内部所有p标簽設定字型顔色為紅色。

.c1 p {
    color: red;
}
           

4.5 僞類選擇器

/* 未通路的連結 */
a:link {
  color: #FF0000
}

/* 滑鼠移動到連結上 */
a:hover {
  color: #FF00FF
} 
/* 標明的連結 */
a:active {
  color: #0000FF
}

/* 已通路的連結 */
a:visited {
  color: #00FF00
} 
/*input輸入框擷取焦點時樣式*/
input:focus {
  outline: none;
  background-color: #eee;
}

           

4.6 僞元素選擇器

4.6.1 first-letter

常用的給首字母設定特殊樣式:

p:first-letter {
    font-size: 48px; color: red;
}

           

4.6.2 before

在每個<p>元素之前插入内容

p:before { content:"*"; color:red; }

           

4.6.3 after

在每個<p>元素之後插入内容

p:after { content:"[?]"; color:blue; }

           

before和after多用于清除浮動。

4.7 選擇器的優先級

4.7.1CSS繼承

繼承是CSS的一個主要特征,它是依賴于祖先-後代的關系的。繼承是一種機制,它允許樣式不僅可以應用于某個特定的元素,還可以應用于它的後代。例如一個body定義了的字型顔色值也會應用到段落的文本中。

body {
    color: red; 
}

           

此時頁面上所有标簽都會繼承body的字型顔色。然而CSS繼承性的權重是非常低的,是比普通元素的權重還要低的0。

我們隻要給對應的标簽設定字型顔色就可覆寫掉它繼承的樣式。

p { color: green; }

           

此外,繼承是CSS重要的一部分,我們甚至不用去考慮它為什麼能夠這樣,但CSS繼承也是有限制的。有一些屬性不能被繼承,如:border, margin, padding, background等。

4.7.2選擇器的優先級

我們上面學了很多的選擇器,也就是說在一個HTML頁面中有很多種方式找到一個元素并且為其設定樣式,那浏覽器根據什麼來決定應該應用哪個樣式呢?

其實是按照不同選擇器的權重來決定的,具體的選擇器權重計算方式如下圖:

前端基礎之CSS樣式

除此之外還可以通過添加 !important方式來強制讓樣式生效,但并不推薦使用。因為如果過多的使用!important會使樣式檔案混亂不易維護。

萬不得已可以使用!important