1. 程式人生 > >css 選擇器和屬性

css 選擇器和屬性

css概述:

 css(Cascading Style Sheet)層疊樣式表,是對html進行樣式修飾的語言。

css即樣式定義如何顯示 HTML 元素

樣式通常儲存在css檔案中,解決了內容(html)與表現(css)分離的問題

如果有多個css同時修飾一個html檔案,那麼css衝突的部分(即多個樣式都修飾一個html標籤的內容),會使用優先順序高的樣式,不衝突的部分,共同修飾,如下圖所示

 

1 css的作用

  • css修飾html,使得html更美觀
  • html的內容(html)與樣式(css)相分離,便於後期維護
  • html和css分開,同一個樣式可用於多個html中,提高程式碼重用性

2語法 

selector {property1: value;property2: value}
selector要改變樣式的html元素,即標籤 ,花括號包圍宣告,屬性和值之間用冒號隔開,多個屬性之間用分號隔開,最後的分號可加可不加,
為了便於後期維護,還是加上分號較好
顏色值:可以用單詞red orange等
       也可以用rgb16進位制的值,如#ff0000 代表紅
       還可以使用color:rgb(255,0,0)或者color:rgb(100%,0%,0%)來表示紅色
如果值為多個單詞,使用雙引號
字型大小要記得加單位px,(html可不加,預設為px),如font-size:50px

3 html中加入css的四種方式

方式1,內嵌式,將css的程式碼嵌入到html標籤語句中,html每個標籤都有style屬性,將style屬性的值設為css的表達方式即可,如下

<div style="color:blue;font-size:50px" > helloworld<div>
<!--css嵌入到html標籤,修飾這個標籤-->

方式2,內部樣式,使用<style></style>標籤,屬性type的值為"text/css",包裹住要編寫的標籤樣式(css程式碼),程式碼多的時候不建議使用,因為瀏覽器從上往下載入,程式碼多會影響載入速度,如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css" >
div{                <!--方式2,內部樣式-->
    color:red;
    font-size:60px;
    }
</style>
<title>css的引入</title>
</head>
<body>
   <div> helloworld</div>
   <div> <span>world</span> <span>hello</span></div>
 
</body>
</html>

方式3,鏈入外部樣式,在html中使用標籤<link />將外部樣式(css檔案)引入到html中,這種方式推薦使用

 <link/>鏈入外部檔案標籤 ,屬性

             rel:不認識這個屬性,引入css的時候將該屬性設為"stylesheet" 

             type:引入的型別,引入css值為"text/css" 

             href:引入css的路徑

如下,定義html中的<div></div>標籤內容的樣式,css檔案

div{
	color:red;
	font-size: 50px;
}

在html中引入css檔案

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!--方式3,引入外部檔案,可放到</body>標籤的後面-->
<link rel="stylesheet"  type="text/css" href="css/embeed.css" />
<title>css的引入</title>
</head>
<body> 
   <div> hello world</div>
   <div> <span>world</span> <span>hello</span></div> 
</body>
</html>

 方式四:.@import方式,使用<style></style>標籤中設定type屬性值為"text/css",包裹住@import語句,形式如下

<style type="text/css">
   @import url("css檔案地址")
</style>

css檔案不變,下面是html通過方式四引入css的程式碼 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!--方式4,通過@import方式引入外部css檔案-->
<style type="text/css">
 @import url("css/embeed.css")
</style>

<title>css的引入</title>
</head>
<body>
   <div> hello world</div>
   <div> <span>world</span> <span>hello</span></div> 
</body>
</html>

   四種引入css修飾html的方式的區別:

方式1每次只能修飾單個標籤,且程式碼複用性低,不易維護

方式2,如果css程式碼多,會導致瀏覽器載入速度慢,可以將css程式碼部分放到</body>標籤後,先載入html,再載入css部分

方式3,鏈入外部css檔案,所有瀏覽器支援,可講鏈入語句放到</body>後面,瀏覽器先載入html,再載入css,提升速度,支援javascript動態修改

