文本/链接

CSS3 伪元素制作字母卡片开关门3D效果

阿里云


本教程是一个有趣的开关门效果,每个字母就是一个门,我们将使它能够从四个方向打开关闭,这里采用的技术主要是在伪元素上使用 CSS transforms and transitions 属性。注意:不是每一个浏览器都支持伪元素,最好是使用 Chrome 或 Firefox 浏览器观看。

HTML 结构:

  1. <ul class="grid">
  2.     <li class="ot-letter-left"><span data-letter="C">C</span></li>
  3.     <li class="ot-letter-top"><span data-letter="J">J</span></li>
  4.     <li class="ot-letter-right"><span data-letter="8">8</span></li>
  5.     <li class="ot-letter-bottom"><span data-letter="A">A</span></li>
  6. </ul>
也想出现在这里?联系我们
创客主机

CSS 样式:

为每一个字母的 span 添加一些基本样式。我们将会为这些字母添加 3 种样式,字母添加较深的颜色,使字母看起来就像是被从背景中剪出来一样;当打开字母时,阴影将出现。为了达到这些目的,我们将添加 perspective 属性到 span 上。这样就能在伪元素上实现一个很好的 3d 效果。

  1. .grid li span {
  2.     display: inline-block;
  3.     font-weight: 900;
  4.     line-height: 1;
  5.     position: relative;
  6.     color: hsla(0, 0%, 0%, 0.6);
  7.     transform-style: preserve-3d;
  8.     perspective: 550px;
  9.     z-index: 1;
  10. }

注意:我们添加了 position:relative 到 span 上,这是为了使伪元素能够绝对定位。为了复制字母,我们使用 content 属性来接收自定义的 data-attribute,然后我们将在字母上定位:before 和:after 伪元素。

  1. .grid li span:before,
  2. .grid li span:after {
  3.     position: absolute;
  4.     content: attr(data-letter);
  5.     line-height: inherit;
  6.     top: 0;
  7.     left: 0;
  8.     right: 0;
  9.     bottom: 0;
  10.     z-index: 2;
  11.     transition: all 0.3s;
  12. }
  13.  
  14. .grid li span:before {
  15.     text-shadow: none;
  16.     color: hsla(0, 0%, 0%, 0.12);
  17. }

这样,现在我们有三个层:第一层是颜色较暗的字母,第二层是:before 伪元素,它是在字母之上的半透明的阴影,第三层是:after 伪元素,它是我们的“门”效果,我们暂时将之称为门。现在,我们就可以制作开门效果了。首先以从右边开门为例,我们将使用 transform-origin 属性,确保它以门的左侧为轴旋转。

  1. .ot-letter-left span:before,
  2. .ot-letter-left span:after {
  3.     transform-origin: 0 50%;
  4. }

为了使阴影层看起来逼真,我门要在 Y 轴的:after 伪元素上添加一个 3D rotation 和一些垂直倾斜效果,这样一个阴影效果就做好了,最好为门添加一些厚度。

  1. .ot-letter-left span:before {
  2.     transform: scale(1.08, 1) skew(0deg, 1deg);
  3. }
  4.  
  5. .ot-letter-left span:after {
  6.     text-shadow: 
  7.         -1px 0px 0px hsla(360, 100%, 100%, 0.1), 
  8.         3px 0px 1px hsla(0, 0%, 0%, 0.4);
  9.     transform: rotateY(-15deg);
  10. }

真正开门的效果出现在每个 li 元素被:hover 的时候,我们要为相应的伪元素添加更大数值得旋转和倾斜,这样,当鼠标 hover 的时候字母将打开,阴影也会相应的变化。

  1. .ot-letter-left:hover span:before {
  2.     transform: scale(0.85,1) skew(0deg,20deg);
  3. }
  4.  
  5. .ot-letter-left:hover span:after {
  6.     transform: rotateY(-40deg);
  7. }

最后添加一些颜色使它看起来更漂亮。

  1. .ot-letter-left { 
  2.     background: #e74d3c; 
  3. }
  4.  
  5. .ot-letter-left span { 
  6.     text-shadow: 
  7.         1px 4px 6px #e74d3c, 
  8.         0 0 0 hsla(0, 0%, 0%, 0.3), 
  9.         1px 4px 6px #e74d3c; 
  10. }
  11.  
  12. .ot-letter-left span:after { 
  13.     color: #e74d3c; 
  14. }
  15.  
  16. .ot-letter-left:hover span:after { 
  17.     color: #ea6253; 
  18. }

总之,我们可以通过 transform-origin 控制开门的方向,还可以控制门的旋转角度,倾斜角度等。以下是一个向下开门的例子:

  1. .ot-letter-bottom span:before,
  2. .ot-letter-bottom span:after {
  3.     transform-origin: 50% 0;
  4. }
  5.  
  6. .ot-letter-bottom span:before {
  7.     transform: scale(1,1.05) skew(4deg,0deg);
  8. }
  9.  
  10. .ot-letter-bottom span:after {
  11.     text-shadow: 
  12.         0px -1px 0px hsla(360, 100%, 100%, 0.1), 
  13.         0px 3px 1px hsla(0, 0%, 0%, 0.4);
  14.     transform: rotateX(15deg);
  15. }
  16.  
  17. .ot-letter-bottom:hover span:before {
  18.     transform: translateY(-0.035em) scale(1,1.2) skew(10deg,0deg);
  19. }
  20.  
  21. .ot-letter-bottom:hover span:after {
  22.     transform: translateY(0.045em) rotateX(40deg);
  23. }

CSS3 伪元素制作字母卡片开关门 3D 效果

已有 401 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!