CSS3 transforms 3D翻开
- R
- T
- L
- B
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>css3 transforms 3D文字翻开</title> </head> <body> <div class="component"> <ul class="grid"> <li class="ot-letter-left"><span data-letter="R">R</span></li> <li class="ot-letter-top"><span data-letter="T">T</span></li> <li class="ot-letter-right"><span data-letter="L">L</span></li> <li class="ot-letter-bottom"><span data-letter="B">B</span></li> </ul> </div> <style> ul,li{ list-style:none;}.grid { list-style: outside none none; margin: 0; padding: 0; position: relative; width: 100%; } .grid li { float: left; font-size: 12em; line-height: 1.5; max-height: 290px; position: relative; text-align: center; width: calc(100% / 6); } .grid li span { color: hsla(0, 0%, 0%, 0.6); display: inline-block; font-weight: 900; line-height: 1; perspective: 550px; position: relative; transform-style: preserve-3d; z-index: 1; } .grid li span::before, .grid li span::after { bottom: 0; content: attr(data-letter); left: 0; line-height: inherit; position: absolute; right: 0; top: 0; transition: all 0.3s ease 0s; z-index: 2; } .grid li span::before { color: hsla(0, 0%, 0%, 0.12); text-shadow: none; } .ot-letter-left { background: none repeat scroll 0 0 #e74d3c; } .ot-letter-left span { text-shadow: 1px 4px 6px #e74d3c, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #e74d3c; } .ot-letter-left span::after { color: #e74d3c; } .ot-letter-left:hover span::after { color: #ea6253; } .ot-letter-right { background: none repeat scroll 0 0 #ea6657; } .ot-letter-right span { text-shadow: 1px 4px 6px #ea6657, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #ea6657; } .ot-letter-right span::after { color: #ea6657; } .ot-letter-right:hover span::after { color: #ed7a6e; } .ot-letter-top { background: none repeat scroll 0 0 #ee7f72; } .ot-letter-top span { text-shadow: 1px 4px 6px #ee7f72, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #ee7f72; } .ot-letter-top span::after { color: #ee7f72; } .ot-letter-top:hover span::after { color: #f09389; } .ot-letter-bottom { background: none repeat scroll 0 0 #e95949; } .ot-letter-bottom span { text-shadow: 1px 4px 6px #e95949, 0 0 0 hsla(0, 0%, 0%, 0.3), 1px 4px 6px #e95949; } .ot-letter-bottom span::after { color: #e95949; } .ot-letter-bottom:hover span::after { color: #eb6e60; } .ot-letter-left span::before, .ot-letter-left span::after { transform-origin: 0 50% 0; } .ot-letter-left span::before { transform: scale(1.08, 1) skew(0deg, 1deg); } .ot-letter-left span::after { text-shadow: -1px 0 0 hsla(0, 100%, 100%, 0.1), 3px 0 1px hsla(0, 0%, 0%, 0.4); transform: rotateY(-15deg); } .ot-letter-left:hover span::before { transform: scale(0.85, 1) skew(0deg, 20deg); } .ot-letter-left:hover span::after { transform: rotateY(-40deg); } .ot-letter-right span::before, .ot-letter-right span::after { transform-origin: 100% 50% 0; } .ot-letter-right span::before { transform: scale(0.85, 1) skew(0deg, 1deg); } .ot-letter-right span::after { text-shadow: 1px 0 0 hsla(0, 100%, 100%, 0.1), -3px 0 1px hsla(0, 0%, 0%, 0.4); transform: rotateY(15deg); } .ot-letter-right:hover span::before { transform: scale(0.85, 1) skew(0deg, -20deg); } .ot-letter-right:hover span::after { transform: rotateY(40deg); } .ot-letter-top span::before, .ot-letter-top span::after { transform-origin: 50% 100% 0; } .ot-letter-top span::before { transform: scale(1, 0.95) skew(-4deg, 0deg); } .ot-letter-top span::after { text-shadow: 0 1px 0 hsla(0, 100%, 100%, 0.1), 0 -3px 1px hsla(0, 0%, 0%, 0.4); transform: rotateX(-15deg); } .ot-letter-top:hover span::before { transform: translateY(-0.05em) scale(1, 0.55) skew(-10deg, 0deg); } .ot-letter-top:hover span::after { transform: translateY(-0.035em) rotateX(-40deg); } .ot-letter-bottom span::before, .ot-letter-bottom span::after { transform-origin: 50% 0 0; } .ot-letter-bottom span::before { transform: scale(1, 1.05) skew(4deg, 0deg); } .ot-letter-bottom span::after { text-shadow: 0 -1px 0 hsla(0, 100%, 100%, 0.1), 0 3px 1px hsla(0, 0%, 0%, 0.4); transform: rotateX(15deg); } .ot-letter-bottom:hover span::before { transform: translateY(-0.035em) scale(1, 1.2) skew(10deg, 0deg); } .ot-letter-bottom:hover span::after { transform: translateY(0.045em) rotateX(40deg); } </style> </body> </html>
额,写上这一段的时候主要还是不明白,好多点反对是对我的随笔不满还是对我随笔质量的不满。。实际上我更多的把这个博客当成个人动态玩的。。。所以还是比较随意的。。。当然如果觉得写得有问题可以在下方评论写出改进建议。。。我会虚心接受,顺便可以知道自己的不足点。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库