初始CSS3
什么是CSS3?
CSS3是CSS2的升級(jí)版本,3只是版本號(hào),它在CSS2.1的基礎(chǔ)上增加了很多強(qiáng)大的新功能。 目前主流瀏覽器chrome、safari、firefox、opera、甚至360都已經(jīng)支持了CSS3大部分功能了,IE10以后也開始全面支持CSS3了。
在編寫CSS3樣式時(shí),不同的瀏覽器可能需要不同的前綴。它表示該CSS屬性或規(guī)則尚未成為W3C標(biāo)準(zhǔn)的一部分,是瀏覽器的私有屬性,雖然目前較新版本的瀏覽器都是不需要前綴的,但為了更好的向前兼容前綴還是少不了的。
CSS3能做什么?
選擇器、圓角效果、塊陰影與文字陰影、色彩、漸變效果、個(gè)性化字體、多背景圖、邊框背景圖、變形處理、多欄布局、媒體查詢(針對(duì)不同屏幕分辨率,應(yīng)用不同的樣式)
邊框、顏色、文字字體、背景相關(guān)的樣式
- border-radius: 5px 4px 3px 2px; /* 四個(gè)半徑值分別是左上角、右上角、右下角和左下角,順時(shí)針 */ 不要以為border-radius的值只能用px單位,你還可以用百分比或者em,但兼容性目前還不太好。
- box-shadow: X軸偏移量 Y軸偏移量 [陰影模糊半徑] [陰影擴(kuò)展半徑] [陰影顏色] [投影方式];
注意:inset 可以寫在參數(shù)的第一個(gè)或最后一個(gè),其它位置是無效的。

