前端日常实践:155#视频演示如何用纯CSS制作热气球
时间:2023-03-31 13:58:58
CSS
效果预览。按右边的“点击预览”按钮可以在当前页面进行预览,点击链接可以全屏预览。https://codepen.io/comehop??e/pen/KGveaN互动视频本视频为互动视频,您可以随时暂停视频,编辑视频中的代码。请使用chrome、safari、edge打开观看。https://scrimba.com/p/pEgDAM/cgda??Psr源码下载日常前端实战系列完整源码请到github下载:https://github.com/comehop??e/front-end-daily-挑战代码解释定义dom,容器中有2个子元素,.envelope代表伞套,.basket代表吊篮:
中心显示:body{margin:0;高度:100vh;显示:弹性;对齐项目:居中;证明内容:居中;background:linear-gradient(deepskyblue,skyblue,lightblue20%);}定义容器的大小,child元素.envelope和.basket垂直居中:.balloon{width:12em;高度:19em;字体大小:16px;显示:弹性;弹性方向:列;align-items:center;}先画伞盖。定义伞的大小:.envelope{position:relative;宽度:继承;height:16em;}伞的形状上端为球形,下端为圆锥形。在二维平面中,圆锥在平面上的投影是等腰三角形,所以我们先在上面画一个圆,然后在下面画一个三角形。先画上圈:.envelopespan{position:absolute;宽度:继承;高度:12em;边界半径:50%;颜色为橙色;background-color:currentColor;}然后使用伪元素绘制下等腰三角形:.envelopespan::before{content:'';位置:绝对;宽度:0;高度:0;边框宽度:10em5.5em05.5em;边框样式:实心;border-color:currentColor透明透明透明;左:计算(50%-5.5em);top:8.45em;}.envelope.envelope下有2个
元素,让第二个变形变色,使伞面形成竖条纹的图案:.envelopespan:nth-child(2){变换:scaleX(0.4);filter:brightness(0.85)contrast(1.4);}把.envelope容器外的部分隐藏起来,剪掉三角形的底角:.envelope{overflow:hidden;}至此,树冠完成,挂篮接下来绘制。定义篮子的尺寸:.basket{position:relative;宽度:2em;height:3em;}用::before伪元素绘制篮子:.basket::before{content:'';位置:绝对;宽度:继承;高度:1.6em;背景色:秘鲁;底部:0;border-radius:000.5em0.5em;}使用::after伪元素绘制篮子的顶部边缘:.basket::after{content:'';位置:绝对;宽度:105%;高度:0.3em;背景颜色:马鞍棕色;左:计算((100%-105%)/2);顶部:1.3em;.basket下有4个元素,分别代表4根电缆,并将它们的样式设置为垂直细线:.basketspan{position:absolute;宽度:0.1em;高度:1.5em;background-color:burlywood;}放置电缆,并以不同的角度倾斜它们:.basketspan{left:calc((var(--n)-1)*0.6em);变换原点:底部;变换:旋转(calc(var(--r)*7deg));}.basketspan:nth-??child(1){--n:1;--r:-2;}.basketspan:nth-child(2){--n:2;--r:-1;}.basketspan:nth-child(3){--n:3;--r:1;}.basketspan:nth-child(4){--n:4;--r:2;}最后加上热气球微微飘动的动画效果:.balloon{animation:drift2sinfinitealternate;}@keyframesdrift{to{transform:translateY(-5%);}}你完成了!