jQuery可拖拽3D萬花筒旋轉特效

来源:http://www.cnblogs.com/roucheng/archive/2017/01/02/wanhuatong.html
-Advertisement-
Play Games

這是一個使用了CSS3立體效果的強大特效,本特效使用jQuery跟CSS3 transform來實現在用戶滑鼠按下拖動時,環形圖片牆可以跟隨滑鼠進行3D旋轉動畫。效果體驗:http://hovertree.com/texiao/jquery/92/進去後可以上下左右的拖動圖片。本示例中使用到了CSS ...


這是一個使用了CSS3立體效果的強大特效,本特效使用jQuery跟CSS3 transform來實現在用戶滑鼠按下拖動時,環形圖片牆可以跟隨滑鼠進行3D旋轉動畫。

效果體驗:
http://hovertree.com/texiao/jquery/92/

進去後可以上下左右的拖動圖片。

本示例中使用到了CSS3的transform-style 屬性,該規定如何在 3D 空間中呈現被嵌套的元素。

預設值: flat
繼承性: no
版本: CSS3
JavaScript 語法: object.style.transformStyle="preserve-3d"

有2個屬性值可選擇:
flat 子元素將不保留其 3D 位置。
preserve-3d 子元素將保留其 3D 位置。

示例代碼如下:

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery可拖拽3D萬花筒旋轉特效 - 何問起</title><base target="_blank" />
<style type="text/css">
    *{margin:0;padding: 0;}
    .hovertree{
        width: 120px;
        height: 180px;
        margin: 150px auto 0;
        position: relative;
        /*transform 旋轉元素*/
        transform-style:preserve-3d;
        transform:perspective(800px) rotateX(-10deg) rotateY(0deg);
    }
    body{background-color: #66677c;}

    .hovertree img{
        position: absolute;
        width: 100%;
        height: 100%;
        border-radius: 5px;
        box-shadow: 0px 0px 10px #fff;
        /*倒影的設置*/
        -webkit-box-reflect:below 10px -webkit-linear-gradient(top,rgba(0,0,0,0) 50%,rgba(0,0,0,.5) 100%);
    }
    .hovertree p{
        width: 1200px;
        height: 1200px;
        background: -webkit-radial-gradient(center center,600px 600px,rgba(255,255,255,.5),rgba(0,0,0,0));
        position: absolute;
        top:100%;left:50%;
        margin-top: -600px;
        margin-left: -600px;
        border-radius:600px;
        transform:rotateX(90deg);
    }
    .hewenqi{position:absolute;z-index:99;}
    a{color:blue;}
</style>

</head>
<body>

<div class="hovertree">
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/01.jpg"/>
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/02.jpg" />
    <img src="http://cms.hovertree.com/hvtimg/201511/9rour12a.jpg"/>
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/04.jpg"/>
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/05.jpg"/>
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/06.jpg"/>
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/07.jpg"/>
    <img src="http://hovertree.com/texiao/css/14/hovertreepic/08.jpg"/>
    <img src="http://hovertree.com/hvtimg/201511/6j9j6tk5.png"/>
    <img src="http://cms.hovertree.com/hvtimg/201512/wfevf6yh.jpg"/>
    <p></p>
</div>

<script src="http://down.hovertree.com/jquery/jquery-1.11.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(function(){

var imgL=$(".hovertree img").size();
var deg=360/imgL;
var roY=0,roX=-10;
 var xN=0,yN=0;
 var play=null;

 $(".hovertree img").each(function (i) {
    $(this).css({
        //<!--translateZ 定義2d旋轉沿著z軸-->
        "transform":"rotateY("+i*deg+"deg) translateZ(300px)"    });
        //<!--防止圖片被拖拽-->
        $(this).attr('ondragstart','return false');
    });

    $(document).mousedown(function(ev){
    var x_=ev.clientX;
    var y_=ev.clientY;
    clearInterval(play);
        console.log('我按下了');
        $(this).bind('mousemove',function(ev){
            /*獲取當前滑鼠的坐標*/
            var x=ev.clientX;
            var y=ev.clientY;
            /*兩次坐標之間的距離*/
              xN=x-x_;
              yN=y-y_;

             roY+=xN*0.2;
            roX-=yN*0.1;
            console.log('移動');
            //$('body').append('<div style="width:5px;height:5px;position:absolute;top:'+y+'px;left:'+x+'px;background-color:red"></div>');

            $('.hovertree').css({
                 transform:'perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'
            });
            /*之前的滑鼠坐標*/
         x_=ev.clientX;
         y_=ev.clientY;

        });
    }).mouseup(function(){
          $(this).unbind('mousemove');
          var play=setInterval(function(){
           
           xN*=0.95;
           yN*=0.95
           if(Math.abs(xN)<1 && Math.abs(yN)<1){
              clearInterval(play);
           }
            roY+=xN*0.2;
            roX-=yN*0.1;
            $('.hovertree').css({
                 transform:'perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'
            });
          },30);
    });
});
</script>
<div style="text-align:center;margin:250px 0; font:normal 14px/24px 'MicroSoft YaHei';">
    <p class="hewenqi">來源:<a href="http://hovertree.com/">何問起</a> <a href="http://hovertree.com/h/bjag/5x3kdw0k.htm">說明</a></p>
