時間:2023-07-26 12:21:01 | 來源:網(wǎng)站運營
時間:2023-07-26 12:21:01 來源:網(wǎng)站運營
三分鐘學(xué)會用 js + css3 打造酷炫3D相冊:中秋主題的3D旋轉(zhuǎn)相冊<!doctype html><html lang="en"> <head> <meta charset="UTF-8" /> <title>中秋節(jié)快樂</title> <style> </style> </head> <body> </body> <script> </script></html>
1.1 <meta charset="UTF-8" /> :這句話的含義是,設(shè)置網(wǎng)頁編碼為utf-8,確保中文可以正常顯示。*{padding:0px;margin:0px;} /*這是為了消除默認(rèn)dom元素的內(nèi)外邊距,使得我們寫css的時候更精確*/body{background:#000;}
#######000是純黑色<div id="photos"></div>
這句話一寫,頁面上啥也沒有,div連寬度和高度都沒有,這個時候,我們就要用css來給div添加一件美麗的外衣了。#photos{ width:110px; /*寬度*/ height:180px; /*高度*/ border:1px solid #ccc; /*加一個灰色邊框*/ margin:160px auto; /*水平居中,高度距離頂部100px*/}
transform:rotateY(0deg);
這句話表示將div盒子沿著Y軸旋轉(zhuǎn)0度。transform-style:preserve-3d;/*設(shè)置3d環(huán)境*/perspective:800px; /*設(shè)置景深為800px*/
所謂的景深, 簡單說來,就是對好焦的范圍。它能決定是把背景模糊化來突出拍攝對象,還是拍出清晰的背景。我看到網(wǎng)上是這么說的,喜歡攝影的朋友應(yīng)該很了解。<div id="photos"> <img src="1.jpg"></img></div>#photos img{ width:100%; height:100%; position:absolute; box-shadow:0 0 8px #eaeaea; box-shadow: 1px -1px 6px #666; border-radius:4px; -webkit-box-reflect:below 3px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5)); cursor:pointer;}
效果:<div id="photos"> <img src="1.jpg"></img> <img src="2.jpg"></img> <img src="3.jpg"></img> <img src="4.jpg"></img> <img src="5.jpg"></img> <img src="6.jpg"></img> <img src="7.jpg"></img> <img src="8.jpg"></img></div>
到目前為止,所有的圖片都是疊在一起的,我們思考如何將他們分散開來,圍城一圈呢?/*-webkit-box-reflect:below 3px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5));*/
好,讓我們來一探究竟:var photosDom = document.getElementById('photos');//獲取圖片數(shù)組var images = photosDom.getElementsByTagName('img'); //獲取圖片數(shù)量var len = images.length; //計算每張圖片按Y軸旋轉(zhuǎn)的角度 var deg = Math.floor(360 / len); for(var i = 0; i < len;i++){ images[i].style = 'transform : rotateY(' + deg * i + 'deg)'; //deg前面不要加空格}
代碼是比較明了的,就是一個除法運算,然后給每一張圖片增加一個旋轉(zhuǎn)樣式即可。for(var i = 0; i < len;i++){ images[i].style = 'transform : rotateY(' + deg * i + 'deg)'; //deg前面不要加空格 if(i == 1){ images[i].style = 'transform : rotateY(' + deg * i + 'deg) translateZ(300px)'; }}
for(var i = 0; i < len;i++){ images[i].style = 'transform : rotateY(' + deg * i + 'deg) translateZ(380px)'; //deg前面不要加空格}
transform:rotateX(-10deg);
<div id="photos"> <img src="1.jpg"></img> <img src="2.jpg"></img> <img src="3.jpg"></img> <img src="4.jpg"></img> <img src="5.jpg"></img> <img src="6.jpg"></img> <img src="7.jpg"></img> <img src="8.jpg"></img> <div></div></div>
其實,它就是一個放在photos里面的div。我們通過定位布局和css3特性就可以實現(xiàn)了。#photos div{ width:1200px; height:1200px; border-radius:50%; position:absolute; top:102%; left:50%; margin-left:-600px; margin-top:-600px; transform:rotateX(90deg); background:-webkit-radial-gradient(center center,600px 600px,rgba(158,158,222,0.5),rgba(0,0,0,0));}
top屬性是一點點調(diào)出來的,你也可以用瀏覽器的調(diào)試模式一點點來調(diào)整高度。var x = 0;setInterval(function(){ photosDom.style.transform = "rotateX(-10deg) rotateY("+ (x++) * 0.2 +"deg)";},30);
代碼應(yīng)該還是比較明了的。作者: 剽悍一小兔
鏈接:http://www.imooc.com/article/22632
來源:慕課網(wǎng)
關(guān)鍵詞:打造,相冊,學(xué)會
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。