盒子 原来的位置 0+ 10 盒子现在的offsetLeft 10
|-5| = 5
这三个函数都是 数学函数
Math
比如说 console.log(Math.ceil(1.01)) 结果 是 2
console.log(Math.ceil(1.9))结果 2
console.log(Math.ceil(-1.3)) 结果 是 -1
比如说 console.log(Math.floor(1.01)) 结果 是 1
console.log(Math.floor(1.9)) 结果 1
console.log(Math.floor(-1.3)) 结果 是 -2
console.log(Math.round(1.01)) 结果 是 1
console.log(Math.round(1.9)) 结果 是 2
匀速动画的原理: 盒子本身的位置 + 步长
缓动动画的原理:盒子本身的位置 + 步长 (不断变化的)
( 缺陷:只能水平方向!随后的“封装运动框架单个属性会进一步改进” )
我们访问得到css 属性,比较常用的有两种:
点语法可以得到 width 属性 和 top属性 ** 带有单位的 。 100px
但是这个语法有非常大的 缺陷**, 不变的。
后面的width 和 top 没有办法传递参数的。
var w = width
box.style.w
最大的优点 : 可以给属性传递参数
我们想要获得css 的样式, box.style.left 和 box.style.backgorundColor
但是它只能得到 行内的样式。
但是我们工作最多用的是 内嵌式 或者 外链式 。
怎么办?
核心: 我们怎么才能得到内嵌或者外链的样式呢?
外部(使用<link>)和内嵌(使用<style>)样式表中的样式(ie和opera)
两个选项是必须的, 没有伪类 用 null 替代
我们这个元素里面的属性很多, left top width ===
我们想要某个属性, 就应该 返回该属性,所有继续封装 返回当前样式的 函数。
千万要记得 每个 的意思 : 那是相当重要
flag在js中一般作为开关,进行判断。
等动画执行完毕再去执行的函数 回调函数
我们怎么知道动画就执行完毕了呢?
很简单 当定时器停止了。 动画就结束了
案例源码:
in运算符也是一个二元运算符,但是对运算符左右两个操作数的要求比较严格。in运算符要求第1个(左边的)操作数必须是字符串类型或可以转换为字符串类型的其他类型,而第2个(右边的)操作数必须是数组或对象。只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false
案例源码:
链接: http://pan.baidu.com/s/1miEvqoo
密码:7fv8var flag = false //标识,表示页面上数据还未处理完成$.each(data,function(i,o) {
//你的代码
flag = true//已经完成数据处理
})
var = t
t = setInterval(function() {//定时检测
if(flag) {//如果数据已经处理完毕
load('你的js文件')//加载你的js文件
clearTimeout(t)//取消定时检测节省开销
}
},50)
关键是你引入js文件执行的时机,页面上的数据还没有生成,但这个js已经执行了,由于找不到对应的元素,所以失效了,因为它只执行一次,数据处理完成以后它也不会再执行了。
上面代码提供的思路是检测数据是否已经处理完成,完成后再加载你需要的js文件,保证js的执行在数据处理完成之后。
<html><head></head>
<body>
<ul>
<li class="picrp">
<li class="picrp">
<li class="picrt">
<li class="picrp">
<li class="picrp">
<li class="picrt">
<li class="picrp">
<li class="picrp">
<li class="picrt">
</ul>
<script type="text/javascript">
var target = document.getElementByid("target")
var lis = target.getElementsByTagName('li')
var i_cur
for(var i=0 i<lis.length i++){
i_cur = i%2
if(i_cur<1){
lis[i].className = 'picrp'
}else{
lis[i].className = 'picrt'
}
}
</script>
</body>
</htmL>