轉(zhuǎn)載請聲明 原文鏈接
這篇文章主要總結(jié)H5的一些新增的功能以及一些基礎歸納或南,這里只是一個提綱,并不是很詳細寥闪,后面會一直完善補充新的內(nèi)容敬飒,本文是一些筆記記錄,放在這里供自己參考也供他人學習硫豆!
第一課 HTML5結(jié)構(gòu)
-
HTML5
是新一代的HTML
-
DTD
聲明改變<!DOCTYPE html>
- 新的結(jié)構(gòu)標簽
- 注意的地方
-
ie8
不兼容
-
常用的一些新的結(jié)構(gòu)標簽
- 補充說明
-
small
這個元素表示邊欄評論龙巨,如附屬細則 -
cite
這個元素可用于顯示作品標題(圖書、電影熊响、詩歌等) -
adress
這個元素顯示article
或整個文檔的合同信息旨别,且位于footer
這個元素之中 -
time
顯示人和機器可讀的日期和時間,而且機器可讀的時間戳是屬性datetime
的值第二個可選的是pubtime
用于表示出版日期值
-
刪除的HTML
標簽
-
純表現(xiàn)的元素:
basefont
big
center
font
s
strike
tt
u
-
對可用性產(chǎn)生負面影響的元素:
frame
frameset
noframes
- 產(chǎn)生混淆的元素:
acronym
applet
isindex
dir
-
重新定義的
HTML
標簽-
<b>
代表內(nèi)聯(lián)文本汗茄,通常是粗體秸弛,沒有傳遞表示重要的意思 -
<i>
代表內(nèi)聯(lián)文本,通常是斜體洪碳,沒有傳遞表示重要的意思 -
<dd>
可以同details
與figure
一同使用递览,定義包含文本,ialog
也可用 -
<dt>
可以同details
與figure
一同使用瞳腌,匯總細節(jié)绞铃,dialog
也可用 -
<hr>
表示主題結(jié)束,而不是水平線嫂侍,雖然顯示相同 -
<menu>
重新定義用戶界面的菜單儿捧,配合commond
或者menuitem
使用 -
<small>
表示小字體,例如打印注釋或者法律條款 -
<strong>
表示重要性而不是強調(diào)符號
-
嶄新新的頁面布局
第二課 HTML5智能表單
HTML4.01 form表單復習
-
input
表單type
屬性值-
type="text"
單行文本輸入框 -
type="password"
密碼(maxlength=""
) -
type="radio"
單項選擇(checked="checked"
) -
type="checkbox"
多項選擇 -
type="button"
按鈕 -
type="submit"
提交 -
type="file"
上傳文件 -
type="reset"
重置
-
HTML5智能表單
-
input
表單type
屬性值:-
type = "email"
限制用戶輸入必須為Email
類型 -
type="url"
限制用戶輸入必須為URL
類型 -
type="date"
限制用戶輸入必須為日期類型 -
type="datetime"
顯示完整日期 含時區(qū) -
type="datetime-local"
顯示完整日期 不含時區(qū) -
type="time"
限制用戶輸入必須為時間類型 -
type="month"
限制用戶輸入必須為月類型 -
type="week"
限制用戶輸入必須為周類型 -
type="number"
限制用戶輸入必須為數(shù)字類型 -
type="range"
生成一個滑動條 -
type="search"
具有搜索意義的表單results="n"
屬性 -
type="color"
生成一個顏色選擇表單 -
type="tel"
顯示電話號碼
-
Input 類型 - Date Pickers(日期選擇器)
**
HTML5
擁有多個可供選取日期和時間的新輸入類型:date
選取日挑宠、月菲盾、年month
選取月、年week
選取周和年time
選取時間(小時和分鐘)-
以下兩個沒有作用
-
datetime
選取時間痹栖、日亿汞、月瞭空、年(UTC 時間) -
datetime-local
選取時間揪阿、日、月、年(本地時間)
-
HTML5新增表單屬性
-
required:
required
內(nèi)容不能為空 -
placeholder:
表單提示信息 -
autofocus:
自動聚焦 -
pattern:
正則表達式 輸入的內(nèi)容必須匹配到指定正則范圍 -
autocomplete:
是否保存用戶輸入值- 默認為
on
坚嗜,關閉提示選擇off
- 默認為
-
formaction:
在submit
里定義提交地址 -
datalist:
輸入框選擇列表配合list
使用list
值為datalist
的id
值 -
output:
計算或腳本輸出
表單驗證
-
validity
對象缸兔,通過下面的valid
可以查看驗證是否通過,如果八種驗證都返回true
,一種驗證失敗返回false
oText.addEventListener("invalid",fn1,false)
-
ev.preventDefault()
: 阻止默認事件 -
valueMissing
: 當輸入值為空的時候溺健,返回true
-
typeMismatch
: 控件值與預期不吻合麦牺,返回true
-
patternMismatch
: 輸入值不滿足pattern
正則,返回true
-
cusomError
setCustomValidity()
第三課 css3選擇器
-
CSS3
發(fā)展史簡介-
HTML
的誕生 20世紀90年代初 -
1996
年底鞭缭,CSS
第一版誕生 -
1998
年5
月CSS2
正式發(fā)布 -
2004
年CSS2.1
發(fā)布 -
CSS3
的發(fā)布2002
2003
2004
2005
2007
2009
2010
-
-
模塊化開發(fā)
-
CSS1
中定義了網(wǎng)頁的基本屬性:- 字體剖膳、顏色、基本選擇器等
-
CSS2
中在CSS1
的基礎上添加了高級功能- 浮動和定位岭辣、高級選擇器等(子選擇器吱晒、相鄰選擇器、通用選擇器)
-
CSS3
遵循的是模塊化開發(fā)沦童。發(fā)布時間并不是一個時間點仑濒,而是一個時間段
-
-
CSS
選擇器復習- 通用選擇器:
*
選擇到所有的元素 - 選擇子元素:
>
選擇到元素的直接后代 - 相鄰兄弟選擇器:
+
選擇到緊隨目標元素后的第一個元素 - 普通兄弟選擇器:
~
選擇到緊隨其后的所有兄弟元素 - 偽元素選擇器:
-
::first-line
匹配文本塊的首行 -
::first-letter
選擇文本塊的首字母
-
- 偽類選擇器:
-
:before
,:after
在元素內(nèi)容前面、后面添加內(nèi)容(相當于行內(nèi)元素)
-
- 通用選擇器:
- CSS3結(jié)構(gòu)選擇器
Css3
屬性選擇器
-
CSS3
偽類選擇器-
UI偽類選擇器:
-
:enabled
選擇啟用狀態(tài)元素 -
:disabled
選擇禁用狀態(tài)元素 -
:checked
選擇被選中的input
元素(單選按鈕或復選框) -
:default
選擇默認元素 -
:valid
偷遗、invalid
根據(jù)輸入驗證選擇有效或無效的input
元素 -
:in-range
墩瞳、out-of-range
選擇指定范圍之內(nèi)或者之外受限的元素 -
:required
、optional
根據(jù)是否允許:required
屬性選擇input
元素
-
-
動態(tài)偽類選擇器:
-
:link
選擇鏈接元素 -
:visited
選擇用戶以訪問的元素 -
:hover
鼠標懸停其上的元素 -
:active
鼠標點擊時觸發(fā)的事件 -
:focus
當前獲取焦點的元素
-
-
其他偽類選擇器:
-
:not(<選擇器>)
對括號內(nèi)選擇器的選擇取反 -
:lang(<目標語言>)
基于lang
全局屬性的元素 -
:target
url
片段標識符指向的元素-
:empty
選擇內(nèi)容為空的元素
-
-
:selection
鼠標光標選擇元素內(nèi)容
-
-
第四課 CSS3新增文本屬性
-
CSS文本屬性復習
-
white-space
:對象內(nèi)空格的處理方式nowrap
控制文本不換行pre
空白會被瀏覽器保留pre-line
合并空白 保留換行符pre-wrap
保留空白 正常換行
-
direction
:文本流的方向-
ltr
文本從左向右 -
rtl
文本從右往左
-
unicode-bidi
:用于同一個頁面里存在從不同方向讀進的文本顯示氏豌。與direction
屬性一起使用
-
-
CSS3新增文本屬性
-
color:rgba()
; -
text-overflow
:是否使用一個省略標記(...)標示對象內(nèi)文本的溢出 -
text-align
:文本的對齊方式 -
text-transform
:文字的大小寫 -
text-decoration
:文本的裝飾線喉酌,復合屬性 -
text-shadow
:文本陰影 -
text-fill-color
:文字填充顏色 -
text-stroke
:復合屬性。設置文字的描邊 -
tab-size
:制表符的長度 -
word-wrap
:當前行超過指定容器的邊界時是否斷開轉(zhuǎn)行 -
word-break
:規(guī)定自動換行的處理方法
-
-
text-overflow:
是否使用一個省略標記(...
)標示對象內(nèi)文本的溢出-
clip
: 默認值 無省略號 -
ellipsis
:當對象內(nèi)文本溢出時顯示省略標記(...
)泵喘。 -
注意:該屬性需配合
over-flow:hidden
屬性(超出處理)還有white-space:nowrap
(禁止換行)配合使用瞭吃,否則無法看到效果
-
-
text-align
:文本的對齊方式css1
-
left
:默認值 左對齊 -
right
:右對齊 -
center
:居中 -
justify
: 內(nèi)容兩端對齊。 css3
-
start
:開始邊界對齊 -
end
:結(jié)束邊界對齊
-
text-transform
:文字的大小寫-
css1
-
none
: 默認值 無轉(zhuǎn)換 -
capitalize
: 將每個單詞的第一個字母轉(zhuǎn)換成大寫 -
uppercase
: 轉(zhuǎn)換成大寫 -
lowercase
: 轉(zhuǎn)換成小寫
-
-
css3
-
full-width
: 將左右字符設為全角形式涣旨。不支持 -
full-size-kana
:將所有小假名字符轉(zhuǎn)換為普通假名歪架。不支持- 例如:土耳其語
-
-
-
text-decoration
:文本的裝飾線,復合屬性(只火狐支持)-
text-decoration-line
:- 指定文本裝飾的種類霹陡。相當于
CSS1
時的text-decoration
屬性
- 指定文本裝飾的種類霹陡。相當于
-
text-decoration-style
:- `指定文本裝飾的樣式和蚪。
-
text-decoration-color
:- `指定文本裝飾的顏色。
-
blink
: 指定文字的裝飾是閃爍烹棉。opera
和firefox
-
text-decoration
:#F00 double overline
CSS3
實例
-
-
text-shadow
:文本陰影- 取值:
x
y
blur
color
,......-
x
橫向偏移 -
y
縱向偏移 -
blur
模糊距離(灰度) -
color
陰影顏色
-
- 取值:
text-fill-color
:文字填充顏色-
text-stroke
:復合屬性攒霹。設置文字的描邊-
text-stroke-width
:文字的描邊厚度 -
text-stroke-color
:文字的描邊顏色
-
-
tab-size
:制表符的長度- 默認值為
8
(一個tab
鍵的空格字節(jié)長度),在pre
標簽之內(nèi)才會有顯示
- 默認值為
-
word-wrap
:當前行超過指定容器的邊界時是否斷開轉(zhuǎn)行-
normal
: 默認值 - 允許內(nèi)容頂開或溢出指定的容器邊界浆洗。
-
-
break-word
:- 內(nèi)容將在邊界內(nèi)換行催束。如果需要,單詞內(nèi)部允許斷行
第五課 CSS3盒模型
- CSS盒模型復習
-
CSS3彈性盒模型
-
以下6個屬性設置在容器上
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
-
屬性詳解
-
flex-direction: row
|row-reverse
|column
|column-reverse
; -
flex-wrap: nowrap
|wrap
|wrap-reverse
; -
flex-flow
屬性是flex-direction
屬性和flex-wrap
屬性的簡寫形式伏社,默認值為row nowrap
-
flex-flow: <flex-direction> || <flex-wrap>
;
-
-
justify-content
屬性定義了項目在主軸上的對齊方式抠刺。-
justify-content: flex-start
|flex-end
|center
|space-between
|space-around
;
-
-
align-items
屬性定義項目在交叉軸上如何對齊塔淤。-
align-items: flex-start
|flex-end
|center
|baseline
|stretch
;
-
-
align-content
屬性定義了多根軸線的對齊方式。如果項目只有一根軸線速妖,該屬性不起作用高蜂。-
align-content: flex-start
|flex-end
|center
|space-between
|space-around
|stretch
;
-
-
-
以下6個屬性設置在項目上
order
flex-grow
flex-shrink
flex-basis
flex
align-self
-
-
屬性詳解
-
order
屬性定義項目的排列順序。數(shù)值越小罕容,排列越靠前备恤,默認為0
-
flex-grow
屬性定義項目的放大比例,默認為0
锦秒,即如果存在剩余空間露泊,也不放大。 -
flex-shrink
屬性定義了項目的縮小比例旅择,默認為1
滤淳,即如果空間不足,該項目將縮小砌左。 -
flex-basis
屬性定義了在分配多余空間之前脖咐,項目占據(jù)的主軸空間(main size)。瀏覽器根據(jù)這個屬性汇歹,計算主軸是否有多余空間屁擅。它的默認值為auto
,即項目的本來大小产弹。 -
flex
屬性是flex-grow
,flex-shrink
和flex-basis
的簡寫派歌,默認值為0 1 auto
。后兩個屬性可選痰哨。 -
align-self
屬性允許單個項目有與其他項目不一樣的對齊方式胶果,可覆蓋align-items
屬性。默認值為auto
斤斧,表示繼承父元素的align-items
屬性早抠,如果沒有父元素,則等同于stretch
撬讽。-
align-self: auto
|flex-start
|flex-end
|center
|baseline
|stretch
;
-
-
第六課 css3新增背景屬性
-
CSS背景屬性復習
-
background
:-
background-color
:背景顏色 -
background-image
:背景圖片 -
background-repeat
:背景重復 -
background-position
:背景定位 -
background-attachment
:背景固定(scroll/fixed)
-
-
CSS3新增背景屬性
-
background-size
背景尺寸-
background-size:x y
水平 垂直方向的尺寸蕊连,像素/百分比/auto/… background-size:100% 100%
-
background-size:cover
比例放大 -
background-size:contain
包含(圖片不溢出)
-
-
多背景
-
background-image:url(1.jpg),url(2.jpg)
;
-
-
background-origin
背景區(qū)域定位-
border-box
: 從borde
r區(qū)域開始顯示背景。 -
padding-box
: 從padding
區(qū)域開始顯示背景游昼。 -
content-box
: 從content
內(nèi)容區(qū)域開始顯示背
-
-
background-clip
背景繪制區(qū)域-
border-box
: 從border
區(qū)域向外裁剪背景甘苍。 -
padding-box
: 從padding
區(qū)域向外裁剪背景。 -
content-box
: 從content
區(qū)域向外裁剪背景烘豌。
-
-
text
:背景填充文本-
no-clip
: 從border
區(qū)域向外裁剪背景
-
-
顏色漸變
-
線性漸變:
linear-gradient
(起點/角度载庭,顏色 位置,...,)起點:
left/top/right/bottom/left top......
默認top
角度:逆時針方向
0-360
度顏色 位置:
red 50%
,blue 100%
(紅色從50%漸變到100%為藍色)-
repeating-linear-gradient
線性漸變重復平鋪-
IE
低版本漸變(濾鏡): filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#ff0000',GradientType='1');
-
-
徑向漸變:
radial-gradient
(起點(圓心位置), 形狀/半徑/大小,顏色1囚聚,顏色2)- 起點:
left/top/right/bottom
或具體值/百分比 - 形狀:
ellipse
(橢圓)靖榕、circle
(正圓) - 大小:具體數(shù)值或百分比靡挥,也可以是關鍵字(
closest-side
(最近端),closest-corner
最近角),farthest-side
(最遠端), farthest-corner
(最遠角),contain
(包含) ,cover
(覆蓋));
- 起點:
-
第七課 css3新增顏色屬性
-
CSS顏色屬性復習
-
color name
顏色英文名稱命名 -
HEX
方式 十六進制方式 -
rgb
方式 三原色配色方式
-
-
CSS3新增顏色屬性
rgba()
名稱 | 顏色 | 顏色 | 取值 |
---|---|---|---|
r | red | 紅色 | 0-255 |
g | green | 綠色 | 0-255 |
b | blue | 藍色 | 0-255 |
a | alpha | 透明 | 0-1 |
-
HSL
模式HSLA
模式-
H
:Hue
(色調(diào))序矩。- 0(或360)表示紅色鸯绿,120表示綠色跋破,240表示藍色,也可取其他數(shù)值來指定顏色瓶蝴。取值為:
0 - 360
- 0(或360)表示紅色鸯绿,120表示綠色跋破,240表示藍色,也可取其他數(shù)值來指定顏色瓶蝴。取值為:
S
:Saturation
(飽和度)毒返。取值為:0.0% - 100.0%L
:Lightness
(亮度)。取值為:0.0% - 100.0%A
:alpha
透明度 0~1之間語法:
HSLA(H,S,L,A)
-
HSL色輪
-
透明顏色:
transparent
- 實例:
border
實現(xiàn)三角箭頭舷手、風車等
- 實例:
-
透明度:
opacity
- 取值:
0-1
之間 - 注:低版本的
IE
瀏覽器不兼容,需用IE瀏覽器的濾鏡實現(xiàn)相同效果拧簸,filter:alpha(opacity=50)
- 對于低版本的火狐瀏覽器需添加內(nèi)核前綴,
-moz-opacity
第八課 CSS3邊框系列
圓角-陰影
-
邊框圓角
- 在
CSS2
中添加圓角矩形需要技巧男窟。我們必須為每個圓角使用不同的圖片 - 在
CSS3
中盆赤,創(chuàng)建圓角是非常容易的 - 在
CSS3
中,border-radius
屬性用于創(chuàng)建圓角
- 在
-
border-radius
邊框圓角寫法border-radius: 2em 1em 4em / 0.5em 3em;
- 等價于
border-top-left-radius: 2em 0.5em;
border-top-right-radius: 1em 3em;
border-bottom-right-radius: 4em 0.5em;
border-bottom-left-radius: 1em 3em;
-
box-shadow
方框添加陰影語法:
box-shadow:x-shadow y-shadow blur spread color inset;
-
box-shadow的API
-
x-shadow
必需歉眷。水平陰影的位置牺六。允許負值。 -
y-shadow
必需汗捡。垂直陰影的位置淑际。允許負值。 -
blur
可選扇住。模糊距離春缕。 -
spread
可選。陰影的尺寸艘蹋。 -
color
可選锄贼。陰影的顏色。請參閱CSS
顏色值 -
inset
可選女阀。將外部陰影 (outset
) 改為內(nèi)部陰影
-
實例:
box-shadow:10px 10px 5px 5px #888888;
邊框系列-圖片
border-image
語法
屬性 | 版本 | 簡介 |
---|---|---|
border-image | CSS3 | 設置或檢索對象的邊框使用圖像來填充 |
border-image-source | CSS3 | 設置或檢索對象的邊框是否用圖像定義樣式或圖像來源路徑 |
border-image-slice | CSS3 | 設置或檢索對象的邊框背景圖的分割方式 |
border-image-width | CSS3 | 設置或檢索對象的邊框厚度 |
border-image-outset | CSS3 | 設置或檢索對象的邊框背景圖的擴展 |
border-image-repeat | CSS3 | 設置或檢索對象的邊框圖像的平鋪方式 |
-
border-image-slice
- 設置或檢索對象的邊框背景圖的分割方式
-
border-image-repeat
- 用于指定邊框背景圖的重復方式
- 取值:
-
stretch
: 指定用拉伸方式來填充邊框背景圖咱娶。 *默認的 -
repeat
: 指定用平鋪方式來填充邊框背景圖。當圖片碰到邊界時强品,如果超過則被截斷膘侮。 -
round
: 指定用平鋪方式來填充邊框背景圖。圖片會根據(jù)邊框的尺寸動態(tài)調(diào)整圖片的大小 直至正好可以鋪滿整個邊框的榛。寫本文檔時僅Firefox能看到該效果
-
第九課 CSS3運動體系
過渡
-
過渡:給改變添加過程
- 什么是過渡
- 過渡效果由哪幾部分組成
- 過渡可以干些什么
transition
過渡屬性-
transition: property duration timing-function delay
;-
transition-property:
過渡屬性的名稱-
none
沒有過渡屬性 -
all
所有屬性都過渡(默認值) -
property
具體屬性名稱(property1
,property2
...)
-
-
transition-duration:
過渡屬性花費的時間-
time
秒或毫秒
-
-
transition-timing-function:
過渡效果速度曲線-
time
秒或毫秒
-
-
transition-delay:
過渡效果延遲時間
-
-
transition-timing-function
:過渡效果速度曲線-
linear
:規(guī)定以相同速度開始至結(jié)束的過渡效果(等于cubic-bezier(0,0,1,1)
)琼了。 -
ease
:規(guī)定慢速開始,然后變快,然后慢速結(jié)束的過渡效果(cubic-bezier(0.25,0.1,0.25,1)
)雕薪。 -
ease-in
:規(guī)定以慢速開始的過渡效果(等于cubic-bezier(0.42,0,1,1)
)昧诱。 -
ease-out
:規(guī)定以慢速結(jié)束的過渡效果(等于cubic-bezier(0,0,0.58,1)
)。 -
ease-in-out
:規(guī)定以慢速開始和結(jié)束的過渡效果(等于cubic-bezier(0.42,0,0.58,1)
)所袁。 -
cubic-bezier(n,n,n,n)
:在cubic-bezier
函數(shù)中定義自己的值盏档。可能的值是0
至1
之間的數(shù)值燥爷。
-
-
過渡完成事件
Webkit
內(nèi)核:
obj.addEventListener('webkitTransitionEnd',function(){})
- 標準:
obj.addEventListener('transitionend',function(){})
動畫
-
什么是
CSS3
動畫蜈亩?- 通過
CSS3
,我們能夠創(chuàng)建動畫前翎,這可以在許多網(wǎng)頁中取代動畫圖片稚配、Flash
動畫以及JavaScript
- 通過
動畫接口
屬性 | 描述 |
---|---|
@keyframes | 規(guī)定動畫。 |
animation | 所有動畫屬性的簡寫屬性港华,除了 animation-play-state 屬性道川。 |
animation-name | 規(guī)定 @keyframes 動畫的名稱。 |
animation-duration | 規(guī)定動畫完成一個周期所花費的秒或毫秒立宜。 |
animation-timing-function | 規(guī)定動畫的速度曲線冒萄。 |
animation-delay | 規(guī)定動畫何時開始。 |
animation-iteration-count | 規(guī)定動畫被播放的次數(shù)橙数。 |
animation-direction | 規(guī)定動畫是否在下一周期逆向地播放尊流。 |
animation-play-state | 規(guī)定動畫是否正在運行或暫停。 |
animation-fill-mode | 規(guī)定對象動畫時間之外的狀態(tài)商模。 |
- animation-timing-function速度曲線
值 | 描述 |
---|---|
linear | 動畫從頭到尾的速度是相同的奠旺。 |
ease | 默認。動畫以低速開始施流,然后加快响疚,在結(jié)束前變慢。 |
ease-in | 動畫以低速開始瞪醋。 |
ease-out | 動畫以低速結(jié)束忿晕。 |
ease-in-out | 動畫以低速開始和結(jié)束。 |
cubic-bezier(n,n,n,n) | 在 cubic-bezier 函數(shù)中自己的值银受〖危可能的值是從 0 到 1 的數(shù)值。 |
在谷歌瀏覽器里面需要加上
-webkit-
IE6,7,8,9
不支持css3
運動-
拓展閱讀
-
CSS3盒模型陰影
box-shadow:inset x y blur spread color
-
inset
:投影方式 -
inset
:內(nèi)投影 -
outset
:外投影 默認(不能設置) -
x
宾巍、y
:陰影偏移 -
blur
:模糊半徑(灰度) -
spread
:擴展陰影半徑 - 先擴展原有形狀咕幻,再開始畫陰影
color
CSS3
盒模型倒影-
box-reflect
倒影- 方向
above|below|left|right;
- 距離
- 漸變(可選)
- 方向
-
CSS3其他盒模型
-
box-sizing
盒模型解析模式 -
content-box
標準盒模型(和css2
一樣的計算) width/height=border+padding+content
-
border-box
怪異盒模型width/height
與設置的值一樣 ,content
減小
-
-
擴展閱讀
第十課 transform 2D轉(zhuǎn)換
-
Css3
平面轉(zhuǎn)換方法-
translate()
移動 -
rotate()
旋轉(zhuǎn) -
scale()
縮放 -
skew()
翻轉(zhuǎn) -
matrix()
矩陣
-
-
transform:
-
rotate()
旋轉(zhuǎn)函數(shù) (deg)-
deg
度數(shù)
-
-
skew(X,Y)
傾斜函數(shù) (deg)skewX()
skewY()
-
scale(X,Y)
縮放函數(shù) (正數(shù)顶霞、負數(shù)和小數(shù))scaleX()
scaleY()
-
translate(X,Y)
位移函數(shù)(px)translateX()
translateY()
-
-
rotate()
旋轉(zhuǎn)方法- 用于旋轉(zhuǎn)元素角度
- 例:
rotate(30deg)
- 把元素順時針旋轉(zhuǎn) 30 度
-
translate()
位置方法- 用于移動元素位置
- 例:
translate(50px,100px)
- 把元素從左側(cè)移動 50 像素肄程,從頂端移動 100 像素锣吼。
- 例:
- 其實有些類似于我們的相對定位
- 用于移動元素位置
-
scale()
尺寸方法- 方法用于改變元素尺寸
- 例:
scale(2,4)
- 把寬度轉(zhuǎn)換為原始尺寸的 2 倍,把高度轉(zhuǎn)換為原始高度的 4 倍
- 例:
- 方法用于改變元素尺寸
-
skew()
翻轉(zhuǎn)方法- 通過
skew()
方法蓝厌,元素翻轉(zhuǎn)給定的角度 - 例:
transform: skew(30deg,20deg);
- 把元素圍繞
X
軸把元素翻轉(zhuǎn)30
度玄叠,圍繞Y
軸翻轉(zhuǎn)20
度
- 把元素圍繞
- 通過
第十一課 transform 3D轉(zhuǎn)換
-
Css3
立體轉(zhuǎn)換-
transform-style(preserve-3d)
建立3D
空間(指定元素的子元素展示的場景是在3D場景還是平面(投影)場景) -
Perspective
視角(指定觀察者與z=0平面的距離,從而讓元素及子元素看起來有3D透視位置效果
值:集體的帶單位數(shù)值) -
Perspective- origin
視角基點- 值:取值類似于變換基準
-
transform-origin
:坐標軸基點(變換基準)- 值:具體的坐標值/百分比/(
left
/right
/center
/top
/bottom
)
默認center center
- 值:具體的坐標值/百分比/(
-
-
transform 新增函數(shù)
rotateX()
rotateY()
rotateZ()
translateZ()
scaleZ()
第十二課 視頻音頻
-
視頻音頻格式的簡單介紹
- 常見的視頻格式
- 視頻的組成部分:畫面拓提、音頻读恃、編碼格式
- 視頻編碼:H.264、Theora代态、VP8(google開源)
- 常見的音頻格式
- 視頻編碼:ACC寺惫、MP3、Vorbis
- 常見的視頻格式
HTML5
支持的格式
-
HTML5
能在完全脫離插件的情況下播放音視頻,但是不是所有格式都支持胆数。 -
支持的視頻格式:
-
Ogg=
帶有Theora
視頻編碼+Vorbis
音頻編碼的Ogg
文件 -
MEPG4=
帶有H.264視頻編碼+AAC
音頻編碼的MPEG4
文件 -
WebM=
帶有VP8
視頻編碼+Vorbis
音頻編碼的WebM
格式
-
Video
的使用
-
單獨用法
<video src="文件地址" controls="controls"></video>
- 帶提示用法
< video src="文件地址" controls="controls">
您的瀏覽器暫不支持video標簽肌蜻。播放視頻
</ video >
- 兼容用法
< video controls="controls" width="300">
<source src="move.ogg" type="video/ogg" >
<source src="move.mp4" type="video/mp4" >
您的瀏覽器暫不支持video標簽互墓。播放視頻
</ video >
Video
的常見屬性
屬性 | 值 | 描述 |
---|---|---|
Autoplay | Autoplay | 視頻就緒自動播放 |
controls | controls | 向用戶顯示播放控件 |
Width | Pixels(像素) | 設置播放器寬度 |
Height | Pixels(像素) | 設置播放器高度 |
Loop | Loop | 播放完是否繼續(xù)播放該視頻必尼,循環(huán)播放 |
Preload | load{auto,meta,none} | 規(guī)定是否預加載視頻。 |
Src | url | 視頻url地址 |
Poster | Imgurl | 加載等待的畫面圖片 |
Autobuffer | Autobuffer | 設置為瀏覽器緩沖方式篡撵,不設置autoply才有效 |
Video
的API
方法
方法 | 屬性 | 事件 |
---|---|---|
play() | currentSrc | play |
pause() | currentTime | pause |
load() | videoWidth | progress |
canPlayType() | videoHeight | error |
第十三課 canvas
- 標簽
<canvas>
- 不支持
canvas
的瀏覽器可以看到的內(nèi)容 - 默認寬度
300px
判莉,默認高度150px
- 注意:
canvas
寬高需要設置在標簽中 否則繪制的東西可能出錯
- 不支持
-
<canvas>
繪制環(huán)境-
getContext("2d")
;目前支持2d
的場景
-
<canvas width="" height="" id="">
您的瀏覽器不支持canvas,請更換瀏覽器育谬!
</canvas>
-
繪制矩形
-
rect(L,T,W,H)
:創(chuàng)建一個矩形 -
fillRect(L,T,W,H)
:繪制填充的矩形 -
clearRect(x,y,w,h)
清除矩形選區(qū) -
strokeRect(L,T,W,H)
繪制空心矩形(無填充)- 默認一像素黑色邊框
-
-
設置繪圖樣式
-
fillStyle
:填充顏色(繪制canvas
是有順序的) -
lineWidth
:觸筆寬度(線寬) -
strokeStyle
:觸筆顏色
-
-
繪制路徑
-
beginPath()
:開始路徑 -
closePath():
結(jié)束路徑 -
moveTo(x,y)
:將觸筆移動到x,y點 -
lineTo(x,y)
:繪制到x,y點 -
stroke():
觸筆方法 畫線 默認為黑色 -
fill()
:填充方法 -
rect(x,y,w,h)
:矩形路徑 -
save()
:保存繪圖信息 并新開辟一個異次元空間 -
restore()
:恢復路徑
-
-
繪制曲線
-
arcTo(x1,y1,x2,y2,r)
-
x1
,y1
坐標一x2
,y2
坐標二 r圓弧半斤
-
-
quadraticCurveTo(dx,dy,x1,y1)
- 貝塞爾曲線:
dx
,dy
控制點x1
,y1
結(jié)束坐標
- 貝塞爾曲線:
-
bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1)
- 貝塞爾曲線:
dx1,dy1
控制點一dx2,dy2
控制點二 -
x1,y1
結(jié)束坐標
- 貝塞爾曲線:
-
-
繪制圓形
-
arc(x,y,半徑,起始弧度,結(jié)束弧度,旋轉(zhuǎn)方向)
-
x
券盅,y
起始位置 - 弧度與角度:
弧度=角度值*Math.PI/180
- 旋轉(zhuǎn)方向:順時針(默認:
false
),逆時針(true
)
-
-
-
繪制文本
-
strokeText(文本,x,y)
; 繪制空心文本 -
fillText(文本,x,y)
; 繪制實心文本 -
font = "font-size font-family"
注:尺寸 字體缺一不可-
textAlign = "";
文本左右對齊方式start center end left right
-
textBaseline
文本上下對齊方式-
alphabetic
默認膛檀。文本基線是普通的字母基線锰镀。 -
top
文本基線是em
方框的頂端。咖刃。 -
hanging
文本基線是懸掛基線泳炉。 -
middle
文本基線是em
方框的正中。 -
ideographic
文本基線是表意基線嚎杨。 -
bottom
文本基線是em
方框的底端花鹅。 -
measureText(文本).width;
文本實際寬度(只有寬度值)
-
-
-
-
圖形邊界樣式
-
lineJoin
: 邊界連接點樣式-
miter
(默認值),round
(圓角),bevel
(斜角)
-
-
lineCap
: 端點樣式-
butt
(默認值),round
(圓角),square
(高度多出線寬一半)
-
-
-
繪制圖片
-
圖片預加載,獲取圖片文件
-
onload
中調(diào)用 -
drawImage(img,x,y,w,h);
繪制圖片(圖片,坐標x
,坐標y
,寬度,高度)
-
-
設置背景
createPattern(img,平鋪方式)
- 平鋪方式:
repeat
,repeat-x
,repeat-y
,no-repeat
-
-
canvas變換
translate(x,y)
- 坐標基準點偏移 : 從起始點為基準枫浙,移動到當前位置
-
rotate(弧度)
: 旋轉(zhuǎn)弧度公式 = 角度*PI/180
-
scale(wb,hb)
縮放比例(縮放canvas
繪制的圖片)
-
顏色漸變
- 線性漸變:
createLinearGradient(x1,y1,x2,y2)
-
x1
,y1
起始坐標點 -
x2
,y2
結(jié)束坐標點
-
- 徑向漸變:
createRadialGradient(x1,y1,r1,x2,y2,r2)
-
x1
,y1
,r1
內(nèi)圓坐標及半徑 -
x2
,y2
,r2
外圓坐標及半徑 -
addColorStop
(位置,顏色) 位置:漸變點0-1
之間 可多個
-
- 線性漸變:
-
陰影
-
shadowOffsetX
,shadowOffsetY
x
軸刨肃、y
軸偏移 -
shadowBlur
陰影模糊度 -
shadowColor
陰影顏色 默認顏色:rgba(0,0,0,0)
-
-
像素
-
createImageData(sx,sy)
創(chuàng)建新的、空白的ImageData
對象 -
getImageData(x1,y1,sx,sy)
- 返回
ImageData
對象箩帚,該對象為畫布上指定的矩形復制像素數(shù)據(jù)putImageData(img,x2,y2)
- 把圖像數(shù)據(jù)(從指定的
ImageData
對象)放回畫布上
- 返回
-
-
合成
-
globalAlpha
設置或返回繪圖的當前alpha
或透明值 -
globalCompositeOperation
設置或返回新圖像如何繪制到已有的圖像上 -
source-over
默認真友。在目標圖像上顯示源圖像。 -
source-atop
在目標圖像頂部顯示源圖像紧帕。源圖像位于目標圖像之外的部分是不可見的盔然。 -
source-in
在目標圖像中顯示源圖像。只有目標圖像內(nèi)的源圖像部分會顯示,目標圖像是透明的轻纪。 -
source-out
在目標圖像之外顯示源圖像油额。只會顯示目標圖像之外源圖像部分,目標圖像是透明的刻帚。 -
destination-over
在源圖像上方顯示目標圖像潦嘶。 -
destination-atop
在源圖像頂部顯示目標圖像。源圖像之外的目標圖像部分不會被顯示崇众。 -
destination-in
在源圖像中顯示目標圖像掂僵。只有源圖像內(nèi)的目標圖像部分會被顯示,源圖像是透明的顷歌。 -
destination-out
在源圖像外顯示目標圖像锰蓬。只有源圖像外的目標圖像部分會被顯示,源圖像是透明的眯漩。 -
lighter
顯示源圖像 + 目標圖像芹扭。 -
copy
顯示源圖像。忽略目標圖像赦抖。 -
xor
使用異或操作對源圖像與目標圖像進行組合舱卡。
-
第十四課 SVG繪圖
-
svg是什么
- 矢量圖
- 與
canvas
的區(qū)別
svg的引入方式
方式一:
<?xml version="1.1" encoding="utf-8"?>
<!DOCTYPE svg
PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/
Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"></svg>
-
方式二:
- 圖片、背景队萤、框架
-
方式三:
-
html
頁面中添加svg
-
-
circle
:圓形- 圓心坐標
cx
,cy
- 半徑
r
-
fill
stroke
stroke-width
stlye
樣式 fill = "none/transparent"
- 圓心坐標
-
ellipse:橢圓
-
cx
屬性定義的橢圓中心的x坐標 -
cy
屬性定義的橢圓中心的y坐標 -
rx
屬性定義的水平半徑 -
ry
屬性定義的垂直半徑
-
-
rect : 矩形
-
width
height
寬高 - 坐標
x
,y
- 圓角
rx
,ry
-
-
line
:線條-
x1
,y1
,x2
,y2
-
stroke-opacity
透明fill-opacity
-
-
polyline:折線
-
points
:點坐標(x1 y1 x2 y2...
)或(x1,y1,x2,y2....
)
-
-
polygon:多邊形
- 折線閉合
fill-rule:evenodd/nonzero
;
- 折線閉合
-
path: 路勁
-
d
屬性 -
M(起始坐標)
,L(結(jié)束坐標)
,H(水平線)
,V(垂直線)
,A(圓弧)
,Z(閉合路勁)
-
C
,S
,Q
,T
貝塞爾曲線 - 大寫為絕對坐標(具體的坐標位置)
- 小寫為相對坐標(相對起始坐標點的具體長度)
-
- A命令
-
x
半徑y
半徑 角度 弧長(0 小弧 1大弧) 方向(0逆時針 1順時針) - 終點
(x y)
-
-
-
C命令:三次貝塞爾曲線
-
(x1,y1,x2,y2,x,y)
x1
,y1
控制點一x2
,y2
控制點二x
,y
結(jié)束點
-
-
S命令:平滑貝塞爾曲線(自動對稱一個控制點)
-
(x2,y2,x,y)
x2
,y2
控制點 x,y結(jié)束點
-
-
Q命令:二次貝塞爾曲線
-
(x1,y1,x,y)
x1,y1控制點 x,y結(jié)束點
-
-
T命令:一次貝塞爾曲線
-
(x,y)
結(jié)束點
-
-
g
標簽:組合元素 設置元素公共屬性- 共用屬性
transform = "translate(0,0)"
-
text
標簽-
x
,y
,text-anchor
(對齊start end middle)font-size
-
-
image
標簽-
x
,y
,width
height
-
xlink:href
(圖片地址)
-
第十五課 地理信息與本地存儲
地理位置
經(jīng)度 : 南北極的連接線
緯度 : 東西連接的線
-
位置信息從何而來
-
IP
地址 -
GPS
全球定位系統(tǒng) -
Wi-Fi
無線網(wǎng)絡 - 基站
-
-
avigator.geolocation
單次定位請求 :
getCurrentPosition
(請求成功,請求失敗,數(shù)據(jù)收集方式)-
請求成功函數(shù)
- 經(jīng)度 :
coords.longitude
- 緯度 :
coords.latitude
- 準確度 :
coords.accuracy
- 海拔 :
coords.altitude
- 海拔準確度 :
coords.altitudeAcuracy
- 行進方向 :
coords.heading
- 地面速度 :
coords.speed
- 請求的時間:
new Date(position.timestamp)
- 經(jīng)度 :
-
請求失敗函數(shù)
- 失敗編號 :
code
- 0 : 不包括其他錯誤編號中的錯誤
- 1 : 用戶拒絕瀏覽器獲取位置信息
- 2 : 嘗試獲取用戶信息轮锥,但失敗了
- 3 : 設置了
timeout
值,獲取位置超時了
- 失敗編號 :
-
數(shù)據(jù)收集 : json的形式
-
enableHighAcuracy
: 更精確的查找要尔,默認false
-
timeout
: 獲取位置允許最長時間舍杜,默認infinity
-
maximumAge
: 位置可以緩存的最大時間,默認0
-
-
多次定位請求* :
watchPosition
- 移動設備有用赵辕,位置改變才會觸發(fā)
- 配置參數(shù):
frequency
更新的頻率 - 關閉更新請求 :
clearWatch
- examp01 getCurrentPosition
<button id="btn">請求位置信息</button>
<div id="box"></div>
var btn = document.getElementById("btn");
var box = document.getElementById("box");
btn.onclick = function(){
navigator.geolocation.getCurrentPosition(function(position){
box.innerHTML +="經(jīng)度:"+position.coords.longitude + "<br>";
box.innerHTML +="緯度:"+position.coords.latitude + "<br>";
box.innerHTML +="海拔:"+position.coords.accuracy + "<br>";
box.innerHTML +="海拔的準確度:"+position.coords.altitudeAccuracy + "<br>";
box.innerHTML +="地面速度"+position.coords.speed + "<br>";
box.innerHTML +="行進方向"+position.coords.heading + "<br>";
box.innerHTML +="請求時間"+new Date(position.timestamp) + "<br>";
},function(err){
alert(err.code);
},{
enableHighAccuracy:false,//精確請求
timeout:5000,//設置超時
maximumAge:1000//緩存時間
});
}
- **examp02 **
var btn = document.getElementById("btn");
var box = document.getElementById("box");
btn.onclick = function(){
navigator.geolocation.watchPosition(function(position){
box.innerHTML +="經(jīng)度:"+position.coords.longitude + "<br>";
box.innerHTML +="緯度:"+position.coords.latitude + "<br>";
box.innerHTML +="海拔:"+position.coords.accuracy + "<br>";
box.innerHTML +="海拔的準確度:"+position.coords.altitudeAccuracy + "<br>";
box.innerHTML +="地面速度"+position.coords.speed + "<br>";
box.innerHTML +="行進方向"+position.coords.heading + "<br>";
box.innerHTML +="請求時間"+new Date(position.timestamp) + "<br>";
},function(err){
alert(err.code);
},{
enableHighAccuracy:false,//精確請求
timeout:5000,//設置超時
maximumAge:1000//緩存時間
});
}
- example03 高德地圖應用
#container {
width:600px;
height: 300px;
margin:40px auto;
border:1px solid red;
}
<div id="container"></div>
<script type="text/javascript"
src="http://webapi.amap.com/maps?v=1.3&key=278b7b8b4728ba302b7e566fc2a97b36">
</script>
var map = new AMap.Map('container');
- examp04 搜索城市
#container {width:500px; height:500px; margin:100px auto;}
.menu{
width:100px;
box-shadow: 0 0 5px #000;
margin:auto;
background:#fff;
}
.menu ul li{
list-style:none;
line-height:30px;
text-align:center;
cursor:pointer;
}
#box{
width:400px;
height:40px;
position:absolute;
top:150px;
left:50%;
margin-left:-200px;
background:#fff;
box-shadow:0 0 10px #000;
}
input{
height:38px;
width:300px;
border:none;
outline:none;
}
#btn{
width:80px;
}
<div id="container"></div>
<div id="box">
<input type="text" id="city" placeholder="請輸入城市...">
<input type="button" value="搜索" id="btn">
</div>
<script type="text/javascript"
src="http://webapi.amap.com/maps?v=1.3&key=278b7b8b4728ba302b7e566fc2a97b36">
</script>
var btn = document.getElementById("btn");
var city = document.getElementById("city");
var map = new AMap.Map('container');
var toolBar,mouseTool,contextMenu;
//在地圖中添加操作toolBar插件既绩、mouseTool插件
map.plugin(["AMap.ToolBar","AMap.MouseTool"],function(){
toolBar = new AMap.ToolBar();
map.addControl(toolBar);
mouseTool = new AMap.MouseTool(map);
});
var menuContext = document.createElement("div");
menuContext.innerHTML = "<div class=menu><ul><li onclick='zoomMenu(0)'>縮小</li>
<li onclick='zoomMenu(1)'>放大</li>
<li onclick='distanceMeasureMenu()'>距離量測</li>
<li onclick = 'addMarkerMenu()'>添加標記</li></ul></div>";
//創(chuàng)建一個自定義的右鍵菜單
contextMenu = new AMap.ContextMenu({isCustom:true,content:menuContext});
//給地圖綁鼠標右鍵功能彈出右鍵菜單
AMap.event.addListener(map,"rightclick",function(e){
contextMenu.open(map,e.lnglat);//e.lnglat鼠標點擊的經(jīng)緯度
contextMenuPosition = e.lnglat;
})
//右鍵菜單縮放地圖
function zoomMenu(n){
if(n === 0){map.zoomOut();}
if(n === 1){map.zoomIn();}
contextMenu.close();
}
contextMenu.close();
//測量距離功能
function distanceMeasureMenu(){
mouseTool.rule();
contextMenu.close();
}
//添加標注功能
function addMarkerMenu(){
mouseTool.close();
var marker = new AMap.Marker({
map: map,
position: contextMenuPosition, //基點位置
offset: {x:-5,y:-10} //相對于基點位置
});
contextMenu.close();
}
//搜索城市
btn.onclick = function(){
var val = city.value;
map.setCity(val);
}
本地存儲
-
Storage
-
sessionStorage
-
session
臨時回話,從頁面打開到頁面關閉的時間段 - 窗口的臨時存儲匆帚,頁面關閉熬词,本地存儲消失
-
-
localStorage
- 永久存儲(可以手動刪除數(shù)據(jù))
-
-
Storage
的特點- 存儲量限制 ( 5M )
- 客戶端完成,不會請求服務器處理
-
sessionStorage
數(shù)據(jù)是不共享吸重、localStorage
共享
-
Storage API
-
setItem()
:- 設置數(shù)據(jù)互拾,(
key
,value
)類型,類型都是字符串 - 可以用獲取屬性的形式操作
- 設置數(shù)據(jù)互拾,(
-
getItem():
- 獲取數(shù)據(jù)嚎幸,通過
key
來獲取到相應的value
- 獲取數(shù)據(jù)嚎幸,通過
-
removeItem()
:- 刪除數(shù)據(jù)颜矿,通過key來刪除相應的
value
- 刪除數(shù)據(jù)颜矿,通過key來刪除相應的
-
clear()
:- 刪除全部存儲的值
-
-
存儲事件:
- 當數(shù)據(jù)有修改或刪除的情況下,就會觸發(fā)
storage
事件 - 在對數(shù)據(jù)進行改變的窗口對象上是不會觸發(fā)的`
-
Key
: 修改或刪除的key
值嫉晶,如果調(diào)用clear()
,key
為null
-
newValue
: 新設置的值骑疆,如果調(diào)用removeStorage()
,key
為null
-
oldValue
: 調(diào)用改變前的value
值 -
storageArea
: 當前的storage
對象 -
url
: 觸發(fā)該腳本變化的文檔的url - 注:
session
同窗口才可以,例子:iframe
操作
- 當數(shù)據(jù)有修改或刪除的情況下,就會觸發(fā)
第十六課 HTML5新增JS方法
-
新增選擇器
-
document.querySelector()
選擇單個元素 -
document.querySelectorAll()
選擇所有的 -
document.getElementsByClassName()
通過類名選擇
-
-
延遲加載JS
-
JS
的加載會影響后面的內(nèi)容加載- 很多瀏覽器都采用了并行加載JS田篇,但還是會影響其他內(nèi)容
-
Html5
的defer
和async
-
defer=“defer ”
: 延遲加載,會按順序執(zhí)行箍铭,在onload
執(zhí)行前被觸發(fā) -
async =“async”
: 異步加載泊柬,加載完就觸發(fā),有順序問題
-
- 瀏覽器兼容性:
Labjs
庫
-
/**
* 動態(tài)加載script文件 (推薦方法) 只需請求一次 可加載多個JavaScript文件诈火,減少請求次數(shù)以及頁面的加載阻塞
*/
function loadScript(url,callback){
var script = document.createElement("script");
script.type = "text/javascript";
if(script.readyState){//IE
script.onreadystatechange = function(){
if(script.readyState == "loaded" || script.readyState == "complete"){
onreadystatechange = null;
callback();
}
}
}else {
script.onload = function(){
callback();
}
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
loadScript("js/defer.js",function(){
console.log("加載成功");
// 加載成功回調(diào)
});
loadScript("js/async.js",function(){
console.log("加載成功");
// 加載成功回調(diào)
});
-
獲取
class
列表屬性-
classList
-
length
:class
的長度 -
add()
: 添加class
方法 -
remove()
: 刪除class
方法 -
toggle()
: 切換class
方法 -
contains()
: 判斷類名是否存在返回bool
值
-
-
-
JSON
的新方法-
parse()
: 把字符串轉(zhuǎn)成json
- 字符串中的屬性要嚴格的加上引號
-
stringify()
: 把json
轉(zhuǎn)化成字符串- 會自動的把雙引號加上
-
與
eval
的區(qū)別-
eval()
:對任何的字符串進行解析變成js -
parse()
:字符串中的屬性要嚴格的加上引號
-
-
其他瀏覽器兼容
-
-
歷史管理
-
onhashchange
:改變hash值來管理 -
history
:- 服務器下運行
-
pushState
: 三個參數(shù) :數(shù)據(jù) 標題(都沒實現(xiàn)) 地址(可選) -
onpopstate
事件 : 讀取數(shù)據(jù)event.state
-
- 服務器下運行
-
第十七課 HTML5拖拽事件
圖片自帶拖拽功能
其他元素可設置
draggable
屬性-
draggable :true
- 拖拽元素(被拖拽元素對象)事件 :
-
ondragstart
: 拖拽前觸發(fā) -
ondrag
:拖拽前逊谋、拖拽結(jié)束之間桂躏,連續(xù)觸發(fā) -
ondragend
:拖拽結(jié)束觸發(fā)
-
- 目標元素(拖拽元素被拖到的對象)事件 :
-
ondragenter
:進入目標元素觸發(fā) -
ondragover
:進入目標、離開目標之間喉刘,連續(xù)觸發(fā) -
ondragleave
:離開目標元素觸發(fā) -
ondrop
:在目標元素上釋放鼠標觸發(fā)- 需要在
ondragover
事件里面阻止默認事件
- 需要在
-
- 拖拽元素(被拖拽元素對象)事件 :
-
拖拽兼容問題
- 火狐瀏覽器下需設置
dataTransfer
對象才可以拖拽除圖片外的其他標簽dataTransfer
對象setData()
: 設置數(shù)據(jù)key
和value
(必須是字符串)getData()
: 獲取數(shù)據(jù)抄腔,根據(jù)key
值科阎,獲取對應的value
effectAllowed
: 設置光標樣式(none
,copy
,copyLink
,copyMove
,link
,linkMove
,move
,all
和uninitialized
)setDragImage
:三個參數(shù)(指定的元素碗淌,坐標X
掩完,坐標Y
)-
files
: 獲取外部拖拽的文件,返回一個filesList
列表-
filesList
下有個type
屬性充活,返回文件的類型
-
- 火狐瀏覽器下需設置
-
讀取文件信息
-
FileReader
(讀取文件信息)readAsDataURL
- 參數(shù)為要讀取的文件對象
-
onload
當讀取文件成功完成的時候觸發(fā)此事件 -
this. result
獲取讀取的文件數(shù)據(jù)
-
-
examp01 拖拽案例
<div id="drap" draggable="true"></div>
<div id="box"></div>
#drap {
width: 100px;
height: 100px;
background: red;
}
#box {
width: 500px;
height: 500px;
border: 2px solid blue;
margin: 50px auto;
}
//被拖拽元素事件
drap.ondragstart = function(ev){ // 拖拽前
var ev = ev || window.event;
//火狐瀏覽器下需設置dataTransfer對象才可以拖拽除圖片外的其他標簽
ev.dataTransfer.setData("key","poetries");
//effectAllowed : 設置光標樣式(none, copy, copyLink, copyMove, link, linkMove,move, all 和uninitialized)
ev.dataTransfer.effectAllowed = "copy";
//設置被拖拽的小元素 setDragImage :三個參數(shù)(指定的元素蜂莉,坐標X,坐標Y)
ev.dataTransfer.setDragImage(pic,25,25);
this.style.background = "green";
}
drap.ondrag = function(){ // 拖拽過程中
this.innerText = "被拖拽中...";
}
drap.ondragend = function(){ // 拖拽結(jié)束
this.style.background = "red";
this.innerHTML = "";
}
//目標元素事件
box.ondragenter = function(){ //進入目標元素觸發(fā)
this.innerHTML = "可將文件拖放到這里!";
}
box.ondragover = function(ev){ //進入目標堪唐、離開目標之間巡语,連續(xù)觸發(fā)
var ev = ev || window.event;
ev.preventDefault();
this.style.background = "pink";
}
box.ondragleave = function(){ //離開目標元素觸發(fā)
this.innerHTML = "";
this.style.background = "none";
}
box.ondrop = function(ev){//在目標元素上釋放鼠標觸發(fā)
//alert("拖放結(jié)束")
this.innerHTML = ev.dataTransfer.getData("key");
}
- example02 拖拽相冊
<h1>請拖拽圖片到紅框中</h1>
<div id="box"><span>可以將文件拖放到這里t岬浮淮菠!</span></div>
<div id="dustbin">垃圾回收站</div>
#box{
position:relative;
width:500px;
height:500px;
border:2px solid red;
margin:100px auto 0px;
}
#box span{
position:absolute;
left:0;
top:0;
right:0;
bottom:0;
height:50px;
width:192px;
margin:auto;
display:none;
}
img{
width:100px;height:100px;
}
#dustbin{
width:200px;
height:100px;
background:#000;
color:#fff;
font-size:40px;
text-align:center;
line-height:100px;
margin:auto;
}
var box = document.getElementById("box");
var dusTbin = document.getElementById("dustbin");
var span = box.getElementsByTagName("span")[0];
//目標元素事件
var img = '';
box.ondragenter = function(){//進入目標元素觸發(fā)
span.style.display = "block";
}
box.ondragover = function(ev){//在目標元素上連續(xù)觸發(fā)
var ev = ev||window.event;
ev.preventDefault();//阻止默認事件
span.style.display = "block";
}
box.ondragleave = function(){//離開目標元素
span.style.display = "none";
}
box.ondrop = function(ev){//在目標元素上面釋放鼠標觸發(fā)
//alert("拖拽結(jié)束!荤堪!");
var ev = ev||window.event;
ev.preventDefault();//阻止默認事件
span.style.display = "none";
var file = ev.dataTransfer.files;
//alert(file[0].type);
for (var i=0; i<file.length ;i++ )
{
if (file[i].type.indexOf("image")!=-1)
{
var read = new FileReader();//新建一個讀取文件對象
read.readAsDataURL(file[i]);//讀取文件
read.onload = function(){//讀取文件成功之后調(diào)用什么函數(shù)
var img = document.createElement("img");
//alert(this.result);
img.src = this.result;
box.appendChild(img);
//獲取img節(jié)點 實現(xiàn)刪除功能
var oImg = document.getElementsByTagName("img");
if (oImg)
{
for (var j=0;j<oImg.length ;j++ )
{
oImg[j].ondragstart = function(ev){
ev.dataTransfer.setData("data",ev.target.innerHTML);
img = ev.target;
}
oImg[j].ondragend = function(ev){
ev.dataTransfer.clearData("data");//清楚數(shù)據(jù)
img = null;
}
}
}
//實現(xiàn)刪除功能(移除img節(jié)點)
dusTbin.ondragover = function(ev){
ev.preventDefault();
}
dusTbin.ondrop = function(){
if (img)
{
img.parentNode.removeChild(img);
}
}
}
}else{
alert("請上傳圖片合陵!");
}
}
}
- example03 拖拽排序
<div class="wrap" id="wrap">
<ul id="box">
<li style="background:#f3f" draggable="true">1</li>
<li style="background:#ff6" draggable="true">2</li>
<li style="background:#c60" draggable="true">3</li>
<li style="background:#903" draggable="true">4</li>
<li style="background:#0f6" draggable="true">5</li>
<li style="background:#636" draggable="true">6</li>
<li style="background:#36f" draggable="true">7</li>
<li style="background:#033" draggable="true">8</li>
</ul>
</div>
.wrap{
width:500px;
height:500px;
margin:50px auto;
}
ul li{
list-style:none;
width:500px;
height:50px;
color:#fff;
text-align:center;
line-height:50px;
font-size:40px;
font-weight:bold;
}
var oUl = document.getElementById("box");
var oLi = oUl.getElementsByTagName("li");
var curr = 0;
function sort(){
for (var i = 0;i < oLi.length;i++) {
oLi[i].index = i;
oLi[i].ondragstart = function(ev){
var ev = ev || window.event;
ev.dataTransfer.setData("data",this.innerHTML);
//this.innerHTML = "被拖拽中...";
curr = this.index;
}
oLi[i].ondragenter = function(){
for(var i = 0;i < oLi.length;i++){
oLi[i].style.border = "none";
}
if(curr != this.index){
this.style.border = "2px solid #000";
}
}
oLi[i].ondragover = function(e){
var e = e || window.event;
e.preventDefault();
}
oLi[i].ondrop = function(ev){ //鼠標釋放的時候
//oUl.insertBefore(oLi[curr],this);//insertBefore(新節(jié)點,目標節(jié)點)
inserAfter(oLi[curr],this);
this.style.border = "none";
//oLi[curr].innerHTML = ev.DataTransfer.getData("data");
sort();
}
}
}
sort();
function inserAfter(newItem,targerItem){
var parentItem = targerItem.parentNode;
if(parentItem.lastChild == targerItem){
parentItem.appendChild(newItem);
}else {
parentItem.insertBefore(newItem,targerItem.nextSibling);
}
}
第十八課 跨文檔操作
跨文檔請求
-
同域跨文檔
-
iframe
內(nèi)頁:- 父頁面操作子頁面:
contentWindow
- 子頁面操作父頁面:
window.top
(找到最頂級的父頁面)/parent
(第一父頁面) - 新窗口頁:
- 父頁面操作子頁面:
window.open
- 子頁面操作父頁面:
window.opener
- 父頁面操作子頁面:
- 父頁面操作子頁面:
-
-
不同域跨文檔
-
postMessage(“發(fā)送的數(shù)據(jù)”,”接收的域”)
-
message
事件監(jiān)聽 -
ev.origin
發(fā)送數(shù)據(jù)來源的域 -
ev.data
發(fā)送的數(shù)據(jù)
-
- 通過判斷發(fā)送的數(shù)據(jù)來執(zhí)行相應的需求
-
-
ajax跨域
-
XMLHttpRequest
新增功能- 跨域請求:修改服務端頭信息
- I
E
兼容:XDomaiRequest
-
進度事件:
-
upload.onprogress(ev)
上傳進度(實現(xiàn)文件上傳進度條)-
ev.total
發(fā)送文件的總量 -
ev.loaded
已發(fā)送的量
-
-
FormData
構(gòu)建提交二進制數(shù)據(jù)
-
-
-
拓展閱讀
附錄一 css3響應式布局
-
媒體類型
-
*all
所有媒體 -
braille
盲文觸覺設備 -
embossed
盲文打印機 -
*print
手持設備 -
projection
打印預覽 -
*screen
彩屏設備 -
speech
'聽覺'類似的媒體類型 -
tty
不適用像素的設備 -
tv
電視
-
-
關鍵字
and
-
not
not
關鍵字是用來排除某種制定的媒體類型 -
only
only
用來定某種特定的媒體類型
-
媒體特性
(max-width:600px)
-
(max-device-width: 480px)
設備輸出寬度 -
(orientation:portrait)
豎屏 -
(orientation:landscape)
橫屏 -
(-webkit-min-device-pixel-ratio: 2)
像素比 -
devicePixelRatio
設備像素比 window.devicePixelRatio = 物理像素 / dips
樣式引入
<link rel="stylesheet" href="css/index.css" media="print" />
@import url("css/demo.css") screen;
@media screen{ }
<link rel=”stylesheet” media=”all and
(orientation:portrait)” href=”portrait.css”>
<link rel=”stylesheet” media=”all
and (orientation:landscape)”href=”landscape.css”>
@media screen and (min-width:360px) and (max-width:500px) {}
<link rel="stylesheet" type="text/css"
href="indexA.css" media="screen and (min-width: 800px)">
<link rel="stylesheet" type="text/css"
href="indexB.css" media="screen and (min-width: 600px) and (max-width: 800px)">
<link rel="stylesheet" type="text/css"
href="indexC.css" media="screen and (max-width: 600px)">
附錄二 HTML5速查表
- 可以查閱支持H5+CSS3的屬性
- HTML5 標簽含義之元素周期表
- HTML5標簽速查表
- 展示 flexbox 屬性的作用--推薦
- Flexbox 視覺指南--更好更容易地理解 Flexbox 某個屬性的作用