JS+CSS实现过渡特效


Posted in Javascript onJanuary 02, 2021

最近在玩一个叫Baba is you的游戏,很羡慕里面的一个转场特效,所以试着做了一下。主要使用了JS和CSS,特效主要是用CSS实现的。

JS+CSS实现过渡特效

HTML代码

<!DOCTYPE html>
<html lang="en" dir="ltr">
 <head>
 <meta charset="utf-8">
 <title>开始导航</title>
 <link rel="stylesheet" href="style.css" >
 </head>
 <body>
 <div class="text">
 <p><a id="bottom">点击进入</a></p>
 </div>
 </body>
 <script type="text/javascript">
//执行代码
window.onload=function(){
 var bottom=document.getElementById("bottom");
 bottom.onclick=function(){
 action();
 }
}
//获取网页长宽
var windowWidth=window.screen.width;
var windowHeight=window.screen.height;
function createSnow(){
  topblack();
  leftblack();
  bottomblack();
  rightblack();
 function topblack(){
  //随机创造1个div圆球
  var left_random=Math.random()*windowWidth;
  var top_random=Math.random()*50;
  var div=document.createElement('div');
  div.className='snow';
  //定义缩放转换
  div.style.transform='scale('+(Math.random()*3)+')'
  //定义随机位置,在顶部50像素之内
  div.style.left=left_random+'px';
  div.style.top=top_random+'px';
  //放在html外面,先用overflow:hidden隐藏掉
  div.style.marginTop="-250px";
  document.body.appendChild(div);
  }
  function leftblack(){
  var left_random=Math.random()*50;
  var top_random=Math.random()* windowHeight;
  var div=document.createElement('div');
  div.className='snow';
  div.style.transform='scale('+(Math.random()*2)+')'
  div.style.left= left_random+'px';
  div.style.top=top_random+'px';
  div.style.marginLeft="-250px";
  document.body.appendChild(div);
  }
  function bottomblack(){
  var left_random=Math.random()*windowWidth;
  var bottom_random=Math.random()*50;
  var div=document.createElement('div');
  div.className='snow';
  div.style.transform='scale('+(Math.random()*2)+')'
  div.style.left=left_random+'px';
  div.style.bottom=bottom_random+'px';
  div.style.marginBottom="-250px";
  document.body.appendChild(div);
  }
  function rightblack(){
  var right_random=Math.random()*50;
  var top_random=Math.random()* windowHeight;
  var div=document.createElement('div');
  div.className='snow';
  div.style.transform='scale('+(Math.random()*2)+')'
  div.style.right=right_random+'px';
  div.style.top=top_random+'px';
  div.style.marginRight="-250px";
  document.body.appendChild(div);
  }
 }
function setblack(){
 //各自创造100个圆球随机放在HTML顶部、底部、左右边,各自隐藏。
 for(var i=0;i<100;i++){
  createSnow()
 }
 }
//清除使用过后的云层与文字
function clearsnow(){
 var snow=document.querySelectorAll(".snow");
 var font=document.querySelector(".Fontarea");
 for(var i=0;i<snow.length;i++){
 document.body.removeChild(snow[i]);
 }
 document.body.removeChild(font);
}
//只是一个习惯,定义一个创建div的模板函数。你们可以用自己的方式。
function font(oCss){
 var oBox=document.createElement("p");
 oCss.parent.appendChild(oBox);
 oBox.innerHTML=oCss.p;
 oBox.className=oCss.c;
 return oBox;
}
function create(oCss){
 var oBox=document.createElement("div");
 oCss.parent.appendChild(oBox);
 oBox.style.width=oCss.w+"px";
 oBox.style.height=oCss.h+"px";
 oBox.style.position=oCss.p;
 oBox.style.left=oCss.l+"px";
 oBox.style.top=oCss.t+"px";
 oBox.style.backgroundSize="100%";
 return oBox;
}
//创建浮现的文字
function winthegame(){
var Fontarea=create({
   "w":500,
   "h":600,
   "p":"absolute",
   "parent":document.body,
   "l":"400",
   "t":"0"});
Fontarea.style.marginTop="200px";
Fontarea.className="Fontarea";
Fontarea.style.zIndex="31";
var titlep=font({ "parent":Fontarea,"p":"CONGRATULATION!","c":"font7"});
}
//执行创建云层与文字,封装起来是因为,如果文字出现多个不同的,就用不同的函数封装不同的场合。
function wintime(){
 winthegame();
 setblack();
}
//执行创建与清除,用setTimeout()来延迟清除。
function action(){
 wintime();
setTimeout(clearsnow,5000);
}
 </script>
