CSS3技巧:3D翻转数字效果实现详解
创作时间:
作者:
@小白创作中心
CSS3技巧:3D翻转数字效果实现详解
引用
CSDN
1.
https://blog.csdn.net/weixin_42703239/article/details/136759879
最近在工作中遇到了一些烦心的事情,只有在周末才能静下心来写点代码。今天要分享的是如何实现一个3D翻转数字效果。
一、结构分析
这个效果主要由两部分组成:
底层的半截数字
翻动的半截数字
每部分都是一个div。半截数字通过::before和::after伪元素来制作。数字通过伪元素的content属性来设置。
HTML结构如下:
<!-- 一个数字 -->
<section>
<div data-before="1" data-after="2"></div>
<div data-before="1" data-after="2"></div>
</section>
<!-- 一个数字 end -->
二、CSS制作半截数字
半截数字需要分为上半截和下半截:
- 上半截需要设置
line-height为整个section的高度。 - 下半截则需要设置
line-height为0。
&::before{
line-height: $height;
content: attr(data-before);
}
&::after{
line-height: 0;
content: attr(data-after);
}
三、翻转部分制作
翻转的部分,其实就是两个半截数字绝对定位,进行重叠。其中,数字2的上半截,还需要翻转180度,因为它要翻转下才会摆正。
&::after{
line-height: $height;
top:0;
transform-origin: bottom center;
transform: rotateX(-180deg);
}
为了保证效果,还需要设置翻转部分的3D效果。
section div:nth-child(2){
transform-style: preserve-3d;
transition: all 0.5s ease-in-out;
}
四、完成SCSS代码
这里使用SCSS来组织整个CSS代码。SCSS分为5个文件:
_public.scss:存放公用样式。_vars.scss:存放变量设置。
$page-width: 100vw;
$page-height: 100vh;
$width :200px;
$height: 400px;
_mixins.scss:存放SCSS函数。
@mixin setSize($w, $h) {
width: $w;
height: $h;
}
@mixin flex($justify:center, $align:center){
display: flex;
justify-content: $justify;
align-items: $align;
}
_pages.scss:存放页面样式。
@charset "UTF-8";
// 页面设置
body {
@include setSize($page-width, $page-height);
@include flex(); // 启用flex布局,让内容居中
background: #ddd;
}
// 每个数字
section {
@include setSize($width, $height);
margin-left: auto;
margin-right: auto;
position: relative;
perspective: 1000px;
div{
position: absolute;
font-family: Arial;
@include setSize($width, $height);
// 数字的样式
&::before,
&::after {
border-radius: 20px;
display: block;
width: $width;
height: $height/2;
color: #fff;
background: linear-gradient(to bottom, #4c4c4c 0%,#0f0f0f 100%);
font-size: $height*0.8;
font-weight: bold;
overflow: hidden;
line-height: $height;
text-align: center;
}
&::before{
line-height: $height;
content: attr(data-before);
}
&::after{
line-height: 0;
content: attr(data-after);
}
}
}
// 数字翻转
section div:nth-child(2){
transform-style: preserve-3d;
transition: all 0.5s ease-in-out;
&::before,
&::after{
position: absolute;
backface-visibility: hidden;
transition: all 0.5s ease-in-out;
}
&::before{
line-height: 0;
top:$height/2;
transform-origin: top center;
}
&::after{
line-height: $height;
top:0;
transform-origin: bottom center;
transform: rotateX(-180deg);
}
}
// 鼠标悬停
section:hover div:nth-child(2){
transform: rotateX(180deg);
}
app.scss:依次导入对应的SCSS文件。
@import "_vars.scss";
@import "_mixins.scss";
@import "_public.scss";
@import "_page.scss";
生成的CSS文件,引入HTML即可。
热门推荐
海康威视ehome协议怎么设置?海康摄像头和录像机接入ehome平台攻略
法官说法:员工购买虚假病历骗取病假,公司能否解除劳动合同?
世界十大名画及其背后的故事
传统川卤《整鸡卤制》完整卤制方法,包含配方、步骤与经验
利润很高的10大副业,不起眼却很赚钱,你都知道吗
错题本学习法:三个环节全面提升学习效果
学校适合种什么花?这份校园绿化指南请收好
中医防治肺癌,真的有效吗?
《降临》:探索语言、时间与人类情感的深刻科幻之旅
牛肉嫩滑秘诀:大厨教你专业腌制法,两道经典菜谱轻松掌握
如何正确观察汽车后视镜以确保行车安全?后视镜的使用技巧有哪些?
古埃及人去了哪里?埃及人现在是他们的后裔吗?
监护人资格:如何符合法律规定
日本第一代国产坦克:61式中型坦克
王允的悲剧:除掉董卓后的权力斗争与死亡
张德蕴主任应用加味茵陈蒿汤治疗肝胆疾病
哪些因素影响茶楼员工薪资体系表的制定?
走进画学:艺术治疗与情绪表达
经常在外就餐,如何最大程度减少危害
研究证实:晚上10~11点入睡,心血管疾病发病率最低
零点场:量子意识与生命的终极奥秘
使用PE启动盘和360系统急救箱进行病毒查杀的详细步骤
雷州古城古建筑、古庙探古
天狼星在哪个方向 天狼星怎么找
卫生间取暖设备选购指南:浴霸 vs 暖风机,哪个更适合你?
消费贷利率跌破3%!专家提醒:避免非理性过度负债,警惕贷款陷阱
炸过的剩油太多怎么办?倒掉嫌浪费,教你这一招,又能当新油用
Excel自动提取另一个表格数据的多种方法
农家肥发酵全攻略:五步搞定鸡粪、牛粪等有机肥料制作
【原】关东煮还是广东煮?为什么日本关西也叫“关东煮”?