js运动事件函数详解


Posted in Javascript onOctober 21, 2016

本文实例为大家分享了js运动事件函数,供大家参考,具体内容如下

HTML

<div id="breedsdog">
<h2 class="title">The Dog</h2>
<p class="describe">Split between cat,belong to the cat family,cat,cat,is the world's more widely<br>
in the family pet.Cats ancestors is presumably desert cats</p>
<div class="breedsdog1">
<div class="img">
<img src="img2/labrador.jpg"/>
<a class="lookdog" href="#"></a>
</div>
<div class="img_txt">
<p class="chinese">拉布拉多</p>
<p class="english">Labrador</p>
<p class="introduce">
拉布拉多猎犬因原产地在加拿大的纽芬兰与拉布拉多省而得名。拉布拉多犬是一种中大型犬类,个性忠诚、大气、憨厚、温和、阳光、开朗、活泼,智商极高,也对人很友善,是非常适合被选作经常出入公共场合的导盲犬或地铁警犬及搜救犬和其他工作犬的狗品种,跟哈士奇(西伯利亚雪撬犬)和金毛猎犬并列三大无攻击性犬类,拉布拉多智商位列世界犬类第七。
</p>
</div>
</div>

</div>

CSS布局样式省略

现在a.lookdog的样式我设为position:absolutely,宽高设为0。实现的特效:当鼠标移入div.img上,实现a.lookdog的宽高自动展开的缓冲动画,并且展开完毕后,透明度变低的遮罩背景图层。当然我们用css3也能实现这种特效,但是css3的坑是不完全支持IE浏览器,所以用javascript来实现运动缓冲动画是最理想的。

javascript

函数封装部分

//根据类名和父对象ID获取属性节点,解决getelementsByClass对浏览器的兼容性问题

function getbyclass(classname,parent){

    //传入ID获取父节点,如果该参数为空就为document

 
var oParent=parent?document.getElementById(parent):document;

    //定义一个空数组来存放属性节点
 var els=[];

    //定义一个数组存放父对象的所有子节点

 
var elements=oParent.getElementsByTagName("*");

    //遍历所有子节点,根据类名把所有的子对象找出来,并且放在els数组内
 for(var i=0;i<elements.length;i++){
 if(elements[i].className==classname){
 els.push(elements[i]);
 }
 }
 return els;
 }

//根据对象要获取的属性名来得到属性值

function getStyle(obj,stylename){

    //针对IE浏览器获取样式方法
if(obj.currentStyle){
return obj.currentStyle[stylename];

    //针对其他浏览器获取样式方法
}else if(getComputedStyle(obj,false)){
return getComputedStyle(obj,false)[stylename];
}
}

//缓冲动画主函数,传参类型:(对象,jaso格式要改变的样式值(可多个),缓冲系数,执行周期时间(值越小速度越快,越大越慢),回调函数(是否有多次动画的播放,可有可无))

function MoveJason(obj,jason,average,cycle,continuefunction){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
for(var stylename in jason){//针对多效果的缓冲动画
// obj.style[stylename]=jason[stylename];
// }
if(stylename=="opacity"){
var offvalue=Math.round(parseFloat(getStyle(obj,stylename))*100);
var speed=(jason[stylename]-offvalue)/average;
  speed=speed>0?Math.ceil(speed):Math.floor(speed);
  if(speed==0){
clearInterval(obj.timer);
if(continuefunction) continuefunction();//回调函数,判断是否有多次执行
  }else{
obj.style[stylename]=(offvalue+speed)/100;
obj.style.filter="alpha(opacity:"+(offvalue+speed)+")";
  }
}else{
var offvalue=parseInt(getStyle(obj,stylename));
var speed=(jason[stylename]-offvalue)/average;
  speed=speed>0?Math.ceil(speed):Math.floor(speed);
  if(speed==0){
clearInterval(obj.timer);
if(continuefunction) continuefunction();
  }else{
obj.style[stylename]=offvalue+speed+"px";
  }
  }
}
},cycle);
}

页面初始化函数,方法调用

window.onload=function(){

var imgdog=getbyclass("img","breedsdog");//在父对象breedsdog上找到所有的div.img

    //给所有的div.img添加鼠标移入,鼠标移出事件
for(var i=0;i<imgdog.length;i++){

imgdog[i].onmouseover=function(){
var obj=this.children[1];
            MoveJason(obj,{"height":376,"width":206},5,30,function(){//缓冲动画的函数调用,当执行完宽高值的缓冲变化,再回调函数执行透明度缓冲变化。以下同理,可以多层嵌套实现多个回调。
        MoveJason(obj,{"opacity":30},5,30);
    });
}
imgdog[i].onmouseout=function(){
var obj=this.children[1];
            MoveJason(obj,{"height":0,"width":0},5,30,function(){
        MoveJason(obj,{"opacity":80},5,30);
    });
}
}

}

鼠标移入移出效果图如下,我多加个了几个div.img,可以看到等宽高变完,然后透明度发生变化。

js运动事件函数详解

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

Javascript 相关文章推荐
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
div模拟选择框示例代码
Nov 03 Javascript
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
Jul 06 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
node thread.sleep实现示例
Jun 20 Javascript
BootStrap modal实现拖拽功能
Dec 01 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
Mar 08 Javascript
JavaScript 处理树数据结构的方法示例
Jun 16 Javascript
vue实现全匹配搜索列表内容
Sep 26 Javascript
javascript轮播图算法
Oct 21 #Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
Oct 21 #Javascript
javascript简易画板开发
Apr 12 #Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 #Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 #Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 #Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 #Javascript
You might like
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
求职自荐书范文
2013/12/04 职场文书
自主招生自荐信指南
2014/02/04 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
触电现场处置方案
2014/05/14 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python