찾다
웹 프론트엔드HTML 튜토리얼CSS3动画之3D旋转书本效果

有一些前沿的电商网站已经开始使用3D模型来展示商品并支持在线定制,而其中图书的展示是最为简单的一种,无需复杂的建模过程,使用图片和CSS3的一些变换即可实现更好的展示效果,简洁而实用。 
书本的3D模型是所有商品中最为简单的,因为其本质上就是一个立方体(cube),只是带有封面/封底和左侧封条。 所以要构造一个3D书本展示,问题就被分解为构造一个立方体+旋转+图片背景。 

1. 构造一个立方体 

要创建一个立方体,首先我们需要创建一个虚拟的三维视觉空间,这可以通过设置包容器元素的perspective属性获得。

CSS3动画之3D旋转书本效果

<code class="language-css">.stage {    
width: 200px;    
height: 260px;    
perspective: 1000px;    
perspective-origin: center center;// 缺省值,可忽略    
}  </code>

上述代码把元素放在距离观察点1000px的地方(Z轴向),并且在X/Y轴向上居中。 

<code class="language-html"><div class="stage">    
<div class="cube">    
<figure class="back"></figure>    
<figure class="top"></figure>    
<figure class="bottom"></figure>    
<figure class="left"></figure>    
<figure class="right"></figure>    
<figure class="front"></figure>    
</div>    
</div>   </code>

接着,我们在包容器元素里面添加一个立方体元素,6个边(上下左右和前后),之所以使用figure,是因为需要支持贴图。 
我们需要根据书本的厚度和长宽来确定立方体各个面的坐标位置,在本例中所用书本模型(一本MySQL书)的绝对厚度为18.2px,高度260px,宽度197.6px。 
那么根据简单的几何知识,前后面距离立方体中心的距离为18.2/2=9.1px,其中“后”元素需要再翻转一下(即“背”过去)。 

<code class="language-css">.front {    
transform: translateZ(9.1px);    
}    
.back {    
transform: rotateY(180deg) translateZ(9.1px);    
}   </code>

用类似的计算方法,我们可以把其他4条边放置(平移+旋转变换)到各自的位置,从而拼装成一个虚拟的立方体。 

<code class="language-css">.front {    
transform: translateZ(9.1px);    
}    
.back {    
transform: rotateY(180deg) translateZ(9.1px);    
}    
.top {    
transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);    
width: 18.2px;    
height: 197.6px;    
}    
.bottombottom {    
transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);    
}    
.left {    
transform: rotateY(-90deg) translateZ(9.1px);    
width: 18.2px;    
}    
.rightright {    
transform: rotateY(90deg) translateZ(188.5px);    
width: 18.2px;    
}  </code>

 

2. 添加封面 

接着我们给前后以及左侧面元素添加背景图(可以使用一张图,然后从不同的位置截取),给其他3个面添加背景颜色,并给“底”面添加阴影效果:

<code class="language-css">.front {    
transform: translateZ(9.1px);    
background: url("//wow.techbrood.com/uploads/160301/mysql.png") top rightright;    
background-size: auto 100%;    
}    
.back {    
transform: rotateY(180deg) translateZ(9.1px);    
background: url("//wow.techbrood.com/uploads/160301/mysql.png") top left;    
background-size: auto 100%;    
}    
.top {    
transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);    
background: #fafafa;    
width: 18.2px;    
height: 197.6px;    
}    
.bottombottom {    
transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);    
background: #ccc;    
width: 18.2px;    
height: 197.6px;    
-webkit-filter: drop-shadow(0 0 26px rgba(0, 0, 0, 0.75));    
}    
.left {    
transform: rotateY(-90deg) translateZ(9.1px);    
background: url("//wow.techbrood.com/uploads/160301/mysql.png") top center;    
background-size: auto 100%;    
width: 18.2px;    
}    
.rightright {    
transform: rotateY(90deg) translateZ(188.5px);    
background: #ddd;    
background-size: auto 100%;    
width: 18.2px;    
}  </code>

这样我们就实现了一个逼真的3D书本视觉模型。 

 

3. 添加旋转动画 

这个比较简单,使用rotateY方法就可以。 

<code class="language-css">@-webkit-keyframes rotate {    
0% {    
transform: rotateY(0) translateX(-18.2px);    
}    
100% {    
transform: rotateY(360deg) translateX(-18.2px);    
}    
} </code>

最终的效果图如下:

CSS3动画之3D旋转书本效果

以上是本文全部类容,如果需要了解更多CSS3动画请阅读css3 教程中的css3 动画章节

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
利用CSS怎么创建渐变色边框?5种方法分享利用CSS怎么创建渐变色边框?5种方法分享Oct 13, 2021 am 10:19 AM

利用CSS怎么创建渐变色边框?下面本篇文章给大家分享CSS实现渐变色边框的5种方法,希望对大家有所帮助!

css ul标签怎么去掉圆点css ul标签怎么去掉圆点Apr 25, 2022 pm 05:55 PM

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

css与xml的区别是什么css与xml的区别是什么Apr 24, 2022 am 11:21 AM

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

css3怎么实现鼠标隐藏效果css3怎么实现鼠标隐藏效果Apr 27, 2022 pm 05:20 PM

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

css怎么实现英文小写转为大写css怎么实现英文小写转为大写Apr 25, 2022 pm 06:35 PM

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

css怎么设置i不是斜体css怎么设置i不是斜体Apr 20, 2022 am 10:36 AM

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

rtl在css是什么意思rtl在css是什么意思Apr 24, 2022 am 11:07 AM

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

怎么设置rotate在css3的旋转中心点怎么设置rotate在css3的旋转中心点Apr 24, 2022 am 10:50 AM

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음