JS运动改变单物体透明度的方法分析


Posted in Javascript onJanuary 23, 2018

本文实例讲述了JS运动改变单物体透明度的方法。分享给大家供大家参考,具体如下:

除了通过改变物体的 宽,高,letf,top位置或者是运动方向来实现物体运动效果之外,改变物体的透明度,也是运动特效

<script>
  window.onload = function () {
    var oDiv = document.getElementById('div1');
    oDiv.onmousemove = function () {
      startMove(100);
    }
    oDiv.onmouseout = function () {
      startMove(30);
    }
}
var timer = null;
function startMove(iTarget) {
    clearInterval(timer);
    var oDiv = document.getElementById('div1');
    timer = setInterval(function(){
      if(oDiv.offsetAlpha == iTarget){
        ....
      }
    },30);
}
</script>

但是在js中只有offsetLeft/Top ,offsetWidth/Height,这四个方法,并没有offsetAlpha这个方法。

问:那么我们怎么来 获取当前物体的透明度那??

我们可以自己定义一个变量 var alpha  = 30;通过判断这个变量 是否和目标值是否相等,来继续我们下一步的操作;

var alpha = 30; // 自定义一个变量

当alpha 等目标值得时候,清楚定时器,否则就改变透明度的值alpha

if(alpha == iTarget){
   clearInterval(timer);
}else{
   alpha += iSpeed;
   oDiv.style.opacity = alpha/100;
   oDiv.style.filter = 'alpha(opacity:'+alpha+')';
}

完整的代码如下:

<div id="div1"></div>

css样式部分:

<style>
    #div1{
      width: 100px;height: 100px;
      background: green;
      opacity:0.3;
      filter:alpha(opacity:30);/*兼容低版本IE*/
    }
</style>

js部分:

<script>
  window.onload = function () {
    var oDiv = document.getElementById('div1');
    oDiv.onmousemove = function () {
      startMove(100);
    }
    oDiv.onmouseout = function () {
      startMove(30);
    }
  }
  var timer = null;
  var alpha = 30;
  function startMove(iTarget) {
    clearInterval(timer);
    var oDiv = document.getElementById('div1');
    var iSpeed = 0;
    timer = setInterval(function(){
      if(alpha>iTarget){
        iSpeed = -10;
      }else{
        iSpeed = 10;
      }
      if(alpha == iTarget){
        clearInterval(timer);
      }else{
        alpha += iSpeed;
        oDiv.style.opacity = alpha/100;
        oDiv.style.filter = 'alpha(opacity:'+alpha+')';
      }
    },30);
  }
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
html中table数据排序的js代码
Aug 09 Javascript
js取得url地址参数实例
Feb 22 Javascript
js获取会话框prompt的返回值的方法
Jan 10 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
Nov 02 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
jQuery解析返回的xml和json方法详解
Jan 05 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
详解Vue中watch的高级用法
May 02 Javascript
qrcode生成二维码微信长按无法识别问题的解决
Apr 04 Javascript
Vue 中使用 typescript的方法详解
Feb 17 Javascript
js canvas实现俄罗斯方块
Oct 11 Javascript
JS实现基于拖拽改变物体大小的方法
Jan 23 #Javascript
基于vue cli重构多页面脚手架过程详解
Jan 23 #Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
Jan 23 #Javascript
实时监控input框,实现输入框与下拉框联动的实例
Jan 23 #Javascript
从parcel.js打包出错到选择nvm的全部过程
Jan 23 #Javascript
浅谈vue项目重构技术要点和总结
Jan 23 #Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 #Javascript
You might like
php curl 伪造IP来源的实例代码
2012/11/01 PHP
基于php权限分配的实现代码
2013/04/28 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
php递归实现无限分类的方法
2015/07/28 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
JavaScript实现select添加option
2015/07/03 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Swift中的协议(protocol)学习教程
2016/07/08 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python实现滑雪游戏
2020/02/22 Python
python os模块在系统管理中的应用
2020/06/22 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
中科软笔试题和面试题
2014/10/07 面试题
给同事的道歉信
2014/01/11 职场文书
环保公益广告语
2014/03/13 职场文书
法人代表任命书范本
2014/06/05 职场文书
2014年物流工作总结
2014/11/25 职场文书
保研专家推荐信范文
2015/03/25 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android