多物体运动 根据传递的属性值改变
来源:互联网 发布:linux c执行shell命令 编辑:程序博客网 时间:2024/05/11 15:56
对物体设置一些操作变透明度 变宽高等 运用到有个unction getStyle(obj,attr){}函数封装 其中 透明度和其他有区别需要判断 还有浏览器兼容问题 以下代码只适合在IE浏览器中运行
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>多物体运动</title>
<style>
ul,li{
list-style: none;
}
ul li{
width:200px;
height:100px;
background:yellow;
margin-bottom: 20px;
border: 1px solid red;
filter: alpha(opacity:30);
opacity: 0.3;
}
#div1{
height: 100px;
width: 200px;
background: blueviolet;
margin-left: 40px;
}
</style>
<script>
window.onload=function(){
var oLi=document.getElementsByTagName("li");
var oDiv=document.getElementById("div1");
for(var i=0;i<oLi.length;i++){
oLi[i].timer=null;
oLi[i].onmouseover=function(){
startMove(this,'opacity',100)
}
oLi[i].onmouseout=function(){
startMove(this,'opacity',30)
}
}
oDiv.timer=null;
oDiv.onmouseover=function(){
startMove(this,'height',400)
}
oDiv.onmouseout=function(){
startMove(this,'height',100)
}
}
function startMove(obj,attr,iTarget){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var icur=0;
if(attr=='opacity'){
//四舍五入防止获取的数据和想要的数据不同 浏览器自身问题
icur=Math.round(parseFloat(getStyle(obj,attr))*100);//
}else{
icur=parseInt(getStyle(obj,attr));
}
var speed=(iTarget-icur)/8;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
if(icur==iTarget){
clearInterval(obj.timer);
}else{
if(attr=='opacity'){
obj.style.filter='alpha(opacity:'+(icur+speed)+')';
obj.style.opacity=(icur+speed)/100;
}else{
obj.style[attr]=icur+speed+'px';
}
}
},30)
}
//获取样式函数
function getStyle(obj,attr){
if(obj.currentStyle){//针对IE
return obj.currentStyle[attr];
}else{//针对火狐(有问题)
return obj.getComputedStyle(obj,false)[attr];
}
}
</script>
</head>
<body>
<ul>
<li ></li>
<li ></li>
</ul>
<div id="div1"></div>
</body>
</html>
如果想一个运动接着下一个运动————链式运动
修改如下:
//先变宽再变高
Li.onmouseover=function(){
startMove(Li,'width',400,function(){
startMove(Li,'height',200)
});
});
}
Li.onmouseout=function(){
startMove(Li,'height',100,function(){
startMove(Li,'width',200);
});
}
//函数也要改变
function startMove(obj,attr,iTarget,fn){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
//1.获取当前值
var icur=0;
if(attr=='opacity'){
icur=Math.round(parseFloat(getStyle(obj,attr))*100);
}else{
icur=parseInt(getStyle(obj,attr));
}
//2计算速度
var speed=(iTarget-icur)/8;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
//3检测停止
if(obj.offsetWidth==iTarget){
clearInterval(obj.timer);
if(fn){
fn();
}
}else{
if(attr=='opacity'){
obj.style.filter='alpha(opacity:'+(icur+speed)+')';
obj.style.opacity=(icur+speed)/100;
}else{
obj.style[attr]=icur+speed+'px';
}
}
},30)
}
- 多物体运动 根据传递的属性值改变
- js运动-匀速运动、透明度、多物体的运动、多属性运动
- Js运动动画系列7--多物体运动-设置样式属性做不同的运动
- js多物体运动--鼠标移入改变宽度
- 43、JavaScript的运动----任意属性值的运动---透明度的改变
- js运动技术--多物体运动框架(变宽、变高、改变字体、改变border、透明度)以及替换offset的使用
- js运动-多物体运动
- 关于多物体运动框架的函数
- 42、JavaScript的运动----多个物体同时运动
- 物体的阻尼运动
- JS_任意属性_多物体_缓冲运动
- unity shader 根据世界坐标,改变物体显示的颜色
- JavaScript运动框架(三):多物体任意值运动
- 多物体,任意值运动框架
- 多物体任意值运动框架
- 多物体运动
- 多物体运动
- JS多物体运动
- Maven依赖的scope去除部署不需要的jar包(打包)
- 【iOS】标签视图与分组静态表布局使用、利用通知和全局变量传值
- 简谈JVM
- centos 安装 php7
- Hough变换非常详细讲解
- 多物体运动 根据传递的属性值改变
- Java中关于nextInt()、next()和nextLine()的理解
- ios https与http混合使用
- Meteor Shower POJ
- 思维导图之初中生物知识点
- 苹果发布iOS 10.3.3正式版:iPhone 5、5C走好
- Head First JavaScript_#4宠物改进版
- C++基础——类与对象(下)
- 解决VS2017"需要RCXDTI.DLL才能编译DESIGNINFO资源"的问题