前端 之 CSS選擇器、樣式

CSS介紹

什麼是 CSS

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

CSS的使用

語法結構:

選擇器 { 屬性 : 屬性值 ; 屬性 : 屬性值 ; 屬性 : 屬性值 ; }

三種引入方式:

行間式

<div style="width: 100px; height: 100px; background-color: red">CSS的第一種裝飾方式</div>

內聯式

<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
<div>CSS的第二種裝飾方式</div>
</body>

外聯式

file: my.css
div {
	width: 100px;
    height: 100px;
    background-color: red;
}
file: my.html
<head>
    <link rel="stylesheet" type="text/css" href="my.css" />
</head>
<body>
<div> CSS的第三種裝飾方式</div>
</body>

注意頁面css樣式通常都應該寫在單獨的css文件中

選擇器

基本選擇器

標籤選擇器

匹配文檔中所有與標籤名匹配的標籤:如div{}會匹配文檔中全部div,span{}會匹配文檔中所有span

div {
    background-color: yellow;
}

類選擇器

匹配文檔中所有擁有class屬性且屬性值爲red的標籤:如<sup class=“red”></sup> <sub class=“red”></sub>均會被匹配

.red {
    color: red;
}

注意:
樣式類名不要用數字開頭(有的瀏覽器不認)。
標籤中的class屬性如果有多個,要用空格分隔。

id選擇器

匹配文檔中所有擁有id屬性且屬性值爲div的標籤:如<div id=“div”></div> <section id=“div”></section>均會被匹配,id選擇器必須保證單文檔的唯一性

#div {
    text-align: center;
}

通配選擇器

匹配文檔中所有標籤:通常指html、body及body中所有顯示類的標籤

* {
    border: solid;
}

基礎選擇器優先級

  • 基礎選擇器優先級大致與選擇器匹配範圍成反比,匹配範圍越小,優先級越高
  • 基礎選擇器優先級大致與選擇器匹配精度成正比,匹配精度越高,優先級越高
  • 基礎選擇器優先級:id選擇器 > 類選擇器 > 標籤選擇器 > 通配選擇器

組合選擇器

羣組(分組和嵌套)選擇器

分組,不同的選擇器可以共用一個樣式
div, p, span{
    color: red;
}
嵌套,後代選擇器與標籤組合使用
div  p,span{
    color: red;
}

  • 分組一次性控制多個選擇器,嵌套一次性控制被嵌套的多個選擇器
  • 選擇器之間以,隔開,每一個選擇器位均可以爲任意合法選擇器或選擇器組合

子代(後代)選擇器

子代選擇器用>連接
div > span {
    color: red;
}
後代選擇器用空格連接
.sup .sub {
    color: red;
}
  • 一次性控制一個選擇器(邏輯最後的那個選擇器),前置位的選擇器爲修飾性選擇器
  • 每一個選擇器位均可以爲任意合法選擇器或選擇器組合
  • 子代選擇器必須爲一級父子嵌套關係,後代選擇器可以爲一級及多級父子嵌套關係

相鄰(兄弟)選擇器

相鄰選擇器用+連接 對下不對上
.d1 + .d2 {
    color: red;
}
兄弟選擇器用~連接 對下不對上
.d1 ~ .d3 {
    color: red;
}
  • 一次性控制一個選擇器(邏輯最後的那個選擇器),前置位的選擇器爲修飾性選擇器
  • 每一個選擇器位均可以爲任意合法選擇器或選擇器組合
  • 相鄰選擇器必須爲直接相鄰關係,兄弟選擇器可以爲直接相鄰或間接相鄰關係

組合選擇器優先級

  • 組合選擇器優先級與權值相關,權值爲權重和
  • 權重對應關係
選擇器 權重
通配 1
標籤 10
類、屬性 100
id 1000
!important 10000
  • 選擇器權值比較,只關心權重和,不更新選擇器位置
  • 不同級別的選擇器間不具備可比性:1個類選擇器優先級高於n個標籤選擇器的任意組合

屬性選擇器

