CSS3重點
CSS3
完全向後相容,不必更改現有的設計,瀏覽器永遠支援CSS2
CSS3中重要的模組
選擇器 | 盒模型 |
---|---|
動畫 | 背景和邊框 |
多列布局 | 文字特效 |
使用者介面 | 2D和3D轉換 |
CSS3–2D變形
transform:動畫功能,用空格分隔屬性
martrix() | 定義矩陣變換:基本X,Y座標重新定位元素的位置的集合【旋轉,縮放,平移(移動),傾斜】 |
---|---|
translate(x,y) | 移動元素物件,y如果不寫預設為0. translate(50px,100px)是從左邊元素移動50個畫素,並從頂部移動100畫素。------teanslateX(),translateY() |
scale(x,y) | 縮放,包括整數,負數,小數。y如果不寫即和x等比例縮放-----scaleX(),scaleY() |
rotate() | 旋轉 取值為度數,單位為deg。正數:順時針旋轉,負數:逆時針旋轉 |
skew(x,y) | 傾斜 取值為度數,單位為deg。 一般不太使用----還可以分為skew X(),skewY() |
transition | transition:transform 0.5s; 過渡時間為0.5s |
CSS3動畫
原理:將一套CSS樣式逐漸變化為另一套CSS樣式
表格中的數字表示支援該屬性的第一個瀏覽器版本號。
緊跟在 -webkit-, -ms- 或 -moz- 前的數字為支援該字首屬性的第一個瀏覽器版本號。
正常瀏覽器 | animation |
---|---|
火狐瀏覽器 | -moz-animation; @-moz-keyframes |
谷歌瀏覽器,safari. | -webkit-animation; @-webkit-keyframes |
opera | -webkit-animation; @-webkit-keyframes 或者-o-animation;-o-keyfframes |
注意:[email protected] xxx(其中xxx是自己定義的名字),必須和div{animation-name: xxx;}中名字相對應,否則動畫不會有任何效果
@keyframes 規定動畫
from…to… 或者是0%~100% 是動畫的開始到結束
@keyframes xxx { from {background: red;} to {background: yellow;} } @keyframes xxx { 0% {background: red;} 25% {background: yellow;} 50% {background: blue;} 100% {background: green;} }
動畫屬性
@keyframes | 規定動畫 |
---|---|
animation | 所有動畫屬性的簡寫屬性 |
animation-name | 規定@keyframes 動畫的名稱 |
animation-duration | 規定一個動畫完成一個週期所花費的秒或毫秒 |
animation-timing-function | 規定動畫的速度曲線,預設為ease(慢快慢);linear(勻速),ease-in(低速開始),ease-out(低速結束) |
animation-fill-mode | 規定當動畫不播放時(當動畫完成時,或當動畫有一個延遲未開始播放時)要應用到元素的樣式,預設為none;forwards(在動畫結束後(由 animation-iteration-count 決定),動畫將應用該屬性值。) |
animation-delay | 規定動畫開始的延時時間 |
animation-iteratio-count | 規定動畫被播放的次數,預設為1;infinite 週期播放 |
animation-direction | 規定動畫是否在下一週期逆向的播放,預設是normal(正常),reverse(反向),alternate(奇正 偶負),alternate-reverse(奇負 偶正) |
animation-play-state | 規定動畫是否正在執行或暫停,預設為’running’;paused:暫停動畫 |
<style>
@keyframes demo1{
0%{background:red;}
25%{background:yellow;}
50%{background:blue;}
75%{background:purple;}
100%{background:black;}
}
div{
width: 200px;
height: 200px;
border-radius: 100%;
animation-name: demo1;
animation-duration: 2s;/*完成一個週期需要2S*/
animation-timing-function:linear;/*運動軌跡為勻速*/
animation-direction:reverse;/*反向播放*/
animation-play-state: running;/*是否正在執行或暫停,預設為'running'*/
animation-fill-mode:none;
animation-delay:2s;/*延時2s再進行播放*/
animation-iteration-count:infinite;/*週期播放,反覆播放*/
}
</style>
CSS3漸變
分為線性漸變和徑向漸變
線性漸變:linear-gradient
background:linear-gradient(red,blue) | |
---|---|
background:linear-gradient(to left,red,blue) | |
background:-webkit-linear-gradient(left,red,blue) | 和上圖一樣 |
background: -webkit-linear-gradient(top left,red,yellow);----在火狐加-moz | |
background: linear-gradient(to top left,red,yellow); | 和上圖一樣 |
background: -webkit-linear-gradient(top left,red,rgba(255,0,0,0.1)); | |
徑向漸變:radial-gradient
background: radial-gradient(red,yellow,pink); | |
---|---|
background: radial-gradient(red 30%,yellow 40%,pink 50%); | |
background: -webkit-radial-gradient(left,circle,red,yellow,pink); | |
background: -webkit-repeating-radial-gradient(circle,black,black 10px,white 10px,white 20px); | |
CSS3文字邊框
border-image | 設定所有border-image的屬性(預設為None) |
---|---|
border-radius | 設定所有四個border-radius的屬性 100%圓,直角變圓角 |
border-shadow | 向方框新增一個或多個陰影, |
border-image : none | [ | ]{1,4} [ / {1,4} ]? [ stretch | repeat | round ]{0,2}
image:設定背景圖片,url方式
number:切片的寬度,可以設定1~4個值,具體表示為四個方位的值
percentage:邊框的寬度,使用百分比形式
stretch,repeat,round:用來設定邊框背景圖片的鋪放方式,類似於background-position,其中stretch是拉伸,repeat是重複,round是平鋪,stretch為預設值。
border-image-source | 用在邊框的圖片的路徑。 url |
---|---|
border-image-slice | 圖片邊框向內偏移。 px |
border-image-width | 圖片邊框的寬度。 |
border-image-outset | 邊框影象區域超出邊框的量。 |
border-image-repeat | 影象邊框是否應 平鋪(repeat)、鋪滿(round)或拉伸(stretch) |
邊框陰影:box-shadow
h-shadow | 水平軸,必須寫 | v-shadow | 垂直軸,必須寫 |
---|---|---|---|
spread(一般不再寫) | 陰影尺寸 | color | 陰影顏色 |
blur | 模糊距離 | inset | 將外部陰影改為內部陰影 |
CSS3背景
background-size:背景圖片的尺寸(畫素或者百分比)
background-origin:背景圖片的定位區域
padding-box | 背景影象相對於內邊距框來定位。 |
---|---|
border-box | 背景影象相對於邊框盒來定位。 |
content-box | 背景影象相對於內容框來定位。 |
CSS3文字屬性
屬性 | 描述 |
---|---|
hanqing-punctuation | 規定標點字元是否位於線框之外 |
punctuation-trim | 規定是否對標點字元進行修剪 |
text-align-last | 設定或檢索物件中最後一行文字的對齊方式 |
text-emphasis | 向元素的文字應用重點鏢旗以及重點抱起的前景色 |
text-justify | 規定當text=align設定為justify時所使用的對齊方法 |
text-outline | 規定文字的輪廓 |
text-overflow | 規定當文字溢位時省略文字的處理方式 |
text-shadow | 向文字新增陰影 |
text-wrap | 規定文字超過指定容器的邊界時是否斷開轉行 |
word-break | 規定非中日韓文字的換行規則 |
word-wrap | 允許對長的不可分割的單詞進行分割並換行到下一行 |
text-shadow: 5px 5px 5px red;
word-wrap:break-word;在長單詞或者URL地址內部進行換行 --- normal只允許在段字點換行,瀏覽器保持預設處理
CSS3視訊,音訊
<audio controls="controls" loop="loop" autoplay="autoplay" muted="muted">
<sourse src=音訊地址" > </sourse>
<audio>
<video ........... 同上>
<sourse src="視訊地址" ></sourse>
</video>
controls=“controls” :有可控的按鍵
loop=“loop” :迴圈播放
autoplay=“autoplay”:自動播放
muted=:“muted”:視訊,音訊載入成功後靜音
this.paly()------播放
this.pause()-------暫停
canvas畫布
基本步驟:
- 新建頁面:
- 在JS中獲取元素 demo = document.getelementbyId(…)
- 使用getContext方法獲取上下文,建立context物件,以允許繪製2D環境----demo.getContext(‘2D’)
- JS繪製
1.搭建繪製環境,獲取座標點
獲取頁面中某個元素的上下左右分別相對於瀏覽器視窗位置
<canvas id="cv_1" width="500" height="500"></canvas>
<div id="div1"></div>
<div id="div2"></div>
<script type="text/javascript">
var div1 = document.getElementById('div1');
var div2 = document.getElementById('div2');
var cv_1 = document.getElementById('cv_1');
var can = cv_1.getContext('2d');
var x = cv_1.getBoundingClientRect().left;
var y = cv_1.getBoundingClientRect().top;
window.onmousemove= function(event){move(event)}
function move(event){
var bdx = event.clientX - x;
var bdy = event.clientY - y;
div1.innerHTML = bdx;
div2.innerHTML = bdy;
}
</script>
2.繪製圖形
- 填充矩形:fillRect(left,top,height,width)
- 填充顏色:fillstyle = ‘rgb(200,0,0)’
繪製形狀
- 柵格(grid)和座標空間
- 柵格:CANVAS影象預設被網格覆蓋,起點為左上角
- 1單元= 1px 座標(x,y)
繪製矩形
canvas只支援一種原生的圓形繪製:矩形,其他圖形都至少需要生成一種路徑(path)
- fillRect(x,y,width,height)—實心矩形
- fillStyle = ‘’ ‘’填充矩形 (不填充的話,預設為黑色)
- strokeRect(x,y,width,height)----矩形邊框
- clearRect(x,y,width,height)----清除指定區域
- 圖形的基本元素是路徑:點,線:直線和曲線
繪製步驟
1.beginPath()—建立路徑起始點
2.moveTo(x,y)----畫筆移動的開頭
3.lineTo(x,y)----獲得一個移動的座標x,y和上一個點自動連線
4.closePath()----閉合路徑
5.stroke()----繪製輪廓
6.fill()----填充
-
填充文字:fillText(“interesting”,x,y)
-
空心文字:strokeText(“fantesting”,x,y)
*
-
漸變:
-
can.beginPath(); var jianbian = can.createLinearGradient(390,180,490,450); jianbian.addColorStop(0,'red'); jianbian.addColorStop(0.3,'yellow'); jianbian.addColorStop(0.6,'orange'); jianbian.addColorStop(1,'blue'); can.fillStyle = jianbian; can.moveTo(390,180); can.lineTo(590,180); can.lineTo(490,450); can.closePath(); can.stroke(); can.fill();
-
3.繪製圓弧
arc(x,y,r,startAngle,endAngle,anticlockwise);
(x,y)圓心座標
r:半徑
startAngle:開始的弧度
endAngle:結束的弧度
anticlockwise:繪製方向:true—逆時針 false—順時針
弧度:Math.PT/2 = 90 ---- -Math.PT/2 = -90 = 270
4.繪製不規則圓弧
arcTo(x1,y1,x2,y2,radius)根據給定的控制點和半徑畫一段弧,最後以直線連線
5.貝塞爾曲線
二級貝塞爾曲線
起點:.moveTo(x,y)
.quadraticCurveTo(cp1x,cp1y,x,y)
點1的座標(cp1x,cp1y)無限接近
結尾的座標(x,y)
三級貝塞爾曲線
起點:.moveTo(x,y)
.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)
點1的座標(cp1x,cp1y)無限接近
點2的座標(cp2x,cp2y)無限接近
結尾的座標(x,y)