方式4,有些瀏覽器不支援,載入完html後才載入css,可提升速度,不支援javascript動態修改css

4 css中的註釋樣式

css中的註釋樣式如下:
/*
註釋內容   
*/
html中的註釋樣式如下:
<!-- 註釋內容-->

注意:在html中以內部方式2引入css後,在css程式碼部分即<style type="text/css"></style>之間的註釋屬於css的註釋!
                

一 選擇器

選擇器的作用是用來定位到某個或者某組標籤的,因為你要修飾的標籤和你寫的修飾程式碼總要一一對應吧

1 基本選擇器

1元素選擇器:

元素選擇器的作用是,對html檔案中同一種元素(即同一種html標籤)設定樣式,語法為:html標籤名{css屬性:值;css屬性:值;}

比如要將段落設定成灰色:

p {color:gray;}

示例:

css檔案:

/*
元素選擇器
*/
div{
	color:red;
	font-size: 20px;
}
span{
	color:pink;
	font-size: 30px;
}

  html檔案:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <div> hello world 中國加油</div>
  <div> <span>hello world</span> <span>中國加油</span>  </div>
  <div> hello world 中國加油</div>
  
</body>
<link rel="stylesheet" type="text/css" href="css/basic1.css" />
</html>

2 ID選擇器,以一種獨立於文件元素的方式來指定樣式,html標籤都有一個id屬性,id可以用來區分同種標籤也可以用來區分不同標籤

我們可以給html標籤設定id值,然後用id選擇器來指定它的樣式,注意id具有唯一性,第一個字元不能使用數字,語法:

#id值{css屬性:值}

示例:

/*
ID選擇器,一次只能設定一個
*/
#div1{
	color:red;
	font-size: 20px;
}

#div2 {
	color: yellow;
	font-size:10px;
}
#span1{
	color:pink;
	font-size: 50px;
}
#span2{
	color:pink;
	font-size: 50px;
}

對應的html檔案為:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>id選擇器</title>
</head>
<body>
  <div id="div1"> hello world 中國加油</div>
  <div id="div2"> hello world 中國加油</div>
  <div id="div3"> <span id="span1">hello world</span>  <span id="span2">中國加油</span>   </div>
  
</body>
<link rel="stylesheet" type="text/css" href="css/basic2.css" />
</html>

2 類(class)選擇器,html的標籤有個屬性class,意思是可以設定標籤的分組,即便不同種類的標籤,也可以分為同一組,注意:類名的第一個字元也不能是數字

語法:

.class值{css屬性:值}
說明:  .是英文字元的點

示例:css檔案

/*
類選擇器,
*/
.div1 {
	color:red;
	font-size:20px;
}

.div2{
	color:pink;
	font-size:40px;
}

html檔案:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>類選擇器</title>
</head>
<body>

   <div id="div1" class="div1"> <!-- 第1行" -->
    hello world 
   </div>
  
   <div id="div2" class="div1"><!-- 第2行 -->
   hello world 
   </div>
   
   <div id="div3">             <!-- 第3行 -->
     <span id="span1" class="div1"> <!-- 第3行 第1個-->
     hello world
     </span> 
     <span id="span2" class="div2"> <!-- 第3行 第2個-->
             中國加油
     </span> 
   </div>
   
   <div class="div2">            <!-- 第4行 -->
    hello
   </div>
   
  
</body>
<link rel="stylesheet" type="text/css" href="css/basic3.css" />
</html>

說明:選擇器的優先順序:id選擇器>類(class)選擇器>元素選擇器 

2  屬性選擇器

如果一個標籤具有多個屬性,而根據屬性值的不同,來選擇該某個標籤,使用屬性選擇器

語法1

用法1:   *[某屬性]{css屬性:值} 對具有該屬性的所有元素設定樣式,星號可省略

如:

*[name]{color:red;}  將所有具有name屬性的元素都設定成紅色

 語法2