選擇器 功能描述
[ attr ] 匹配擁有attr屬性的標籤
[ attr = val ] 匹配擁有attr屬性,屬性值爲val的標籤
[ attr ~= val ] 匹配擁有attr屬性,屬性值中包含指定詞彙的標籤。
[ attr |= val ] 匹配擁有attr屬性,屬性值帶有以指定值開頭的屬性值的標籤,該值必須是整個單詞。
[ attr ^= val ] 匹配擁有attr屬性,屬性值以val開頭的標籤
[ attr $= val ] 匹配擁有attr屬性,屬性值以val結尾的標籤
[ attr *= val ] 匹配擁有attr屬性,屬性值包含val的標籤
<head>
    <style>
		只要有xxx屬性名的標籤都找到
        [xxx] {
            color: red;
        }
        只要標籤有屬性名爲xxx並且值爲
        [xxx='1'] {
            color: blue;
        }
        規定p標籤內部必須有屬性名爲xxx並且值爲2的標籤
        p[xxx='2'] {
          color: green;
        }
    </style>
</head>
<body>
<p xxx>我只有屬性名</p>
<p xxx="1">我有屬性名和屬性值並且值爲1</p>
<p xxx="2">我有屬性名和屬性值並且值爲2</p>
</body>

僞類選擇器

選擇器 類型 功能描述
a:link 鏈接僞類選擇器 選擇匹配的a元素,而且匹配元素被定義了超鏈接並未被訪問過。常用於鏈接描點上
a:hover 用戶行爲選擇器 選擇匹配的a元素,且用戶鼠標停留在元素a上。
a:active 用戶行爲選擇器 選擇匹配的a元素,且匹配元素被激活。常用於鏈接描點和按鈕上
a:visited 鏈接僞類選擇器 選擇匹配的a元素,而且匹配元素被定義了超鏈接並已被訪問過。常用於鏈接描點上
a:focus 用戶行爲選擇器 選擇匹配的a元素,而且匹配元素獲取焦點
<head>
    <style>
        未訪問的鏈接
        a:link {
            color: red;
        }
        鼠標移動到鏈接上
        a:hover {
            color: yellow;
        }
        選定的連接
        a:active {
            color: black;
        }
        已訪問的鏈接
        a:visited {
            color: green;
        }
        input輸入框獲取焦點時樣式
        input:focus {
            background-color: red;
        }
    </style>
</head>
<body>
<a href="https://www.baidu.com">百度</a>
<a href="http://www.xiaohuar.com">笑話網</a>
<a href="http://www.sogo.com">sogo網</a>
<input type="text">
</body>

僞元素選擇器

first-letter

常用的給首字母設置特殊樣式
p:first-letter {
  font-size: 48px;
  color: red;
}

before

在每個<p>元素之前插入內容
p:before {
  content:"*";
  color:red;
}

after

在每個<p>元素之後插入內容
p:after {
  content:"[?]";
  color:blue;
} 

選擇器優先級

​ 相同選擇器,不同的引入方式:就進原則,誰越靠近標籤誰說了算
​ 不同選擇器,相同的引入方式:行內樣式 > id選擇器> 類選擇器 > 標籤選擇器

標籤樣式

基本樣式

<head>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>

長度

  • px:像素(pixel),屏幕上顯示的最小單位,用於網頁設計,直觀方便
  • mm:毫米
  • cm:釐米
  • in:英寸
  • pt:點(point),一個標準的長度單位,1pt=1/72in,用於印刷業,非常簡單易用;
  • em:相當長度,通常1em=16px,應用於流式佈局

顏色

  • red;直接寫英文單詞
  • rgb():三個值可爲[0-255]數值或百分比,以,相隔(r:Red g:Green b:Blue)
  • rgba():前三個值可爲像素或是百分比,最後一個透明度爲[0, 1]數值,以,相隔(r:Red g:Green b:Blue a:Alpha)
  • hsl():第一個值爲[0,360]數值,後二個值可爲百分比,以,相隔(h:Hue s:Saturation l:Lightness)
  • hsla():第一個值爲[0,360]數值,中間二個值可爲百分比,最後一個爲[0, 1]數值,以,相隔(h:Hue s:Saturation l:Lightness a:Alpha)
  • #AABBCC:六個十六進制位,每兩位一整體,分別代表Red、Green、Blue,可以簡寫#abc

