博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何利用 CSS 动画原理,在页面上表现日蚀现象
阅读量:5897 次
发布时间:2019-06-19

本文共 1460 字,大约阅读时间需要 4 分钟。

效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

可交互视频教程

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

代码解读

定义 dom,一个名为 sky 的容器,其中包含一个 sun 元素和一个 moon 元素:

<div class="sky">    <div class="sun"></div>    <div class="moon"></div></div>

画出天空:

body {    margin: 0;}.sky {    width: 100vw;    height: 100vh;    background-color: skyblue;}

画出太阳:

.sky {    display: flex;    align-items: center;    justify-content: center;    position: relative;}.sun {    position: absolute;    width: 50vmin;    height: 50vmin;    border-radius: 50%;    background-color: gold;}

画出月亮:

.moon {    position: absolute;    width: 50vmin;    height: 50vmin;    border-radius: 50%;    background-color: slategray;    transform: translateX(-55vmin);}

定义天空的变化,当日蚀来临时天空会变黑:

@keyframes animate-sky {    50% {        background-color: black;    }}

定义太阳的变化,当日蚀来临时太阳虽会被遮挡,但光晕仍会透出:

@keyframes animate-sun {    50% {        box-shadow: 0 0 5em 1em white;    }}

定义月亮的动画,当它运动到和太阳重叠的位置时,因为没有光,就看不到它的颜色了:

@keyframes animate-moon {    from {        transform: translateX(-100vmin);    }    50% {        background-color: black;    }    to {        transform: translateX(100vmin);    }}

把动画应用到元素上:

.sky,.sun,.moon {    animation: 10s linear infinite;}.sky {    animation-name: animate-sky;}.sun {    animation-name: animate-sun;}.moon {    animation-name: animate-moon;}

最后,隐藏滚动条:

.sky {    overflow: hidden;}

大功告成!

原文地址:https://segmentfault.com/a/1190000015070543

转载地址:http://ptasx.baihongyu.com/

你可能感兴趣的文章
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤
查看>>
react 取消 eslint
查看>>
codeforces 960C Subsequence Counting
查看>>
【11】ajax请求后台接口数据与返回值处理js写法
查看>>
Python菜鸟之路:Jquery Ajax的使用
查看>>
LeetCode算法题-Maximum Depth of Binary Tree
查看>>
sha1withRSA算法
查看>>
Vim和操作系统剪贴板交互
查看>>
Cox 教学视频5
查看>>
JVM类加载(4)—加载器
查看>>
public/private/protected的具体区别
查看>>
面试宝典——求一个字符串中连续出现次数最多的子串
查看>>
VMware Workstation虚拟机上网设置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
C#Note13:如何在C#中调用python
查看>>
Android介绍以及源码编译---Android源码下载
查看>>
SpringBoot集成redis缓存
查看>>
sql经典语句
查看>>
使用ffmpeg实现对h264视频解码 -- (实现了一个易于使用的c++封装库)
查看>>
第4周作业-面向对象设计与继承
查看>>