</div>
</body>
</html>

轉自:http://hovertree.com/h/bjag/5x3kdw0k.htm

相似:http://hovertree.com/h/bjaf/a6598spx.htm

更多特效:http://www.cnblogs.com/roucheng/p/texiao.html


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

-Advertisement-
Play Games
更多相關文章
  • 在項目開發中我們經常會遇到需要更改input單選和多選樣式的情況,今天就給大家介紹一種簡單改變input單選和多選樣式的辦法。 在這之前先簡單介紹一下:before偽類 :before 選擇器向選定的元素前插入內容。使用content 屬性來指定要插入的內容(content是必須的哦)。 相信這並不 ...
  • 眾所周知,微信小程式在發佈的時候,對提交的代碼有1M大小的限制!所以,如果你正在寫一個功能稍微複雜一點的小程式,就必須得時刻小心註意你的代碼是不是快觸及這個底線了。 在設計一個小程式之初,我們就需要重點考慮這一點,採取一些方法,來避免太早的遭遇這個問題。 請避免在小程式的UI上使用大圖片,應該儘可能 ...
  • angular做單頁面應用是一個比較好的框架,但是它有一定的入門難度,對於新手來說可能會碰到很多坑,也有許多難題,大部分仔細看文檔,找社區是能解決的。 但有些問題也許資料比較少,最近遇到過一個要緩存父頁面的問題,就是點擊進入子頁後,再返回時父頁面的數據要緩存下來,包括滾動條的位置。再做的過程當中查過 ...
  • 一、閉包(Closure)1.1、閉包相關的問題1.2、理解閉包二、對象2.1、對象常量(字面量)2.2、取值2.3、枚舉(遍歷)2.4、更新與添加2.5、對象的原型2.6、刪除2.7、封裝三、函數3.1、參數對象 (arguments)3.2、構造函數 3.3、函數調用3.3.1、call3.3.... ...
  • 使用<audio>和<video>元素的play()和pause()方法,可以手工控制媒體文件的播放。組合使用屬性、事件和這兩個方法,很容易創建一個自定義的媒體播放器,如下麵的例子所示。 以上基本的HTML 再加上一些JavaScript 就可以變成一個簡單的視頻播放器。以下就是JavaScript ...
  • 作者: 阮一峰 網頁佈局(layout)是CSS的一個重點應用。 佈局的傳統解決方案,基於盒狀模型,依賴 display屬性 + position屬性 + float屬性。它對於那些特殊佈局非常不方便,比如,垂直居中就不容易實現。 2009年,W3C提出了一種新的方案 Flex佈局,可以簡便、完整、 ...
  • 一、自適應內部元素 利用width的新特性min-content實現 width新特性值介紹: fill-available,自動填充盒子模型中剩餘的寬度,包含margin、padding、border尺寸,他讓非block元素也可實現寬度100%; max-content:假設容器有足夠的寬度,足 ...
  • [1]定義 [2]安裝 [3]編譯 [4]數據類型 [5]註釋 [6]變數 [7]嵌套 [8]混合巨集 [9]繼承 [10]運算 [11]語句 [12]函數 [13]數組 [14]指令 [15]實例 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...