常用樣式

字體樣式

  • font-family:字體族科,多值用於備用,以,隔開
font-family: "STSong", "Arial";
  • font-size:字體大小
  • font-style: 字體風格 normal、italic、oblique
  • font-weight:字體重量 normal、bold、lighter、100~900
  • line-height:行高
  • font:字重 風格 大小/行高 字族

文本樣式

  • color:文本顏色
  • text-align:橫向排列
left 居左 、center 居中 、right 居右、justify 兩端對齊
  • vertical-align:縱向排列
baseline:將支持valign特性的對象的內容與基線對齊 
sub:垂直對齊文本的下標 
super:垂直對齊文本的上標 
top:將支持valign特性的對象的內容與對象頂端對齊 
text-top:將支持valign特性的對象的文本與對象頂端對齊 
middle:將支持valign特性的對象的內容與對象中部對齊 
bottom:將支持valign特性的對象的文本與對象底端對齊 
text-bottom:將支持valign特性的對象的文本與對象底端對齊 
  • text-indent:字體縮減
p{
    text-indent: 48px;
}
  • text-decoration:字劃線
underline:下劃線、overline:上劃線、line-through:中劃線、none:沒有劃線、inherit:承父元素的text-decoration屬性的值
  • letter-spacing:字間距
  • word-spacing:詞間距
  • word-break:自動換行
normal:默認換行規則
break-all:允許在單詞內換行

背景樣式

  • background-color:顏色
background-color: green;
  • background-image:圖片,通過 opacity:(0-1) 來控制透明度
background-image: url("bg.png");
  • background-repeat:重複
background-repeat: no-repeat;
repeat(重複)no-repeat(不重複)repeat-x(X軸重複)repeat-y(Y軸重複)
  • background-position:定位
background-position: center;
top、bottom、left、right 、center
  • background-attachment:滾動模式
scroll、fixed

可以寫到一起:

background: no-repeat center url("bg.png") blue ;

邊框

  • border-width:邊框寬度
border-width: 3px;
  • border-style:邊框類型
none: 默認無邊框、dotted: 點線框、dashed: 虛線框、solid: 實線邊界、double: 兩個邊界、groove: 3D溝槽邊界、ridge: 3D脊邊界
  • border-color:邊框顏色
border-color:
transparent:透明
  • 單獨爲某一個邊框設置樣式
{
  border-top-style:dotted;
  border-top-color: red;
  border-right-style:solid;
  border-bottom-style:dotted;
  border-left-style:none;
}
  • border-style:上 右 下 左 ;對不同的邊框進行設置
屬性可以有1-4個值
border-style:dotted solid double dashed;

可以寫到一起:

border: 3px solid red;
  • border-radius:邊框圓弧的角度
div {
    width: 400px;
    height: 400px;
    background-color: red;
    border: 3px solid black;
    border-radius: 50%;
        }

新邊框屬性

屬性 說明
border-image 設置所有邊框圖像的屬性。
border-radius 一個用於設置所有四個邊框- *-半徑屬性屬性
box-shadow 附加一個或多個下拉框的陰影

dispaly屬性

用於控制HTML元素的顯示效果。

意義
display:“none” HTML文檔中元素存在,但是在瀏覽器中不顯示。一般用於配合JavaScript代碼使用。
display:“block” 默認佔滿整個頁面寬度,如果設置了指定寬度,則會用margin填充剩下的部分。
display:“inline” 按行內元素顯示,此時再設置元素的width、height、margin-top、margin-bottom和float屬性都不會有什麼影響。
display:“inline-block” 使元素同時具有行內元素和塊級元素的特點。

display:"none"與visibility:hidden的區別:

visibility:hidden: 可以隱藏某個元素,但隱藏的元素仍需佔用與未隱藏之前一樣的空間。也就是說,該元素雖然被隱藏了,但仍然會影響佈局。

display:none: 可以隱藏某個元素,且隱藏的元素不會佔用任何空間。也就是說,該元素不但被隱藏了,而且該元素原本佔用的空間也會從頁面佈局中消失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章