视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML5和CSS3实现3D展示商品信息的代码
2020-11-27 15:05:00 责编:小采
文档
 这篇文章介绍的是关于html5商品展示导购特效是一款3D立体样式的商品信息,非常具有实用价值,需要的朋友可以参考下。

强化下perspective和transform:translateZ的用法。传统的商品展示或许并不能很好的吸引用户的注意力,但是如果在展示中添加适当的3D元素,~说不定效果不错哈~

效果图:

说明一下:这个创意不是我想的,哈~模仿别人的,创意应该是w3cplus上的。当然了,重点是教大家如何做,就当高仿了~

首先,先教大家利用CSS3制作一个正方体:

在木有CSS前,这样的立方体,应该很难制作吧~嗯,我觉得很难~

html:

<body> 
 
 
<p class="wapper"> 
 <p class="cube"> 
 <p class="side front">1</p> 
 <p class="side back">6</p> 
 <p class="side right">4</p> 
 <p class="side left">3</p> 
 <p class="side top">5</p> 
 <p class="side bottom">2</p> 
 </p> 
</p> 
 
</body>

wapper为此效果的舞台,即设置perspective的元素,如果多个元素共享一个舞台,那么从一个视线观察所以的元素的效果是不一样的,就相当我们正常情况下,站在一排倾斜成45度的门前面,每个门对于我们视线来说,角度是不同的;p#cube代表一个立方体,然后6个p分别代表每个面。

p#cube设置transform-style:preserve-3d,然后每个元素设置rotate和translateZ

现在所有的面重叠在同一个平面上,我们分别让:

font往前即Z轴方向移动半个边长(translateZ(50px))的距离即50px;

back先绕Y轴旋转180度,这样让字体是对外的,然后translateZ(50px),因为此时已经旋转了180度,所以tanslateZ是向下的,

同理,其他面分别绕X轴或者Y轴旋转90度,然后translateZ(50px)

CSS:

.wapper 
 { 
 margin: 100px auto 0; 
 width: 100px; 
 height: 100px; 
 -webkit-perspective: 1200px; 
 font-size: 50px; 
 font-weight: bold; 
 color: #fff; 
 } 
 
 .cube 
 { 
 
 position: relative; 
 width: 100px; 
 -webkit-transform: rotateX(-40deg) rotateY(32deg); 
 -webkit-transform-style: preserve-3d; 
 } 
 
 .side 
 { 
 text-align: center; 
 line-height: 100px; 
 width: 100px; 
 height: 100px; 
 background: rgba(255, 99, 71, 0.6); 
 border: 1px solid rgba(0, 0, 0, 0.5); 
 position: absolute; 
 } 
 
 .front 
 { 
 -webkit-transform: translateZ(50px); 
 } 
 
 .top 
 { 
 -webkit-transform: rotateX(90deg) translateZ(50px); 
 } 
 
 .right 
 { 
 -webkit-transform: rotateY(90deg) translateZ(50px); 
 } 
 
 .left 
 { 
 -webkit-transform: rotateY(-90deg) translateZ(50px); 
 } 
 
 .bottom 
 { 
 -webkit-transform: rotateX(-90deg) translateZ(50px); 
 } 
 
 .back 
 { 
 -webkit-transform: rotateY(-180deg) translateZ(50px); 
 }

对于显示效果,可以调节perspective的距离~

好了,立方体理解了,那么这个商品展示就没什么难度了;两个p分别代表两个面,一个是图片,一个是介绍,初始时,介绍绕X轴先旋转90deg,然后当鼠标移动时,将整个盒子绕x轴旋转90deg即可。

HTML:

<!DOCTYPE html> 
<html> 
<head> 
 <title></title> 
 <meta charset="utf-8"> 
 <link href="css/reset.css" rel="stylesheet" type="text/css"> 
 
 
</head> 
<body> 
 
 
<ul id="content"> 
 
 <li> 
 <p class="wrapper"> 
 <img src="images/a.png"> 
 <span class="information"> 
 <strong>Contact Form</strong> The easiest way to add a contact form to your shop. 
 </span> 
 </p> 
 </li> 
 
 <li> 
 <p class="wrapper"> 
 <img src="images/b.jpeg"> 
 <span class="information"> 
 <strong>Contact Form</strong> The easiest way to add a contact form to your shop. 
 </span> 
 </p> 
 
 </li> 
 
 <li> 
 <p class="wrapper"> 
 <img src="images/c.png"> 
 <span class="information"> 
 <strong>Contact Form</strong> The easiest way to add a contact form to your shop. 
 </span> 
 </p> 
 
 </li> 
 
</ul> 
 
 
</body> 
</html>

CSS:

<style type="text/css"> 
 body 
 { 
 font-family: Tahoma, Arial; 
 } 
 
 #content 
 { 
 margin: 100px auto 0; 
 } 
 
 #content li, #content .wrapper, #content li img, #content li span 
 { 
 width: 310px; 
 height: 100px; 
 } 
 
 #content li 
 { 
 cursor: pointer; 
 -webkit-perspective: 4000px; 
 width: 310px; 
 height: 100px; 
 float: left; 
 margin-left: 60px; 
 /*box-shadow: 2px 2px 5px #888888;*/ 
 
 } 
 
 #content .wrapper 
 { 
 position: relative; 
 -webkit-transform-style: preserve-3d; 
 -webkit-transition: -webkit-transform .6s; 
 } 
 
 #content li img 
 { 
 top: 0; 
 border-radius: 3px; 
 box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.3); 
 position: absolute; 
 -webkit-transform: translateZ(50px); 
 -webkit-transition: all .6s; 
 } 
 
 #content li span 
 { 
 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(236, 241, 244, 1)), color-stop(100%, rgba(190, 202, 217, 1))); 
 text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5); 
 position: absolute; 
 -webkit-transform: rotateX(-90deg) translateZ(50px); 
 -webkit-transition: all .6s; 
 display: block; 
 top: 0; 
 text-align: left; 
 border-radius: 15px; 
 font-size: 12px; 
 padding: 10px; 
 width: 290px; 
 height: 80px; 
 text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5); 
 box-shadow: none; 
 } 
 
 #content li span strong 
 { 
 display: block; 
 margin: .2em 0 .5em 0; 
 font-size: 20px; 
 font-family: "Oleo Script"; 
 } 
 
 #content li:hover .wrapper 
 { 
 -webkit-transform: rotateX(95deg); 
 } 
 
 #content li:hover img 
 { 
 box-shadow: none; 
 border-radius: 15px; 
 } 
 
 #content li:hover span 
 { 
 box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.3); 
 border-radius: 3px; 
 } 
 
 
 </style>

CSS基本在上面已经分析过了,这里说明一点,我们给没件商品弄了一个p.wapper看似是多余,其实不是,因为我们希望每个商品都是正常的90deg翻转,所以我们不能让所有的商品共享一个舞台,于是我们添加了一个p.wapper让他设置transform-style:preverse-3d,然后每个li分别设置舞台效果perspective。最终翻转效果实在p.wapper上。

下载本文
显示全文
专题