亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

用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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號