用法2:         某種標籤[某屬性1][某屬性2]{css屬性:值}          對有(一個或)多個該屬性的某種標籤修改樣式              

如:

a[href] {color:red;}  有的<a>標籤沒設定href屬性,有的設定了href屬性,將設定了href的標籤選中修改為紅色

  語法3:

用法3:         標籤型別[屬性1="屬性值"][屬性2="屬性值"]{ css屬性:值} 可以根據(一個或)多個屬性值來選擇某種型別標籤

示例:

/*
屬性選擇器,
*/
a[name][href]{
	color:yellow;
	font-size:15px;
}
input[type="text"]{
	background-color: green;
}

html檔案:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <a name="連結1" href="#">連結1 </a>     <br/>
    <a name="連結2" >連結2 </a>             <br/>
    <div> 
      <span>
                      輸入
      </span>
      <span>
        <input type="text" name="input" >
      </span>
	</div>

    <div> 
       <span>
                  密碼
       </span>
       <span>
       <input type="password" name="passwd"  >
      </span>
	</div>
</body>
<link rel="stylesheet" type="text/css" href="css/basic4.css" />
</html>

3 偽元素選擇器 

 偽元素用於向某些選擇器設定特殊效果,常用於連結標籤,即<a></a>標籤,其他關於偽元素的內容請訪問:http://www.w3school.com.cn/css/css_pseudo_elements.asp

<a></a>標籤應用偽元素選擇器的格式:

靜止狀態 a:link{css屬性}
懸浮狀態 a:hover{css屬性}
觸發狀態 a:active{css屬性}
完成狀態 a:visited{css屬性}

示例:css

/*
偽元素選擇器
*/

a:link {
	color:red;
}
a:hover {
	color:black;
}

a:active {
	color:yellow;
}
a:visited{
	color:green;
}

html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
   <a href="http:www.baidu.com" > 轉向百度</a>
</body>
<link rel="stylesheet" type="text/css" href="css/basic5.css" />
</html>

這是滑鼠指著此連結的時候,即懸浮狀態,是黑色的

4 層級選擇器 

根據優先順序,id選擇器>class選擇器>元素選擇器,依次選擇層級關係

語法:父級選擇器 子級選擇器 ...{ css屬性:值}

示例:css

/*
層級選擇器,根據優先順序,id選擇器>class選擇器>元素選擇器,可以依次設定層級關係
*/

#div1 .word {          /* 只選到某行 */
	color:red;
	background-color: green;
}

#div1 .ppt span{        /* 選到了某行的某個小標籤*/
	color:black;
	background-color:yellow;
}
#div2 .ppt{
	color:orange;
	background-color: blue;
}

html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
   <div id="div1">
     <div class="word">
          <span> 第1塊第1行</span>
     </div> 
     <div class="ppt">
          <span>  第1塊第2行</span>
     </div>  
   </div>
   <div id=div2>
     <div class="word">
         <span> 第2塊第1行</span>
     </div> 
     <div class="ppt">
         <span>  第2塊第2行</span>
     </div>  
   
   </div>
</body>
<link rel="stylesheet" type="text/css" href="css/basic6.css" />
</html>

