1、transition和animation有什麼區別?
-
transition,CSS3 過渡是元素從一種樣式逐漸改變為另一種的效果。要實現這一點,必須規定兩項內容:指定要新增效果的CSS屬性指定效果的持續時間。需要一種條件來觸發這種轉變。
特點
- 需要事件觸發,所以沒法在網頁載入時自動發生
- 是一次性的,不能重複發生,除非一再觸發
- 只能定義開始狀態和結束狀態,不能定義中間狀態,也就是說只有兩個狀態
- 一條transition規則,只能定義一個屬性的變化,不能涉及多個屬性。
觸發方式
- :hover
- :focus
- :checked
- 媒體查詢觸發
- javascript觸發
示例
#box { margin: auto; height: 100px; width: 100px; background: green; transition: all 1s ease-in 0s; } #box:hover { transform: rotate(180deg) scale(.5, .5); background-color: red; } 複製程式碼
-
animation
組成:
- 通過類似Flash動畫中的幀來宣告一個動畫
- 在animation屬性中呼叫關鍵幀宣告的動畫。
示例
div{ animation:myfirst 4s infinite alternate; } @keyframes myfirst { 0% {background:red;} 50%{background:blue; transform: translate(20px,-20px)} 75%{background:green;transform: translate(40px,0px) scale(1.5)} 100% {background:yellow;transform: rotate(-45deg)} } 複製程式碼
特點
- animation在不需要觸發任何事件的情況下,也可以顯式的隨時間變化來改變元素CSS屬性,達到一種動畫的效果。
區別
- Animation也是通過指定某一個屬性(如width、left、transform等)在兩個值之間如何過渡來實現動畫的,與Transition不同的是,Animation可以通過keyframe顯式控制當前幀的屬性值,而Transition只能隱式來進行(不能指定每幀的屬性值),所以相對而言Animation的功能更加靈活。
- 另外一個區別是Animation通過模擬屬性值改變來實現動畫,動畫結束之後元素的屬性沒有變化;而Transition確實改變了元素的屬性值,動畫結束之後元素的屬性發生了變化
2、CSS3新特性有哪些?
- animation
- transition
- transform
- scale
- scale3d
- translate
- translate3d
- rotate
- rotate3d
- skew
- perspective
- transform本質上是一系列變形函式,分別是translate位移,scale縮放,rotate旋轉,skew扭曲,matrix矩陣。
- 偽元素
- 邊框
- border-radius
- box-shadow
- border-image
- 背景
- background-size
- background-origin
- background-clip
- background-image
- 文字
- text-shadow
- text-wrap
- @font-face
3、H5新特性
1.語意特性,新增 <nav>
導航、<audio>
音訊, <video>
視訊,<source>
原始檔,<header>
頁面頭部、<section>
章節、<aside>
邊欄、<article>
文件內容、<footer>
頁面底部、<section>
章節、<aside>
邊欄、<article>
文件內容、<footer>
頁面底部、 <embed>
, <track>
等標籤
2.多媒體, 用於媒介回放的 video 和 audio 元素
3.影象效果,用於繪畫的 canvas 元素,svg元素等
4.離線 & 儲存,對本地離線儲存的更好的支援,local Store,Cookies等
5.裝置相容特性 ,HTML5提供了前所未有的資料與應用接入開放介面。使外部應用可以直接與瀏覽器內部的資料直接相連,
6.連線特性,更有效的連線工作效率,使得基於頁面的實時聊天,更快速的網頁遊戲體驗,更優化的線上交流得到了實現。HTML5擁有更有效的伺服器推送技術,Server-Sent Event和WebSockets就是其中的兩個特性,這兩個特效能夠幫助我們實現伺服器將資料“推送”到客戶端的功能
7.效能與整合特性,HTML5會通過XMLHttpRequest2等技術,幫助您的Web應用和網站在多樣化的環境中更快速的工作
8.地理定位
h5提供了Geolocation API訪問地理位置,即通過window.navigator.geolocation來實現訪問。
4、Canvas和SVG
Canvas 和 SVG 都允許您在瀏覽器中建立圖形,但是它們在根本上是不同的。highchart是基於svg技術的,而echart是基於canvas技術的。
描述
Canvas
- 通過Javascript來繪製2D圖形。
- 是逐畫素進行渲染的。
- 其位置發生改變,會重新進行繪製。
SVG
- 一種使用XML描述的2D圖形的語言
- SVG基於XML意味著,SVG DOM中的每個元素都是可用的,可以為某個元素附加Javascript事件處理器。
- 在 SVG 中,每個被繪製的圖形均被視為物件。如果SVG物件的屬性發生變化,那麼瀏覽器能夠自動重現圖形。
比較
Canvas
- 依賴解析度
- 不支援事件處理器
- 弱的文字渲染能力
- 能夠以 .png 或 .jpg 格式儲存結果影象
- 最適合影象密集型的遊戲,其中的許多物件會被頻繁重繪
SVG
- 不依賴解析度
- 支援事件處理器
- 最適合帶有大型渲染區域的應用程式(比如谷歌地圖)
- 複雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)
- 不適合遊戲應用
示例
<svg style="background:pink;width:100%;height:200px">
<rect x="10" y="50" width="100" height="100" fill="blue" stroke="yellow" stroke-weight="30"/>
<circle cx="200" cy="100" r="50" fill="blue" />
<line x1="360" y1="10" x2="460" y2="220" fill="blue" stroke="yellow"/>
<ellipse cx="550" cy="100" rx="100" ry="80" fill="yellowgreen"/>
<polyline points="700,50 800,50 800,150 700,150 700,50" stroke-width="1" stroke="yellow" fill="white"/>
</svg>
複製程式碼
<canvas id="myCanvas" width="200px" height="100px" style="border:1px solid red">
</canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var ct=c.getContext("2d");
ct.fillStyle="yellowgreen";
ct.fillRect(5,10,150,60);
</script>
複製程式碼