1. 程式人生 > >實現CSS3 3D圍繞旋轉

實現CSS3 3D圍繞旋轉

本案例主要使用了CSS3中的變換transform和動畫animation屬性,實現了跑馬燈效果,詳細的解釋在程式碼中的註釋中。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/jquery-1.11.0.js" ></script>
		<style>
        * {
            margin: 0;
            padding: 0;
        }
        .container {
            /*指定觀察者與平面的距離,使有透視效果*/
           /*若無法正常3d效果,將perspective屬性提到更上一個父容器即可(此處已上提,從items-->container)*/
            perspective: 1000px;
        }
        .items {
            width: 200px;
            height: 200px;
            border: 1px solid black;
            margin: 200px auto;
            /*指定子元素定位在三維空間內*/
            transform-style: preserve-3d;
            /*讓所有item的父級元素(即items)旋轉,item就是圍繞著旋轉了*/
            animation: doMove 5s infinite linear;
        }
        .item {
            width: 200px;
            height: 200px;
            background-color: skyblue;
            opacity: .6;
            font-size: 200px;
            line-height: 200px;
            text-align: center;
            position: absolute;
        }
        .item img{
        	width: 200px;
        	height: 200px;       	
        }
        /*定義自動旋轉的動畫*/
        @keyframes doMove {
            100%{
            	transform: rotateY(-360deg);  
            }                    
        }
        .items:hover {
        	  /*滑鼠移入 暫停動畫*/
            animation-play-state: paused;
        }
        
    </style>
	</head>
	<body>
		<div class="container">
        <div class="items">
            <!--簡便起見,可以用背景色和數字代替圖片 此處我用的是圖片-->
            <div class="item"><img src="img/1.jpg" /></div>
            <div class="item"><img src="img/2.jpg" /></div>
            <div class="item"><img src="img/3.jpg" /></div>
            <div class="item"><img src="img/4.jpg" /></div>
            <div class="item"><img src="img/5.jpg" /></div>
            <div class="item"><img src="img/1.jpg" /></div>
        </div>
    </div>
		<script>
        $(function () {
            var itemNum = $(".container .items .item").length;//要旋轉的div的數量
            var itemDeg = 360 / itemNum; ///計算平均偏移角度,後面的itemDeg*index是不同索引div的偏移角度
            $(".items>.item").each(function (index, element) {
                $(element).css({
                    //給每一個item設定好位置
                    //rotateY讓每一個item繞著Y軸偏移,itemDeg*index是不同索引div的偏移角度
                    //translateZ是控制item在角度偏移後,往他們的正上方移動的距離,數值越大旋轉的範圍越大
                    transform: "rotateY(" + itemDeg * index + "deg) translateZ(280px)"
                });
            });
        });
    </script>
	</body>
</html>