更過內容可訪問(http://www.w3school.com.cn/css/css_selector_descendant.asp)

二 常用屬性

css是用來修飾html元素的,有很多屬性,下面介紹下常用的屬性

1 文字屬性

以下為設定文字的常用屬性

font-size     設定字型的尺寸。單位必須要寫,px畫素,  或者用em,1em 的預設尺寸是 16 畫素,轉換關係pixels/16=em
font-family    設定字型型別。
font-size-adjust    當首選字型不可用時,對替換字型智慧縮放。
font-stretch    對字型水平拉伸。
font-style    設定字型風格。
font-weight    設定字型的粗細。

示例:這段程式碼css引入的方式為在html中使用<style></style>標籤,設定屬性type值為"text/css",

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>css字型屬性</title>
</head>
<body>
	<div>
	  <span> 我們要加油!</span>
	</div>
</body>
<style type="text/css">
/* 引入css的這一部分的註釋方式為css的註釋方式*/
	span{
	/*  font-size: 16px; */
	  font-size:3em;
	  font-family: 楷體;
	}
</style>
</html>

2  文字屬性

CSS 文字屬性可定義文字的外觀文字屬性的作用是可以設定文字顏色,有無下劃線,字元間距,對齊方式,縮排等樣式,列舉常用屬性:

color   文字顏色,值為顏色名稱單詞如red,或者十六進位制數字如#ff0000(代表紅),或rgb數值,如rgb(255,0,0)代表紅

text-decoration    向文字新增修飾。值為overline在文字上方畫一條橫線,ling-through在文字中間畫一條橫線,underline下劃線,none本屬性什麼也不設定

text-align    元素中文字的對齊方式,值為 left,center,right
line-height    行間距。值為畫素值或者百分比,當前字型尺寸的百分比,或者長度,如1cm
text-indent    縮排元素中 文字的首行。值為長度,如1cm,2cm或者百分比,這個段落長度的百分比

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>css文字屬性</title>
</head>
<body>
	<p>
	         鵝鵝鵝, <br/>
	         曲項向天歌。 <br/>
	          白毛浮綠水, <br/>
	          紅掌撥清波。 <br/>
	</p>
</body>
<style type="text/css">
	p{
	color: green;
	text-decoration: underline;
	text-align: center;
	line-height: 1cm;
	text-indent: 0.5cm;
	
	}
</style>
</html>

3 背景屬性 

css既可以用純色作背景,也可以用背景影象做背景或做出複雜的效果

設定格式為

body{背景屬性:屬性值;}

常用的屬性:

background-color:背景顏色
background-image:背景圖片值為url(“圖片地址”);
background-repeat:背景影象的平鋪方式,預設橫向縱向平鋪把網頁佔滿,值為repeat橫向縱向平鋪no-repeat:不平鋪repeat-y:縱向平鋪repeat-x橫向平鋪

background-position    背景影象的起始位置。值可以是x% y%,也可以是xpos ypos,任何css支援的單位均可,或者使用left top等方式也可以設定

示例: 因為網頁背景色設成了紅色,為了能看清網頁的字型,在<div></div>標籤中引入了css,對文字設定了顏色

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>css背景屬性</title>
</head>
<body>
	<div style="color:black">hello</div>
</body>
<style type="text/css">
	body{
	background-color: red;
	background-image: url("images/01.png");
	background-repeat: repeat-y;
	background-position: 80px 80px;
	}
</style>
</html>

4 列表屬性

CSS提供的 列表屬性可以放置、改變列表項標誌,還可以把圖片當作列表項標誌。

常用的列表屬性:

list-style-type:列表項前的小標誌,值為decimal以數字作為標記,none無標記,decimal-leading-zero以0開頭的數字,如01,02...還有好多,none不設定小標誌
list-style-image:列表項前的小圖片,值為url(“圖片地址”)

list-style-position:規定列表中列表專案標記的位置,值為indise和outside,簡單理解為是否相對與上一行的非列表項是否有縮排,預設為outside

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>css列表屬性</title>
</head>
<body>
	<ul>
	 <li>青菜</li>
	 <li>蘿蔔</li>
	 <li>白菜</li>
	</ul>
</body>
<style type="text/css">
	ul{
	 list-style-type: decimal-leading-zero;
	 list-style-image: url("images/02.png");
	 list-style-position: inside;
	}
</style>
</html>

5 尺寸屬性

設定元素的高度和寬度,以及行間距等,常用的屬性如下:
height:高度 值為length,可以是畫素值如10px,1cm等單位,或者百分比(塊級物件的百分比作為高度),如50%

width:寬度  值跟height設定方法一樣

line-height:行間距 值為length 固定的行間距,如1cm 或者數字(數字與當前字型尺寸的乘積作為行間距)如1,2,也可以設定畫素值,如10px,或者百分比(當前字型尺寸的百分比作為行間距),如50%

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>css尺寸屬性</title>
</head>
<body>
	<div id="div1">
	helloworld
	</div>
	<div id="div2">
	helloworld
	</div>
	<div id="div3">
	helloworld
	</div>
	
</body>
<style type="text/css">
	#div1{
		height:50px;
		width:50px;
	}
	#div2{
		height:50px;
		width:50px;
		line-height: 30px;
	}
	#div3{
		height:60px;
		width:50px;
		line-height: 90px;
	}
	
