純CSS實現3D圖像輪轉

来源:http://www.cnblogs.com/shouce/archive/2016/03/09/5256638.html
-Advertisement-
Play Games

CSS演武場今天繼續,今天看一個純css實現的3D圖像輪轉效果,請大家猛戳研究效果先,也可下載收藏先。 首先看html文件,div.billboard為效果的容器,利用10個div.poster分割圖像,每個poster中有三個face,分別用來承載三個圖像。 <div class="billboa


CSS演武場今天繼續,今天看一個純css實現的3D圖像輪轉效果,請大家猛戳研究效果先,也可下載收藏先。

首先看html文件,div.billboard為效果的容器,利用10個div.poster分割圖像,每個poster中有三個face,分別用來承載三個圖像。 

  1. <div class="billboard">  
  2.     <div class="poster">  
  3.         <div class="face panel1 p1"></div>  
  4.         <div class="face panel2 p1"></div>  
  5.         <div class="face panel3 p1"></div>  
  6.     </div>  
  7.     <div class="poster">  
  8.         <div class="face panel1 p2"></div>  
  9.         <div class="face panel2 p2"></div>  
  10.         <div class="face panel3 p2"></div>  
  11.     </div>  
  12.     <div class="poster">  
  13.         <div class="face panel1 p3"></div>  
  14.         <div class="face panel2 p3"></div>  
  15.         <div class="face panel3 p3"></div>  
  16.     </div>  
  17.     <div class="poster">  
  18.         <div class="face panel1 p4"></div>  
  19.         <div class="face panel2 p4"></div>  
  20.         <div class="face panel3 p4"></div>  
  21.     </div>  
  22.     <div class="poster">  
  23.         <div class="face panel1 p5"></div>  
  24.         <div class="face panel2 p5"></div>  
  25.         <div class="face panel3 p5"></div>  
  26.     </div>  
  27.     <div class="poster">  
  28.         <div class="face panel1 p6"></div>  
  29.         <div class="face panel2 p6"></div>  
  30.         <div class="face panel3 p6"></div>  
  31.     </div>  
  32.     <div class="poster">  
  33.         <div class="face panel1 p7"></div>  
  34.         <div class="face panel2 p7"></div>  
  35.         <div class="face panel3 p7"></div>  
  36.     </div>  
  37.     <div class="poster">  
  38.         <div class="face panel1 p8"></div>  
  39.         <div class="face panel2 p8"></div>  
  40.         <div class="face panel3 p8"></div>  
  41.     </div>  
  42.     <div class="poster">  
  43.         <div class="face panel1 p9"></div>  
  44.         <div class="face panel2 p9"></div>  
  45.         <div class="face panel3 p9"></div>  
  46.     </div>  
  47.     <div class="poster">  
  48.         <div class="face panel1 p10"></div>  
  49.         <div class="face panel2 p10"></div>  
  50.         <div class="face panel3 p10"></div>  
  51.     </div>  
  52. </div>  