</html>

css代码

body{
 background-size: 100%;
 overflow: hidden;
 background-color: #000;
}
.text{
 color: white;
 text-align: center;
 text-transform: uppercase;
 margin: 300px 0;
 font-size: 22px;
}
.text a{color:white;
 text-decoration:none;
 cursor: pointer;
  }
.snow{
 background: #15181f;
 position: absolute;
 width: 100px;
 height: 100px;
 border-radius: 50%;
 z-index: 30;
 animation: bganimation 5s 1;
}
.font7{
 color:white;
 text-align: center;
 font-size: 60px;
}
.Fontarea{
 opacity:0;
 animation: beganfont 4s 1;
}
@keyframes bganimation {
 0%{
 width: 100px;
 height: 100px;
 }
 50%{
 width: 500px;
 height: 500px;
 }
 100%{
 width: 100px;
 height: 100px;
 }
}
@keyframes beganfont {
 0%{
 opacity:0;
 }
 50%{
 opacity:1;
 }
 100%{
 opacity:0;
 }
}

这是效果图,点击文字会执行效果一次。

JS+CSS实现过渡特效

效果JS的解析都写在注释里了,CSS就是使用@keyframes来实现效果,也不是什么难懂的。
这种效果对于用于展示开场应该足够了,主要可以用来炫耀之类的,JS的代码或许比较粗糙,是从某个朋友的雪花特效那copy来改的。主要是用来做一个期末项目的,这个项目某些东西我以后也会慢慢总结的。
那么,就这样,可能我写的特效会跟别人的撞车,请多多包涵。如果感觉不是什么高大上的东西,也请多多包涵。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js控制滚动条缓慢滚动到顶部实现代码
Mar 20 Javascript
浅谈javascript中的instanceof和typeof
Feb 27 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
JavaScript实现的select点菜功能示例
Jan 16 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
详解从新建vue项目到引入组件Element的方法
Aug 29 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
使用Vue动态生成form表单的实例代码
Apr 26 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
jQuery中使用validate插件校验表单功能
May 24 jQuery
Vue中fragment.js使用方法小结
Feb 17 Javascript
jQuery实现全选按钮
Jan 01 #jQuery
vue实现登录功能
Dec 31 #Vue.js
vue 实现图片懒加载功能
Dec 31 #Vue.js
vue 动态创建组件的两种方法
Dec 31 #Vue.js
Vue 修改网站图标的方法
Dec 31 #Vue.js
利用 JavaScript 实现并发控制的示例代码
Dec 31 #Javascript
jquery自定义组件实例详解
Dec 31 #jQuery
You might like
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript面向对象编程
2008/03/02 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
python中去空格函数的用法
2014/08/21 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python生成器generator原理及用法解析
2020/07/20 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
机械专业应届生求职信
2013/09/21 职场文书
党员批评与自我批评
2014/02/12 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
公务员政审材料范文
2014/12/23 职场文书
护士个人总结范文
2015/02/13 职场文书
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
关于python爬虫应用urllib库作用分析
2021/09/04 Python
Java实现房屋出租系统详解
2021/10/05 Java/Android
python实现商品进销存管理系统
2022/05/30 Python