javascript - js做過(guò)渡效果是怎么樣做的?
問(wèn)題描述
小白對(duì)js不太熟悉,那么請(qǐng)問(wèn),我如果js來(lái)做點(diǎn)擊按鈕,然后p經(jīng)過(guò)5s移動(dòng)到右邊500px的地方,這種效果的制作思路是啥?
是先寫(xiě)好一個(gè)class,讓這些效果完全都達(dá)到了,然后用js來(lái)切換className么?
但是在點(diǎn)擊事件里面,把所有的css效果寫(xiě)進(jìn)去? QUQ
問(wèn)題解答
回答1:<!DOCTYPE html><html><head><meta charset='utf-8'> <title></title><style> p{ width:100px; height:100px; background:red; transition:all 5s;}p:hover{ width:300px;} #p1{position:relative;width:100px;height:100px; } #p2{position:absolute;width:100%;height:100%;background:#0f0; } #p2.p2{width:200%;height:200%; }</style></head><body><input type=’button’ id=’btn1’/><p><b>注意:</b>該實(shí)例無(wú)法在 Internet Explorer 9 及更早 IE 版本上工作。</p><p></p> <p id=’p1’><p id=’p2’></p> </p><p>鼠標(biāo)移動(dòng)到 p 元素上,查看過(guò)渡效果。</p></body> <script>window.onload=function(){ var oBtn=document.getElementById('btn1'),op=document.getElementById('p2'); oBtn.onclick=function(){op.className=’p2’; }}</script></html>
給你個(gè)簡(jiǎn)單的demo看完就會(huì)了,這也只是方法中的一種,方法還有很多!
回答2:你要的是這樣么?代碼見(jiàn)下方, p 5s移動(dòng)到500px,可以先給p設(shè)置好transition效果,加個(gè)移動(dòng)到右邊的class, js主要做的就是給元素加個(gè)class
ps: 只是demo代碼,沒(méi)考慮兼容等等情況……
css3
.demo{ border:1px solid #fff; width:100px; height:50px; position:relative; left:0; transition: left 2s;}.run{ left:500px;}
<p class='demo'> </p>
(function(){ document.getElementsByClassName(’demo’)[0].onclick = function(){this.className +=’ run’; };})()回答3:
可以用css,也可以直接用js寫(xiě)。css的話就用transition寫(xiě),具體的百度,點(diǎn)擊事件發(fā)生時(shí)為元素添加一個(gè)class,改變樣式。js的話就用settimeout,以你說(shuō)的左邊距為例,一點(diǎn)一點(diǎn)改變左邊距,到達(dá)指定值時(shí)停止即cleartimeout
回答4:如樓上所說(shuō),如果是ie9以下,需要使用定時(shí)器做
var ele = document.getElementsByClassName(’demo’)[0]ele.onclick = function(){ var btn = this; setInterval(function(){btn.style.left = parseInt(btn.style.left) + 1 + 'px' },1)}回答5:
一般都是用css3的transition實(shí)現(xiàn)過(guò)渡效果,要?jiǎng)赢?huà)的話用animation,使用js比較耗性能,這里有一些參考文章
回答6:css3d屬性
相關(guān)文章:
1. 查詢mysql數(shù)據(jù)庫(kù)中指定表指定日期的數(shù)據(jù)?有詳細(xì)2. mysql - 怎么生成這個(gè)sql表?3. mysql儲(chǔ)存json錯(cuò)誤4. php - 公眾號(hào)文章底部的小程序二維碼如何統(tǒng)計(jì)?5. mysql - 表名稱前綴到底有啥用?6. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決7. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?8. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?9. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 11010. sql語(yǔ)句 - 如何在mysql中批量添加用戶?
