CSS3寫一個立體小球


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3D球體</title>
    <style>
    html,body{
        height: 100%;    
        background-color: white;
    }
    .box{
        width: 100%;
        height: 100%;
        perspective: 800px;
        position: relative;
    }
    .unit{
        width: 100%;
        height: 100%;
        transform-style:preserve-3d;
        transition: all 1s ease 0s;
    }
    div.slice{
        position: absolute;
        top: 50%;
        left: 50%;
        width: 60px;
        height: 80px;
        opacity: 0.3;
        background-color: yellowgreen;
    }
    </style>
</head>
<body>
<div class="box">
    <div class="unit">
    </div></div>
<script type="text/javascript" src="js/jquery-1.12.3.min.js"></script> <script type="text/javascript" src="js/jquery-ui.min.js"></script> <script src="js/jquery.mousewheel.min.js"></script> <script type="text/javascript"> var $unit = $(".unit"); //調用函數 for(i=0;i<5;i++){ var arr=[18,15,12,9,6]; ball(i,arr[i]); //這里是continue,當i=0的時候,直接進入下一次循環。否則要執行ball(-i,arr【i】) if(i==0) continue; ball(-i,arr[i]); } //構造一個函數 有兩個參數 (層數,每層片數) function ball(floor,amount){ for(var i=0;i<amount;i++){ $("<div class='slice'></div>").css({ "transform": "rotateY("+ 360/amount*i + "deg) rotateX("+ floor*18 +"deg) translateZ(300px)" }).appendTo($(".unit")); }} //綁定拖拽的事件監聽 最好綁定在document上,綁定在unit上也行,就是鼠標必須在球上面移動,比較局限 $(document).mousedown(function(event){ var startX = event.clientX; var startY = event.clientY; $unit.css("transition","none"); $(document).mousemove(function(event){ event.preventDefault; var deltaX = event.clientX - startX; var deltaY = event.clientY - startY; $($unit).css({ "transform":"rotateX(" + deltaX/10 + "deg) rotateY(" + deltaY/10+"deg)", }) $(".slice").css({ "background" : "rgb(" + 111 + "," + 123+ "," + parseInt(Math.random() * 255) + ")" }) }) }) $(document).mouseup(function(){ $(document).off("mousemove"); }) //綁定滾輪的事件監聽 //初始景深 var per = 800; $(document).mousewheel(function(event,delta){ event.preventDefault(); //有了全局變量這里如果再定義per就會出錯 報的錯是語法錯誤“+=” 但其實是這個變量的問題 per += delta*40; if(per < 100) return; //景深限定在100 $(".box").css({ "perspective": per + "px" }) }) </script> </body> </html>

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM