使用JS配合CSS實(shí)現(xiàn)Windows Phone中的磁貼效果

Windows Phone的tile設(shè)計(jì)的美麗對(duì)我來說有余音繞梁的效果。我從來不知道優(yōu)雅的方塊盒子布局能給我深刻的印象。因此我嘗試在web里用CSS和Jquery去實(shí)現(xiàn)這種tile設(shè)計(jì)。我已嘗試Tile Flip動(dòng)畫效果,它能展示兩種不同的信息一個(gè)在tile的前端而另外一個(gè)就在后端。
首先我們要為tile創(chuàng)建和下面圖片的效果一樣的HTML的內(nèi)容。每個(gè)tile包含了兩個(gè)分別在前后的div。他們都能包含要展示的信息。下面的html代碼生成所需的tile布局。
tile設(shè)計(jì)包含了CSS的類名
- <div class="container">
- <div class="tile tile-normal">
- <div class="front">
- <img class="icon" src="ie.PNG" />
- </div>
- <div class="back">
- Internet Explorer
- </div>
- </div>
- <div class="container-small">
- <div class="tile tile-small">
- <div class="front">1</div>
- <div class="back">Tile 1</div>
- </div>
- <div class="tile tile-small">
- <div class="front">2</div>
- <div class="back">Tile 2</div>
- </div>
- <div class="tile tile-small">
- <div class="front">3</div>
- <div class="back">Tile 3</div>
- </div>
- <div class="tile tile-small">
- <div class="front">4</div>
- <div class="back">Tile 4</div>
- </div>
- </div>
- <div class="tile tile-wide">
- <div class="front">
- Windows Phone Tiles using CSS and jQuery
- </div>
- <div class="back">
- This is a wide tile
- </div>
- </div>
- </div>
CSS關(guān)心的是tile的大小和對(duì)齊。(請(qǐng)下載源代碼來查看)。這里我要對(duì)CSS重要部分進(jìn)行高亮處理,這部分在tile旋轉(zhuǎn)的時(shí)候會(huì)創(chuàng)建透明師視圖。
- .tile {
- float:left;
- font-family: 'Roboto', sans-serif;
- font-size:20px;
- margin-left:2px;
- margin-top:2px;
- -moz-perspective:500px;
- -webkit-perspective:500px;
- -o-perspective:500px;
- -ms-perspective:500px;
- perspective:500px;
- }
下面的JQuery代碼關(guān)系Tile Flip。這里我為動(dòng)畫使用了 Transit,它是JQuery的一個(gè)擴(kuò)展。它確實(shí)是對(duì)平滑動(dòng)畫有好處,同時(shí)提供大量在我們這種情況下非常需要的易用的技術(shù),這普通易用的技術(shù)能讓Tile Flip看起來想兩塊動(dòng)畫。
- $(document).ready(function () {
- $(".back").hide();
- $(".tile").mouseenter(function () {
- $(this).children(".front").transit( {
- "rotateX":"90deg"
- },500,"easeInCirc",function () {
- var back;
- $(this).hide();
- back = $(this).siblings(".back");
- back.css({
- "rotateX" : "-90deg"
- });
- back.show();
- back.transit( {
- "rotateX":"0deg"
- },500,"easeOutCirc");
- });
- });
- $(".tile").mouseleave(function () {
- $(this).children(".back").transit( {
- "rotateX" : "90deg"
- },500,"easeInCirc",function () {
- var front;
- $(this).hide();
- front = $(this).siblings(".front");
- front.css({
- "rotateX" : "-90deg"
- });
- front.show();
- front.transit({
- "rotateX" : "0deg"
- },500,"easeOutCirc");
- });
- });
- });
一開始,所有的圖塊都是隱藏的,rotateX是90°,前面的部分是可以看到的,rotateX是0°。所有的圖塊在鼠標(biāo)指針進(jìn)入的時(shí)候翻過來,在鼠標(biāo)指針出來的時(shí)候又翻回來。
上面的圖解釋了在鼠標(biāo)指針進(jìn)入時(shí)調(diào)用的函數(shù)這個(gè)過程是怎么進(jìn)行的,鼠標(biāo)指針出來的時(shí)候的工作原理和這個(gè)差不多。
這個(gè)設(shè)計(jì)使用的是在最新版本的瀏覽器才有的CSS 遠(yuǎn)景屬性。我已經(jīng)測試過它了,發(fā)現(xiàn)在火狐20.0和chrome26.0上可以運(yùn)行。最好是你在chrome里有硬件圖像渲染。如果你的瀏覽器不支持遠(yuǎn)景屬性的話,它在正交直線視圖上看起來還是有效的。
相關(guān)文章
javascript+css實(shí)現(xiàn)的離開網(wǎng)站時(shí)顯示模態(tài)彈窗特效源碼
javascript+css實(shí)現(xiàn)的離開網(wǎng)站時(shí)顯示模態(tài)彈窗特效源碼是一段可以實(shí)現(xiàn)當(dāng)鼠標(biāo)光標(biāo)移動(dòng)到接近(或通過)視口(viewport)的頂部的時(shí),頁面中會(huì)出現(xiàn)一個(gè)彈窗的效果,運(yùn)行流暢,2014-10-17javascript+css3實(shí)現(xiàn)的多種文本動(dòng)畫效果源碼
javascript+css3實(shí)現(xiàn)的多種文本動(dòng)畫效果源碼是一款可以讓你為網(wǎng)頁中的文字運(yùn)用各種動(dòng)畫的插件,在這里我們可以選擇自己喜歡的文字進(jìn)入及退出效果,運(yùn)行流暢,是一款非常優(yōu)2014-10-15清除css、javascript及背景圖在瀏覽器中緩存的簡單方法
為了減少服務(wù)器的壓力,讓用戶少加載,瀏覽器會(huì)將圖片、css、js緩存到本地中,以便下次訪問網(wǎng)站時(shí)使用,為了可以正常使用緩存,又避免這樣那樣的問題,我們可以動(dòng)腦筋想想2014-09-01