以上的語法的介紹,就這么簡(jiǎn)單,如果添加多個(gè)陰影,只需用逗號(hào)隔開即可。如:
.box_shadow{
box-shadow:4px 2px 6px #f00, -4px -2px 6px #000, 0px 0px 12px 5px #33CC00 inset;
}
-
border-image的語法:
52e2201a0001b1e004720260.jpg - background-color:rgba(100,120,60,0.5);
- 顏色漸變:background-image:linear-gradient(to left, red, orange,yellow,green,blue,indigo,violet);
第一個(gè)參數(shù)省略時(shí),默認(rèn)為“180deg”,等同于“to bottom”。
第二個(gè)和第三個(gè)參數(shù),表示顏色的起始點(diǎn)和結(jié)束點(diǎn),可以有多個(gè)顏色值。 - CSS3文字與字體 text-overflow 與 word-wrap
但是text-overflow只是用來說明文字溢出時(shí)用什么方式顯示,要實(shí)現(xiàn)溢出時(shí)產(chǎn)生省略號(hào)的效果,還須定義強(qiáng)制文本在一行內(nèi)顯示(white-space:nowrap)及溢出內(nèi)容為隱藏(overflow:hidden),只有這樣才能實(shí)現(xiàn)溢出文本顯示省略號(hào)的效果,代碼如下:
text-overflow:clip(表示剪切)|ellipsis(表示顯示省略標(biāo)記);
overflow:hidden; //(規(guī)定段落中的文本不進(jìn)行換行)overflow 屬性規(guī)定當(dāng)內(nèi)容溢出元素框時(shí)發(fā)生的事情。
white-space:nowrap; //(規(guī)定段落中的文本不進(jìn)行換行)white-space 屬性設(shè)置如何處理元素內(nèi)的空白
同時(shí),word-wrap也可以用來設(shè)置文本行為,當(dāng)前行超過指定容器的邊界時(shí)是否斷開轉(zhuǎn)行。
word-wrap:normal(默認(rèn))|break-word(內(nèi)容將在邊界處換行);
normal為瀏覽器默認(rèn)值,break-word設(shè)置在長(zhǎng)單詞或 URL地址內(nèi)部進(jìn)行換行,此屬性不常用,用瀏覽器默認(rèn)值即可。
- 嵌入字體@font-face
@font-face {
font-family : 字體名稱;
src : 字體文件在服務(wù)器上的相對(duì)或絕對(duì)路徑;
}
- text-shadow可以用來設(shè)置文本的陰影效果。
text-shadow: X-Offset Y-Offset blur color;
Blur:是指陰影的模糊程度,其值不能是負(fù)值,如果值越大,陰影越模糊,反之陰影越清晰,如果不需要陰影模糊可以將Blur值設(shè)置為0; - background:url(xx.jpg) 10px 20px no-repeat;
- background-origin 元素背景圖片的原始起始位置
background-origin : border-box | padding-box | content-box;
需要注意的是,如果背景不是no-repeat,這個(gè)屬性無效,它會(huì)從邊框開始顯示。 - background-clip : border-box | padding-box | content-box | no-clip
- background-size: auto | <長(zhǎng)度值> | <百分比> | cover | contain
1、auto:默認(rèn)值,不改變背景圖片的原始高度和寬度;
2、<長(zhǎng)度值>:成對(duì)出現(xiàn)如200px 50px,將背景圖片寬高依次設(shè)置為前面兩個(gè)值,當(dāng)設(shè)置一個(gè)值時(shí),將其作為圖片寬度值來等比縮放;
3、<百分比>:0%~100%之間的任何值,將背景圖片寬高依次設(shè)置為所在元素寬高乘以前面百分比得出的數(shù)值,當(dāng)設(shè)置一個(gè)值時(shí)同上;
4、cover:顧名思義為覆蓋,即將背景圖片等比縮放以填滿整個(gè)容器;
5、contain:容納,即將背景圖片等比縮放至某一邊緊貼容器邊緣為止。 - multiple backgrounds
CSS3選擇器(上)
-
屬性選擇器56653eba0001b07004610215.jpg
- CSS3 結(jié)構(gòu)性偽類選擇器—root
:root選擇器,從字面上我們就可以很清楚的理解是根選擇器,他的意思就是匹配元素E所在文檔的根元素。在HTML文檔中,根元素始終是<html>。 - CSS3 結(jié)構(gòu)性偽類選擇器—not
:not選擇器稱為否定選擇器,和jQuery中的:not選擇器一模一樣,可以選擇除某個(gè)元素之外的所有元素。就拿form元素來說,比如說你想給表單中除submit按鈕之外的input元素添加紅色邊框,CSS代碼可以寫成
input:not([type="submit"]){
border:1px solid red;
}
- CSS3 結(jié)構(gòu)性偽類選擇器—empty
:empty選擇器表示的就是空。用來選擇沒有任何內(nèi)容的元素,這里沒有內(nèi)容指的是一點(diǎn)內(nèi)容都沒有,哪怕是一個(gè)空格。 - CSS3 結(jié)構(gòu)性偽類選擇器—target
:target選擇器稱為目標(biāo)選擇器,用來匹配文檔(頁(yè)面)的url的某個(gè)標(biāo)志符的目標(biāo)元素。我們先來上個(gè)例子,然后再做分析
HTML代碼
<h2><a href="#brand">Brand</a></h2>
<div class="menuSection" id="brand">
content for Brand
</div>
CSS代碼:
.menuSection{
display: none;
}
:target{/*這里的:target就是指id="brand"的div對(duì)象*/
display:block;
}
1、具體來說,觸發(fā)元素的URL中的標(biāo)志符通常會(huì)包含一個(gè)#號(hào),后面帶有一個(gè)標(biāo)志符名稱,上面代碼中是:#brand
2、:target就是用來匹配id為“brand”的元素(id="brand"的元素),上面代碼中是那個(gè)div元素。
- CSS3 結(jié)構(gòu)性偽類選擇器—first-child
“:first-child”選擇器表示的是選擇父元素的第一個(gè)子元素的元素E。簡(jiǎn)單點(diǎn)理解就是選擇元素中的第一個(gè)子元素,記住是子元素,而不是后代元素。 - CSS3 結(jié)構(gòu)性偽類選擇器—last-child
不同的是“:last-child”選擇器選擇的是元素的最后一個(gè)子元素。例如,需要改變的是列表中的最后一個(gè)“l(fā)i”的背景色,就可以使用這個(gè)選擇器,
ul>li:last-child{background:blue;} - CSS3 結(jié)構(gòu)性偽類選擇器—nth-child(n)
“:nth-child(n)”選擇器用來定位某個(gè)父元素的一個(gè)或多個(gè)特定的子元素。其中“n”是其參數(shù),而且可以是整數(shù)值(1,2,3,4),也可以是表達(dá)式(2n+1、-n+5)和關(guān)鍵詞(odd、even),但參數(shù)n的起始值始終是1,而不是0。也就是說,參數(shù)n的值為0時(shí),選擇器將選擇不到任何匹配的元素。 - CSS3 結(jié)構(gòu)性偽類選擇器—nth-last-child(n)
“:nth-last-child(n)”選擇器和前面的“:nth-child(n)”選擇器非常的相似,只是這里多了一個(gè)“l(fā)ast”,所起的作用和“:nth-child(n)”選擇器有所區(qū)別,從某父元素的最后一個(gè)子元素開始計(jì)算,來選擇特定的元素。 - CSS3 first-of-type選擇器
“:first-of-type”選擇器類似于“:first-child”選擇器,不同之處就是指定了元素的類型,其主要用來定位一個(gè)父元素下的某個(gè)類型的第一個(gè)子元素。 - CSS3 nth-of-type(n)選擇器
“:nth-of-type(n)”選擇器和“:nth-child(n)”選擇器非常類似,不同的是它只計(jì)算父元素中指定的某種類型的子元素。當(dāng)某個(gè)元素中的子元素不單單是同一種類型的子元素時(shí),使用“:nth-of-type(n)”選擇器來定位于父元素中某種類型的子元素是非常方便和有用的。在“:nth-of-type(n)”選擇器中的“n”和“:nth-child(n)”選擇器中的“n”參數(shù)也一樣,可以是具體的整數(shù),也可以是表達(dá)式,還可以是關(guān)鍵詞。 - CSS3 last-of-type選擇器
“:last-of-type”選擇器和“:first-of-type”選擇器功能是一樣的,不同的是他選擇是父元素下的某個(gè)類型的最后一個(gè)子元素。 - CSS3 nth-last-of-type(n)選擇器
“:nth-last-of-type(n)”選擇器和“:nth-of-type(n)”選擇器是一樣的,選擇父元素中指定的某種子元素類型,但它的起始方向是從最后一個(gè)子元素開始,而且它的使用方法類似于上節(jié)中介紹的“:nth-last-child(n)”選擇器一樣。 - CSS3 only-child選擇器
“:only-child”選擇器選擇的是父元素中只有一個(gè)子元素,而且只有唯一的一個(gè)子元素。也就是說,匹配的元素的父元素中僅有一個(gè)子元素,而且是一個(gè)唯一的子元素。 - CSS3 only-of-type選擇器
CSS3選擇器(下)
- CSS3選擇器 :enabled選擇器
在Web的表單中,有些表單元素有可用(“:enabled”)和不可用(“:disabled”)狀態(tài),比如輸入框,密碼框,復(fù)選框等。在默認(rèn)情況之下,這些表單元素都處在可用狀態(tài)。那么我們可以通過偽選擇器“:enabled”對(duì)這些表單元素設(shè)置樣式。 - CSS3選擇器 :disabled選擇器
- CSS3選擇器 :checked選擇器
- CSS3選擇器 ::selection選擇器
“::selection”偽元素是用來匹配突出顯示的文本(用鼠標(biāo)選擇文本時(shí)的文本)。瀏覽器默認(rèn)情況下,用鼠標(biāo)選擇網(wǎng)頁(yè)文本是以“深藍(lán)的背景,白色的字體”顯示的,不過在Firefox瀏覽器還需要添加前綴::-moz-selection - CSS3選擇器 :read-only選擇器
“:read-only”偽類選擇器用來指定處于只讀狀態(tài)元素的樣式。簡(jiǎn)單點(diǎn)理解就是,元素中設(shè)置了“readonly=’readonly’” - CSS3選擇器 :read-write選擇器
“:read-write”選擇器剛好與“:read-only”選擇器相反,主要用來指定當(dāng)元素處于非只讀狀態(tài)時(shí)的樣式。 - CSS3選擇器 ::before和::after
::before和::after這兩個(gè)主要用來給元素的前面或后面插入內(nèi)容,這兩個(gè)常和"content"配合使用,使用的場(chǎng)景最多的就是清除浮動(dòng)。
CSS3變形與動(dòng)畫
- CSS3變形--旋轉(zhuǎn) rotate()
- CSS3中的變形--扭曲 skew()
這與rotate()函數(shù)的旋轉(zhuǎn)不同,rotate()函數(shù)只是旋轉(zhuǎn),而不會(huì)改變?cè)氐男螤?。skew()函數(shù)不會(huì)旋轉(zhuǎn),而只會(huì)改變?cè)氐男螤睢?/li> - CSS3中的變形--縮放 scale()
- CSS3中的變形--位移 translate()
- CSS3中的變形--矩陣 matrix()
- CSS3中的變形--原點(diǎn) transform-origin
- CSS3中的動(dòng)畫--過渡屬性 transition-property
transition-property:指定過渡或動(dòng)態(tài)模擬的CSS屬性
transition-duration:指定完成過渡所需的時(shí)間
transition-timing-function:指定過渡函數(shù)
transition-delay:指定開始出現(xiàn)的延遲時(shí)間
transition: background-color .5s ease .1s; - Keyframes介紹
Keyframes被稱為關(guān)鍵幀,其類似于Flash中的關(guān)鍵幀。在CSS3中其主要以“@keyframes”開頭,后面緊跟著是動(dòng)畫名稱加上一對(duì)花括號(hào)“{…}”,括號(hào)中就是一些不同時(shí)間段樣式規(guī)則。
@keyframes changecolor{
0%{
background: red;
}
100%{
background: green;
}
}
div:hover {
animation: changecolor 5s ease-out .2s;
}
animation-name:move;
animation-duration: 10s;
animation-timing-function:ease;
animation-delay:2s;
animation-iteration-count:infinite;
animation-iteration-count:5;//如果取值為infinite,動(dòng)畫將會(huì)無限次的播放
animation-direction:alternate;
1、normal是默認(rèn)值,如果設(shè)置為normal時(shí),動(dòng)畫的每次循環(huán)都是向前播放;
2、另一個(gè)值是alternate,他的作用是,動(dòng)畫播放在第偶數(shù)次向前播放,第奇數(shù)次向反方向播放。
animation-play-state:running和paused;
animation-fill-mode:none、forwards、backwords和both
CSS3的布局樣式
- CSS3 多列布局——Columns
columns:<column-width> || <column-count>
column-width: auto | <length>
column-count:auto | <integer>
column-gap: normal || <length> //列間距,默認(rèn)值,默值為1em(如果你的字號(hào)是px,其默認(rèn)值為你的font-size值)。
column-rule: 2px dotted green; //列邊框(豎線)
column-span: none | all //跨列設(shè)置 -
CSS3 盒子模型
box-sizing: content-box | border-box | inherit
5365d98000018fa606460416.jpg - CSS3 伸縮布局(一)
伸縮布局詳情看這里
CSS3引入了一種新的布局模式——Flexbox布局,即伸縮布局盒模型(Flexible Box),用來提供一個(gè)更加有效的方式制定、調(diào)整和分布一個(gè)容器里項(xiàng)目布局,即使它們的大小是未知或者動(dòng)態(tài)的,這里簡(jiǎn)稱為Flex。
1.創(chuàng)建一個(gè)flex容器
任何一個(gè)flexbox布局的第一步是需要?jiǎng)?chuàng)建一個(gè)flex容器。為此給元素設(shè)置display屬性的值為flex。在Safari瀏覽器中,你依然需要添加前綴-webkit,
.flexcontainer{ display: -webkit-flex; display: flex; }
2.Flex項(xiàng)目顯示
Flex項(xiàng)目是Flex容器的子元素。他們沿著主要軸和橫軸定位。默認(rèn)的是沿著水平軸排列一行。你可以通過flex-direction來改變主軸方向修改為column,其默認(rèn)值是row。
3.Flex項(xiàng)目列顯示
.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: column; flex-direction: column; }
4.Flex項(xiàng)目移動(dòng)到頂部
如何將flex項(xiàng)目移動(dòng)到頂部,取決于主軸的方向。如果它是垂直的方向通過align-items設(shè)置;如果它是水平的方向通過justify-content設(shè)置。
.flexcontainer{ -webkit-flex-direction: column; flex-direction: column; -webkit-justify-content: flex-start; justify-content: flex-start; }
.flexcontainer{ display: -webkit-flex; display: flex; -webkit-flex-direction: row; flex-direction: row; -webkit-align-items: flex-start; align-items: flex-start; }
5.Flex項(xiàng)目移到左邊
flex項(xiàng)目稱動(dòng)到左邊或右邊也取決于主軸的方向。如果flex-direction設(shè)置為row,設(shè)置justify-content控制方向;如果設(shè)置為column,設(shè)置align-items控制方向。
6.Flex項(xiàng)目移動(dòng)右邊
7.水平垂直居中
在Flexbox容器中制作水平垂直居中是微不足道的。設(shè)置justify-content或者align-items為center。另外根據(jù)主軸的方向設(shè)置flex-direction為row或column。
Media Queries——媒體類型
在徹底的了解Media Queries我們需要了解其中的兩個(gè)重要部分,第一個(gè)是媒體類型,第二個(gè)是媒體特性。下面的內(nèi)容我們簡(jiǎn)單的來了解這兩個(gè)部分:
一、媒體類型
媒體類型(Media Type)在CSS2中是一個(gè)常見的屬性,也是一個(gè)非常有用的屬性,可以通過媒體類型對(duì)不同的設(shè)備指定不同的樣式。
在CSS2中常碰到的就是all(全部)、screen(屏幕)、print(頁(yè)面打印或打印預(yù)覽模式),其實(shí)媒體類型遠(yuǎn)不止這三種,W3C總共列出了10種媒體類型。
二、媒體類型的引用方法也有多種,常見的有:link標(biāo)簽、@import和CSS3新增的@media幾種:
1、link方法
link方法引入媒體類型其實(shí)就是在<link>標(biāo)簽引用樣式的時(shí)候,通過link標(biāo)簽中的media屬性來指定不同的媒體類型。如下所示。
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
2、@import方法
@import可以引用樣式文件,同樣也可以用來引用媒體類型。@import引入媒體類型主要有兩種方式,一種是在樣式中通過@import調(diào)用另一個(gè)樣式文件;另一種方法是在<head></head>標(biāo)簽中的<style></style>中引入,但這種使用方法在IE6~7都不被支持,如樣式文件中調(diào)用另一個(gè)樣式文件時(shí),就可以指定對(duì)應(yīng)的媒體類型。
@importurl(reset.css) screen;
@importurl(print.css) print;
在<head>中的<style>標(biāo)簽中引入媒體類型方法。
<head>
<style type="text/css">
@importurl(style.css) all;
</style>
</head>
3、@media方法
@media是CSS3中新引進(jìn)的一個(gè)特性,被稱為媒體查詢。在頁(yè)面中也可以通過這個(gè)屬性來引入媒體類型。@media引入媒體類型和@import有點(diǎn)類似也具有兩方式。
(1)在樣式文件中引用媒體類型:
@media screen {
選擇器{/你的樣式代碼寫在這里…/}
}
(2)使用@media引入媒體類型的方式是在<head>標(biāo)簽中的<style>中引用。
<head>
<style type="text/css">
@media screen{
選擇器{/你的樣式代碼寫在這里…/}
}
</style>
</head>
三、怎么使用
Media Queries的使用方法如下。
@media 媒體類型and (媒體特性){你的樣式}
注意:使用Media Queries必須要使用“@media”開頭,然后指定媒體類型(也可以稱為設(shè)備類型),隨后是指定媒體特性(也可以稱之為設(shè)備特性)。媒體特性的書寫方式和樣式的書寫方式非常相似,主要分為兩個(gè)部分,第一個(gè)部分指的是媒體特性,第二部分為媒體特性所指定的值,而且這兩個(gè)部分之間使用冒號(hào)分隔。例如:
(max-width: 480px)
- 最大寬度max-width
“max-width”是媒體特性中最常用的一個(gè)特性,其意思是指媒體類型小于或等于指定的寬度時(shí),樣式生效。如:
@media screen and (max-width:480px){
.ads {
display:none;
}
}
上面表示的是:當(dāng)屏幕小于或等于480px時(shí),頁(yè)面中的廣告區(qū)塊(.ads)都將被隱藏。
2.最小寬度min-width
“min-width”與“max-width”相反,指的是媒體類型大于或等于指定寬度時(shí),樣式生效。
@media screen and (min-width:900px){
.wrapper{width: 980px;}
}
上面表示的是:當(dāng)屏幕大于或等于900px時(shí),容器“.wrapper”的寬度為980px。
3.多個(gè)媒體特性使用
Media Queries可以使用關(guān)鍵詞"and"將多個(gè)媒體特性結(jié)合在一起。也就是說,一個(gè)Media Query中可以包含0到多個(gè)表達(dá)式,表達(dá)式又可以包含0到多個(gè)關(guān)鍵字,以及一種媒體類型。
當(dāng)屏幕在600px~900px之間時(shí),body的背景色渲染為“#f5f5f5”,如下所示。
@media screen and (min-width:600px) and (max-width:900px){
body {background-color:#f5f5f5;}
}
4.設(shè)備屏幕的輸出寬度Device Width
在智能設(shè)備上,例如iPhone、iPad等,還可以根據(jù)屏幕設(shè)備的尺寸來設(shè)置相應(yīng)的樣式(或者調(diào)用相應(yīng)的樣式文件)。同樣的,對(duì)于屏幕設(shè)備同樣可以使用“min/max”對(duì)應(yīng)參數(shù),如“min-device-width”或者“max-device-width”。
<link rel="stylesheet" media="screen and (max-device-width:480px)" href="iphone.css" />
上面的代碼指的是“iphone.css”樣式適用于最大設(shè)備寬度為480px,比如說iPhone上的顯示,這里的“max-device-width”所指的是設(shè)備的實(shí)際分辨率,也就是指可視面積分辨率。
- not關(guān)鍵詞
@media not print and (max-width: 1200px){樣式代碼}
6.only關(guān)鍵詞
<linkrel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" />
四、Responsive設(shè)計(jì)——meta標(biāo)簽、可視區(qū)域meta標(biāo)簽
在實(shí)際項(xiàng)目中,為了讓Responsive設(shè)計(jì)在智能設(shè)備中能顯示正常,也就是瀏覽Web頁(yè)面適應(yīng)屏幕的大小,顯示在屏幕上,可以通過這個(gè)可視區(qū)域的meta標(biāo)簽進(jìn)行重置,告訴他使用設(shè)備的寬度為視圖的寬度,也就是說禁止其默認(rèn)的自適應(yīng)頁(yè)面的效果,具體設(shè)置如下:
<meta name=”viewport” content=”width=device-width,initial-scale=1.0” />
用戶界面的其他屬性
- 自由縮放屬性resize
resize: none | both | horizontal | vertical | inherit - CSS3外輪廓屬性
外輪廓outline在頁(yè)面中呈現(xiàn)的效果和邊框border呈現(xiàn)的效果極其相似,但和元素邊框border完全不同,外輪廓線不占用網(wǎng)頁(yè)布局空間,不一定是矩形,外輪廓是屬于一種動(dòng)態(tài)樣式,只有元素獲取到焦點(diǎn)或者被激活時(shí)呈現(xiàn)。
outline: red solid 20px; - CSS生成內(nèi)容
在Web中插入內(nèi)容,在CSS2.1時(shí)代依靠的是JavaScript來實(shí)現(xiàn)。但進(jìn)入CSS3進(jìn)代之后我們可以通過CSS3的偽類“:before”,“:after”和CSS3的偽元素“::before”、“::after”來實(shí)現(xiàn),其關(guān)鍵是依靠CSS3中的“content”屬性來實(shí)現(xiàn)。不過這個(gè)屬性對(duì)于img和input元素不起作用。content配合CSS的偽類或者偽元素,一般可以做以下四件事情:1、none。2、attr。3、url。4、string。


