What
不多说,直接上效果图图 ~
访问地址:
- http://my-bucket-1252266428.cos-website.ap-guangzhou.myqcloud.com/
- https://codesandbox.io/s/busy-kirch-9dckh
地址一 为腾讯云 serverless 部署的静态网站,试了下还是很方便的啦~
地址二 为 CodeSandbox 示例
完全可以自由发挥,比如点击爱心进小游戏啦~ +动效啦,送女友+小秘密啦✨
没啥做不到,只有想不到 😊
How
看 CodeSandbox 其实完全能知道怎么实现了~ (笔者习惯 React 就直接拆分组件了,取 CSS 不妨碍)
简单拆解下:
背景飘雪
这个借用忘了哪看到的某位人士代码,原作者可以补下出处 Sorry~ (>人<)
html 为多个
<div>
,可用模板语法生成CSS 主要是使用了变量并赋予小雪花以动画效果:随机指定范围内大小,控制落下的角度和速度等
具体可参考 8 个CSS硬核技巧——完美极致的变量
@function random_range($min, $max) {
$rand: random();
$random_range: $min + floor($rand * (($max - $min) + 1));
@return $random_range;
}
.snow {
$total: 200;
position: absolute;
width: 10px;
height: 10px;
background: #f9f9c7;
border-radius: 50%;
@for $i from 1 through $total {
$random-x: random(1000000) * 0.0001vw;
$random-offset: random_range(-100000, 100000) * 0.0001vw;
$random-x-end: $random-x + $random-offset;
$random-x-end-yoyo: $random-x + ($random-offset / 2);
$random-yoyo-time: random_range(30000, 80000) / 100000;
$random-yoyo-y: $random-yoyo-time * 100vh;
$random-scale: random(10000) * 0.0001;
$fall-duration: random_range(10, 30) * 1s;
$fall-delay: random(30) * -1s;
&:nth-child(#{$i}) {
opacity: random(10000) * 0.0001;
transform: translate($random-x, -10px) scale($random-scale);
animation: fall-#{$i} $fall-duration $fall-delay linear infinite;
}
@keyframes fall-#{$i} {
#{percentage($random-yoyo-time)} {
transform: translate($random-x-end, $random-yoyo-y) scale($random-scale);
}
to {
transform: translate($random-x-end-yoyo, 100vh) scale($random-scale);
}
}
}
}
英文字体
引用 https://fonts.googleapis.com,随意选了个
<link
href="https://fonts.googleapis.com/css2?family=Kaushan+Script&display=swap"
rel="stylesheet"
/>
爱心图案
没想到吧?是 CSS 绘制的呢,不是图像,不是 Icon
同样参考 8 个CSS硬核技巧——灵活多变的障眼法 ,笔者只是改了下渐变颜色和加了透明度
.gradient-heart-shape {
position: relative;
width: 40px;
height: 40px;
background-image: linear-gradient(to bottom, #edcf6a, #fbe98d );
box-shadow: 0 0 20px rgba(#000, .8);
opacity: 0.7;
transform: rotate(45deg);
&::before,
&::after {
position: absolute;
left: 0;
top: 0;
border-radius: 100%;
width: 100%;
height: 100%;
content: "";
}
&::before {
background-image: linear-gradient(to bottom, #edcf6a, #fbe98d);
transform: translateX(-50%);
}
&::after {
background-image: linear-gradient(to bottom, #edcf6a 50%, transparent 50%, transparent);
transform: translateY(-50%);
}
}
Why
怎么想到要做这?因为最近好冷啊,而且,上海竟然也下雪❄️了,可惜不能 ☃️
如何具体完成呢?积累(最好有个人 CSS 作品集)+ 组装(可能需要些许灵感)
最后,2020 最后一天,Happy New Year~
感谢鼓励与支持,欢迎 评论 或 点赞