为了账号安全,请及时绑定邮箱和手机立即绑定

用js的style属性可以获得html标签的样式是不能获取非行间样式,那为什么前几节课老师可以使用啊

function move(target){

clearInterval(timer);

var oDiv=document.getElementById('div1');

timer=setInterval(function(){

var speed=(target-oDiv.offsetLeft)/20;

speed=speed>0?Math.ceil(speed):Math.floor(speed);

if(oDiv.style.offsetLeft==target){

clearInterval(timer);

}else{

oDiv.style.left=oDiv.offsetLeft+speed+"px";//这里不就是可以获取非行间样式吗?

}

},30)

}


function change(obj,target){

clearInterval(obj.timer);

var speed=obj.alpha>target?-10:10;

obj.timer=setInterval(function(){

// var speed=alpha>target?-10:10;

// speed=speed>0?Math.ceil(speed):Math.floor(speed);

if(obj.alpha==target){

clearInterval(obj.timer);

}else{

obj.alpha+=speed;

obj.style.filter='alpha(opacity:'+obj.alpha+')';

obj.style.opacity=obj.alpha/100;//还有这里

}

},30)

}

这些是前面课程的部分内容,感觉跟这节课有点矛盾啊,难道left和opacity不是DOM的属性吗

正在回答

3 回答

首先css样式表有三种样式,

一、内联样式

在HTML标签用style属性设置,如 :

<p style="color:#f90;">这是内联样式</p> 

二、嵌入样式

通过<head>标签内通过<style>标签设置。如:

 <style type="text/css">

    /*这是嵌入样式*/

   .stuff{color:#f90}

</style>

三、外部样式

通过<link>标签设置。如:

<link rel="stylesheet" href="path/style.css" type="text/css">

而在javascript中,获取这三种样式表的方法是有限制的,style只能获取元素的内联样式,

嵌入样式和外部样式使用style是获取不到的,javascript提供了另外的获取方式,嵌入样式和外部样式可以通过currentStyle(IE浏览器)、getComputedStyle(Firefox、opera、safari、chrome浏览器)的方式获取。

使用方法分别是window.currentStyle["attr']和window.getComputedStyle(ob, pseudoElt)["attr']。

哈,其实刚开始的时候小白也不怎么懂,可能小白说的你也不是很明白,你可以参照这篇学习笔记

人家理解得可比我这半吊子水平透彻多了

( ╯□╰ )好吧,小白承认好像抄袭了,逃。。。


1 回复 有任何疑惑可以回复我~
#1

jazia 提问者

谢谢多次回答!
2016-09-25 回复 有任何疑惑可以回复我~
#2

jazia 提问者

我还是半知半解,因为前几节老师用的是嵌入样式,然后我看到她直接用style获取,等到这一节才用getStyle获取样式,额,我还是多看这几节的视频吧,可能我看错了。谢谢了
2016-09-25 回复 有任何疑惑可以回复我~
#3

墨小漓 回复 jazia 提问者

你可以这样理解,style的专门用来是获取内联样式的(小白觉得有点像处理浏览器兼容性时的问题),然后如果是嵌入样式和外部样式它只能获取简单情况下(比如说只有height,width,color等简单属性的样式表)的属性,但是如果遇到复杂一点的情况(比如有border或者margin,padding属性的样式表),( ╯□╰ )这时候style就懵逼了。术业有专攻,毕竟不是专业的。因为有了更专业的currentStyle、getComputedStyle 方法,它变成了多余的。小白觉得嘛,老师前面几节课这样讲应该是给后面提醒我们做个铺垫。
2016-09-25 回复 有任何疑惑可以回复我~
#4

墨小漓 回复 jazia 提问者

实在不懂的多看一次理解会深入一些。 ( ╯□╰ )小白全部看完了,动画效果不会写,在看第二遍。 SO,一起努力吧。
2016-09-25 回复 有任何疑惑可以回复我~
#5

jazia 提问者 回复 墨小漓

嗯我觉得也是这样,赶紧学习,然后开始找实习,一起加油。yeah
2016-09-26 回复 有任何疑惑可以回复我~
#6

你看起来似乎很美味

之前是设置样式,现在是获取样式
2016-09-27 回复 有任何疑惑可以回复我~
查看3条回复

我也遇到同样的困惑了,style只能获取元素的内联样式,那为什么我们在嵌入样式上写的代码也能获取的到呢?

0 回复 有任何疑惑可以回复我~

因为没有加边框border等属性,所以使用时有些问题没有呈现出来。多物体动画,任务属性一那节她解释了。还有加了边框属性之后style.width=width+2*border;同理style.height=height+2*border;

0 回复 有任何疑惑可以回复我~
#1

jazia 提问者

嗯这个我知道,我是想问属性难道不可以直接用js的style获取吗,就比如oDiv.style.left、oDiv.style.opacity。难道得用getStyle这个方法获取
2016-09-23 回复 有任何疑惑可以回复我~
#2

哇妙012 回复 jazia 提问者

js的style只能获取行内样式,前几节老师应该都是用的offset获取的当前样式吧,用的style设置样式,要获取非行内的样式,所以要用getStyle啊
2016-09-23 回复 有任何疑惑可以回复我~
#3

墨小漓 回复 jazia 提问者

ps 老师这里用的是嵌入样式,getStyle这个function里面封装了currentStyle、getComputedStyle方法。
2016-09-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

用js的style属性可以获得html标签的样式是不能获取非行间样式,那为什么前几节课老师可以使用啊

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信