CSS文件這裡我們用到了sass,用的是scss語法。 

  1. //變數初始化  
  2. //圖像分塊個數,如要更改,html需要進行相應的修改  
  3. $numPoster:10;   
  4.   
  5. //輪換圖像個數,如要更改,html需要進行相應的修改  
  6. $numFace:3;   
  7.   
  8. //圖像寬度   
  9. $width:600px;   
  10.   
  11. //圖像高度   
  12. $height:320px;   
  13.   
  14. //盒子的設置  
  15. .billboard {    
  16.     width:$width;    
  17.     margin:100px auto;    
  18. }   
  19.   
  20. //圖像條左浮動   
  21. .poster {    
  22.     float:left;    
  23.     width:$width/$numPoster;    
  24.     height:$height;    
  25. }  
  26.   
  27. //圖像條面的統一設置,絕對定位、3d動畫設置    
  28. .face {    
  29.     position:absolute;    
  30.     height:$height;    
  31.     width:$width/$numPoster;    
  32.     transform-origin:50% 50% -17px;    
  33.     backface-visibility: hidden;    
  34.     transform-style:preserve-3d;    
  35.     perspective:350px;    
  36. }    
  37.   
  38. //圖像條面分別設置背景圖像、動畫  
  39. @for $i from 1 through $numFace{    
  40.   .poster .panel#{$i} {    
  41.     background:url(http://gx.zptc.cn/whqet/img/#{$i}.jpg);    
  42.     transform:transformY(360deg/$numFace*($i - 1));    
  43.     animation: rotateMe#{$i} 10s infinite;    
  44.   }    
  45.   @keyframes rotateMe#{$i} {    
  46.     0% {    
  47.         transform:rotateY(360deg/$numFace*($i - 1));    
  48.     }    
  49.     9% {    
  50.         transform:rotateY(360deg/$numFace*($i - 1));    
  51.     }    
  52.     24% {    
  53.         transform:rotateY(360deg/$numFace*($i));    
  54.     }    
  55.     42% {    
  56.         transform:rotateY(360deg/$numFace*($i));    
  57.     }    
  58.     57% {    
  59.         transform:rotateY(360deg/$numFace*($i + 1));    
  60.     }    
  61.     75% {    
  62.         transform:rotateY(360deg/$numFace*($i + 1));    
  63.     }    
  64.     90% {    
  65.         transform:rotateY(360deg/$numFace*($i + 2));    
  66.     }    
  67.     100% {    
  68.         transform:rotateY(360deg/$numFace*($i + 2));    
  69.     }    
  70.   }    
  71. }   
  72.   
  73. //圖像條面的背景偏移  
  74. @for $i from 1 through $numPoster {    
  75.   .poster .p#{$i} {background-position:-($width/$numPoster*($i - 1)) top;}    
  76. }    

使用sass可以使得代碼結構清晰,邏輯性強,請大家研讀提升!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是 AJAX ? AJAX = 非同步 JavaScript 和 XML。 AJAX 不是新的編程語言,而是一種使用現有標準的新方法 AJAX 是一種用於創建快速動態網頁的技術。 通過在後臺與伺服器進行少量數據交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁
  • 一. gulp和grunt對比 grunt目前的工作流程:讀文件、修改文件、寫文件——讀文件、修改文件、寫文件——... gulp目前的工作流程:讀取文件——修改文件——修改文件...——寫文件 二. grunt存在問題 1、插件職能不夠單一 2、插件完成了本不該由插件完成的事情(這個我有點迷糊,為
  • My97DatePicker日期範圍限制 1.動態時間範圍限制: 1)只能選擇今天以前的日期(包含今天)。 <input type="text" class="Wdate" id="occurDate" onfocus="WdatePicker({skin:'whyGreen',dateFmt: '
  • / 代表當前文件所在的根目錄(指的是盤符根目錄,比如C盤、D盤); ./ 代表當前文件所在的根目錄,如果想讀取同一個文件夾下的文件時,也可以不寫; ../代表當前文件所在文件的父級文件夾 如下:我想在c文件夾的demo0中分別讀取到 jd1 jd2 jd3 jd4這四張圖片(根目錄:G盤;其中,de
  • void元素是指HTML頁面中開始標記和結束標記之間沒有任何內容的元素。 應當使用相對鏈接來鏈接同一網站中的頁面,而用URL來鏈接其他網站上的頁面。 瀏覽器讀取電腦本地文件時會使用file協議。文件URL後面有3個斜線。 通常預設傳輸的埠是80。 a元素有一個title屬性,用來提供鏈接的信息。
  • 學習HTML5是一個漫長的過程,當中會遇到很多技術與心態上的變化。剛開始學習,我們不能發力過猛,需要一個相對穩定的狀態去面對。多關註一些自己感興趣的網站和技術知識,建立自己的信心與好奇心,為以後的學習做一個厚實的鋪墊。
  • $(function(){ $("ul").click(function(event){ var tar = event.target; if(tar.tagName == "STRONG"){ alert(tar.tagName); } }); }) 上面是原生JS判斷; $(function()
  • 語法 元字元:(pattern) 作用:用於反覆匹配的分組 屬性$1~$9 如果它(們)存在,用於得到對應分組中匹配到的子串 \1或$1 用於匹配第一個分組中的內容 \2或$2 用於匹配第一個分組中的內容 ... \9或$9 用於匹配第一個分組中的內容 用法示例 var reg = /(A+)((B
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...