</style>
</html>

   一般情況下不用設定行間距屬性吧

 

盒子(框)模型

html中有些標籤可以多層巢狀,比如<div></div>標籤,假設將這種標籤看作是一個盒子,盒子裡面裝有東西,就可以用上盒子模型了,盒子模型可以用來排版佈局.

如下圖示意:

一 一來看,先看邊框border,上述的盒子分為兩個邊框,內邊框和外邊框,可以通過邊框的屬性設定元素邊框的樣式、寬度和顏色

說明:外層背景適用於由元素邊框和外邊框組成的區域

邊框border的常用屬性如下:

border-width:邊框的寬度
border-color:邊框的顏色
border-style:邊框的線型
border-top:上邊框
border-bottom:下邊框
border-left:左邊框
border-right:右邊框

再看內邊距: 內邊距指的是邊框和內容區之間。

內邊距屬性 padding ,它定義元素外邊框與元素內容之間的空白區域,看下padding的取值,padding 屬性接受長度值(包括畫素,em)或百分比值,但不允許使用負值,

取值形式:
10px;代表上下左右都是10px
1px 2px 3px 4px;四個值對應的順序是上 右 下 左
1px 2px;如果只有兩個值那麼第一個值代表上下,第二個值代表左右
1px 2px 3px;如果三個值,第一個代表上,第二個代表左右,第三個代表下


padding-top:  該屬性還可以單獨設定每個邊,還有padding-right, padding-bottom, padding-left

 

外邊距:代表者外邊框和其他元素之間的距離,

外邊距屬性margin,看下margin的取值,margin屬性接受任何長度單位,可以是畫素、英寸、毫米或 em。

取值形式:

10px;代表上下左右都是10px
1px 2px 3px 4px;四個值對應的順序是上右下左
1px 2px;只有兩個值的話,第一個值對應上下,第二個值對應左右
1px 2px 3px;設定為三個值的話,第一個值對應上,第二個值對應左右,第三個值對應下
 margin-top:該屬性還可以單獨設定每個外邊距,類似的還有margin-bottom,margin-left,margin-right

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>盒子模型</title>
</head>
<body>
	<div class="wai">
	   <div class="nei" >hello</div>
	</div>
</body>
<style type="text/css">
	.wai{
		width:120px;
		height:120px;
		border-width: 1px;
		border-color: green;
		border-style:solid;
		padding: 10px 20px 30px 40px;
		margin: 20px   40px;
		background-color: yellow;
		box-sizing:border-box;
	}
	.nei{
	    width:60px;
		height:80px;
		color: red;
		border-style: solid;
		background-color: orange;
		
	    }
</style>
</html>

注意:

1盒子設定padding,設定不當的時候,會改變盒子的形狀,不設定 padding的盒子形狀不會改變

2在某層盒子中加入下面三行程式碼,即便設定了padding也不會被撐爆,超過盒子的寬或者高時,維持在不被撐爆的樣子 

        -webkit-box-sizing: border-box;  
        -moz-box-sizing: border-box;   
        box-sizing:border-box;

3盒子外觀的寬度=2*border的寬度+2*padding的寬度+內容的寬度,預設兩邊border厚度相同,兩邊的padding寬度也相同,計算高度同理

參考:小猴子javaWeb視訊

       http://www.w3school.com.cn