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

本文共 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://xyell.baihongyu.com/

你可能感兴趣的文章
阿兰•图灵与人工智能
查看>>
操作系统简单快捷安装方式
查看>>
微软MVA征文参赛作品_微软云计算,缔造新生活
查看>>
openshift 安装
查看>>
使用图形化工具Gitbook Editor编辑gitbook电子书
查看>>
SSH免密码登录原理
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Mbps与MB/s的区别
查看>>
eclipse 导入Maven项目的问题
查看>>
关于Java IO与NIO知识都在这里
查看>>
DEDE如何提取文章内容里面的第一张图片地址
查看>>
SQL Server的CONVERT() 函数介绍
查看>>
关于安装oracle数据库
查看>>
一句励志的英文短句,希望大家喜欢!
查看>>
org.hibernate.AssertionFailure: null id in xxx (don't flush the Session after an exception occurs)
查看>>
我的友情链接
查看>>
Android全局对话框
查看>>
awstats 分析nginx 日志
查看>>
给zabbix添加短信、微信、邮件报警
查看>>