<input type='radio'>
的選擇變化可由onfocus
屬性控制javascript
<select>
的變化可由onchange
屬性控制 selectedIndex
對應當前選中option
的index
:select.options[selectedIndex]
指向當前選項 select.value
存儲的是當前選中option
的value
css
//<video> 與 </video> 之間插入的內容是供不支持 video 元素的瀏覽器顯示的 <video src="movie.ogg" width="320" height="240" controls="controls" id="video1"> Your browser does not support the video tag. </video> //video 元素容許多個 source 元素。source 元素能夠連接不一樣的視頻文件。瀏覽器將使用第一個可識別的格式 <video width="320" height="240" controls="controls" id="video1"> <source src="/i/movie.ogg" type="video/ogg"> <source src="/i/movie.mp4" type="video/mp4"> Your browser does not support the video tag. </video> //DOM控制視頻的播放暫停 var myVideo=document.getElementById("video1"); function playPause() { if (myVideo.paused) myVideo.play(); else myVideo.pause(); }
<audio controls="controls"> <source src="song.ogg" type="audio/ogg"> <source src="song.mp3" type="audio/mpeg"> Your browser does not support the audio tag. </audio>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69" /> function allowDrop(ev){ ev.preventDefault(); } function drag(ev){ ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev){ ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
//html <canvas width='' height='' id=''></canvas> //js var c=document.getElementById(''); var cxt=c.getContext('2d'); cxt.strokeStyle='#eee'; //cxt.fillStyle cxt.beginPath(); cxt.moveTo(i,j); cxt.lineTo(i,j); cxt.closePath(); cxt.stroke(); //真正描繪出路徑 cxt.fill(); cxt.strokeRect(0,0,width,height); //畫矩形 cxt.fillRect()
var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else{x.innerHTML="Geolocation is not supported by this browser.";} } function showPosition(position) { x.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; }
使用 getCurrentPosition() 方法來得到用戶的位置, 若是getCurrentPosition()運行成功,則向參數showPosition中規定的函數返回一個coordinates對象.getCurrentPosition() 方法的第二個參數用於處理錯誤
- web存儲
localstorage sessionstorage
- 應用緩存
經過建立 cache manifest 文件,能夠輕鬆地建立 web 應用的離線版本,如需啓用應用程序緩存,請在文檔的 <html>
標籤中包含 manifest 屬性:html
<!DOCTYPE HTML> <html manifest="demo.appcache"> ... </html>
每一個指定了 manifest 的頁面在用戶對其訪問時都會被緩存。若是未指定 manifest 屬性,則頁面不會被緩存(除非在 manifest 文件中直接指定了該頁面)。manifest 文件的建議的文件擴展名是:」.appcache」。
請注意,manifest 文件須要配置正確的 MIME-type,即 「text/cache-manifest」。必須在 web 服務器上進行配置。html5
manifest 文件是簡單的文本文件,它告知瀏覽器被緩存的內容(以及不緩存的內容)。manifest 文件可分爲三個部分:
1. CACHE MANIFEST - 在此標題下列出的文件將在首次下載後進行緩存
2. NETWORK - 在此標題下列出的文件須要與服務器的鏈接,且不會被緩存
3. FALLBACK - 在此標題下列出的文件規定當頁面沒法訪問時的回退頁面(好比 404 頁面)java
//完整的 Manifest 文件
CACHE MANIFEST
# 註釋:2012-02-21 v1.0.0 /theme.css /logo.gif /main.js NETWORK: login.asp FALLBACK: /html5/ /404.html
一旦應用被緩存,它就會保持緩存直到發生下列狀況:
1. 用戶清空瀏覽器緩存
2. manifest 文件被修改
3. 由程序來更新應用緩存css3
若是您編輯了一幅圖片,或者修改了一個 JavaScript 函數,這些改變都不會被從新緩存。更新註釋行中的日期和版本號是一種使瀏覽器從新緩存文件的辦法。
- Web Workers
當在 HTML 頁面中執行腳本時,頁面的狀態是不可響應的,直到腳本已完成。web worker 是運行在後臺的 JavaScript,獨立於其餘腳本,不會影響頁面的性能。您能夠繼續作任何願意作的事情:點擊、選取內容等等,而此時 web worker 在後臺運行。git
var w; function startWorker() { if(typeof(Worker)!=="undefined") { if(typeof(w)=="undefined") { w=new Worker("/example/html5/demo_workers.js"); } //向 web worker 添加一個 "onmessage" 事件監聽器,當 web worker 傳遞消息時,會執行事件監聽器中的代碼 w.onmessage = function (event) { document.getElementById("result").innerHTML=event.data; }; } else { document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers..."; } } function stopWorker() { w.terminate(); }
如今,讓咱們在一個外部 JavaScript 中建立咱們的 web worker。在這裏,咱們建立了計數腳本。該腳本存儲於 「demo_workers.js」 文件中:web
var i=0; function timedCount() { i=i+1; postMessage(i); setTimeout("timedCount()",500); } timedCount();
以上代碼中重要的部分是 postMessage() 方法 - 它用於向 HTML 頁面傳回一段消息。當咱們建立 web worker 對象後,它會繼續監聽消息(即便在外部腳本完成以後)直到其被終止爲止。如需終止 web worker,並釋放瀏覽器/計算機資源,請使用 terminate() 方法
- 服務器發送事件
- 新增表單元素
datalist:規定輸入域的選項列表
keygen:密鑰對生成器
output:定義不一樣類型的輸出canvas
box-sizing:border-box
可變成IE盒模型 position:absolute; transform:translate(-50%,-50%); left:50%; top:50%;
給出寬高三種垂直水平居中法:瀏覽器
position:absolute; left:50%; top:50%; margin-left:-width/2; margin-top:-height/2;
position:absolute; left,right,top,bottom:0; margin:auto;
display:flex;//父元素 margin:auto;//子元素
我的認爲居中仍是flex最好用啦!
border:10px solid transparent; border-left:#f00; width:0; height:0;
容器:
display:flex/inline-flex flex-direction:row/row-reverse/column/column-reverse flex-wrap:nowrap/wrap/wrap-reverse flex-flow:row nowrap justify-content:flex-start/flex-end/center/space-between/space-around align-items:flex-start/flex-end/center/baseline/stretch align-content:flex-start/flex-end/center/space-between/space-around/stretch //多跟軸線對齊方式
項目:
order:<integer> flex-grow:<number> flex-shrink:<number> flex-basis:auto|<length> //定義了在分配多餘空間以前,項目佔據的主軸空間 flex:0 1 auto align-self:flex-start/flex-end/center/baseline/stretch //覆蓋父元素的align-items屬性
具體可參看阮一峯的教程,總結的很好!
若是要實現背景透明而文字不透明的效果不能用opacity,可以使用背景色rgba來調整
選擇器
p:nth-child(n): p的父元素的第n個子元素是p元素 (p:first-child, p:last-child,p:only-child)
p:first-child 選擇屬於父元素的第一個子元素且這個子元素是<p>
元素。
p:only-child p的父元素只有一個子元素,而且這個子元素是p元素
p:nth-last-child(2) 同上,從最後一個子元素開始計數
p:nth-of-type(n): 選擇屬於p的父元素的第n個 <p>
元素(p:nth-first-type, p:nth-last-type,p:only-of-type)
p:only-of-type p的父元素能夠有多個子元素,可是隻能有一個p元素
div+p: 選擇緊接在 <div>
元素以後的 <p>
元素
div~p:選擇前面有div元素的p元素(div和p是兄弟元素)
[title~=flower]: 選擇 title 屬性包含單詞 「flower」 的全部元素
[lang|=en]: 選擇 lang 屬性值以 「en」 開頭的全部元素
a[src^=」https」]: 選擇其 src 屬性值以 「https」 開頭的每一個 <a>
元素
a[src$=」.pdf」]: 選擇其 src 屬性以 「.pdf」 結尾的全部 <a>
元素
a[src*=」abc」]: 選擇其 src 屬性中包含 「abc」 子串的每一個 <a>
元素
[target]: 選擇帶有 target 屬性全部元素
:not(p): 選擇非 <p>
元素的每一個元素。
background-image:-webkit-linear-gradient(left,blue,red 25%,blue 50%,red 75%,blue 100%);
background-clip:text/border-box/padding-box/content-box; //text:從前景內容的形狀(好比文字)做爲裁剪區域向外裁剪,如此便可實現使用背景做爲填充色之類的遮罩效果
文字透明可看見背景圖 color:transparent;
background-size:length/percentage/cover/contain
percentage:父元素的百分比
cover:背景圖像擴展至覆蓋背景區域(可能看不見部分圖像)
contain:擴展至最大尺寸(可看見所有區域)
background-attachment:scroll/fixed/inherit
background-orign:padding-box/border-box/content-box
規定背景圖片的定位區域background-position:top center/x% y%/x y
<style> @font-face { font-family: myFirstFont; src: url('Sansation_Bold.ttf'), url('Sansation_Bold.eot'); /* IE9+ */ font-weight:bold; } div { font-family:myFirstFont; } </style>
animation:moveName duration timing-function delay iteration-count animation-fill-mode direction;
@keyframes moveName { 0%: …… 50%: …… 100%: …… }
模擬 文字逐個顯示,且最後光標閃動
@keyframes typing { from { width: 0; } } @keyframes blink-caret { 50% { border-color: transparent; } } h1 { font: bold 200% Consolas, Monaco, monospace; border-right: .1em solid; width: 16.5em; /* fallback */ width: 30ch; /* # of chars */ margin: 2em 1em; white-space: nowrap; overflow: hidden; animation: typing 20s steps(30, end), /* 動畫分30步,不是平滑過渡 */ blink-caret .5s step-end infinite alternate; }
動畫播放過程當中,會忽然中止,默認行爲是跳回到動畫的開始狀態, 若是想讓動畫保持忽然終止時的狀態,就要使用animation-play-state屬性
div { animation: spin 1s linear infinite; animation-play-state: paused; } div:hover { animation-play-state: running; }
box-shadow:x y opacity color;
transition: property duration timing-function delay;
也可同時設置多個屬性的過渡
transition:width 1s,height 2s; //當不知道確切高度時可用max-height,用auto會突變 transition:width 1s,height 2s 1s; //添加delay可以讓動畫按順序執行
transform:translate(10px,10px) transform:rotate(10deg); transform:scale(2,4); transform:rotateX(10deg);//3D轉換,繞x軸旋轉
style.top/style.left
若想獲取style.top/style.left
的值必須以js顯示定義style.top/style.left
的值,或者之內聯形式定義屬性的值,不然獲取不到。
經過全局方法 getComputedStyle(element[,僞類]).getPropertyValue(prop) 和IE下的element.currentStyle().getPropertyValue(prop)能夠獲取到全部的樣式,包括繼承的,因此就算是一個空標籤用這個方法也能獲取到上百個樣式,getComputedStyle獲取到的樣式只能讀 不能寫,style.padding能夠寫,getPropertyValue同getAttribute
濾鏡屬性的模糊效果 -webkit-filter:blur(4px);
僞類的效果能夠經過添加一個實際的類來達到,而僞元素的效果則須要經過添加一個實際的元素才能達到,這也是爲何他們一個稱爲僞類,一個稱爲僞元素的緣由。僞元素建立的抽象元素不存在於文檔語言裏(能夠理解爲html源碼)
這裏用僞類 :first-child 和僞元素 :first-letter 來進行比較。
p>i:first-child {color: red}
<p> <i>first</i> <i>second</i> </p> //僞類 :first-child 添加樣式到第一個子元素
若是咱們不使用僞類,而但願達到上述效果,能夠這樣作:
.first-child {color: red}
<p> <i class="first-child">first</i> <i>second</i> </p>
即咱們給第一個子元素添加一個類,而後定義這個類的樣式。那麼咱們接着看看僞元素:
p::first-letter {color: red} <p>I am stephen lee.</p> //僞元素 ::first-letter 添加樣式到第一個字母
那麼若是咱們不使用僞元素,要達到上述效果,應該怎麼作呢?
.first-letter {color: red}
<p><span class='first-letter'>I</span> am stephen lee.</p>
即咱們給第一個字母添加一個 span,而後給 span 增長樣式,也就是添加了一個元素來達到效果,這就是和僞類不一樣之處。
僞類種類
僞元素種類
//點擊連接設置 #func 的樣式 <div id='test'></div> <a href='#test'></a> <div id='func'></div> #test:target~#func{ ... //樣式 }
perspective:3000px; //定義3D元素距視圖的距離 transform-style:preserve-3d; transform:rotateY(60deg),translateZ(500px);
若是css3 animation動畫出現卡頓怎麼辦?
1. 改用 transform 的css3屬性(translate scale),由於用css3屬性會自動開啓GPU加速,提升動畫的流暢度 2. 若是是在頁面剛開始加載的時候並無加載徹底就執行了動畫,那就可讓動畫延遲執行