最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實(shí)現(xiàn)多物體運(yùn)動(dòng)

 更新時(shí)間:2022年05月08日 10:50:10   作者:不像話i  
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)多物體運(yùn)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS實(shí)現(xiàn)多物體運(yùn)動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)效果圖:

描述:用JS實(shí)現(xiàn)簡單的多物體運(yùn)動(dòng)動(dòng)畫,淡出淡化效果,當(dāng)鼠標(biāo)放在不同div上時(shí),div會(huì)由寬100PX慢慢變成200PX,當(dāng)鼠標(biāo)移開之后div恢復(fù)原狀,依次來,實(shí)現(xiàn)多物體運(yùn)動(dòng)效果。

基本步驟:

1.通過getElementsByTagName獲取到要做多物體運(yùn)動(dòng)的元素

2.然后for循環(huán)遍歷元素,添加事件

3.定義startMove函數(shù),需要兩個(gè)參數(shù),當(dāng)前“做運(yùn)動(dòng)”的元素,和目標(biāo)值target

具體代碼如下:

HTML代碼:

<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>Document</title>
? ? <script src="startMove.js"></script>
? ? <style>
? ? ? ? div{
? ? ? ? ? ? width: 100px;
? ? ? ? ? ? height: 100px;
? ? ? ? ? ? background: red;
? ? ? ? ? ? /* opacity: 1; */
? ? ? ? ? ? margin: 10px 0;
? ? ? ? }
? ? </style>
</head>
<body>
? ? <div></div>
? ? <div></div>
? ? <div></div>
? ? <div></div>
? ? <div></div>
?
? ? <script>
? ? ? ? // 改變div的width 、height、透明度、邊框 {width:500,height:500,opacity:0.5}
? ? ? ? var divs = document.getElementsByTagName('div');
? ? ? ? for(var i = 0;i<divs.length;i++){
? ? ? ? ? ? divs[i].onmouseenter = startMove(divs[i],{width:200,height:200,opacity:50},function(){
? ? ? ? ? ? ? ? alert('over!')
? ? ? ? ? ? });
? ? ? ? }
? ? ? ? for(var i = 0;i<divs.length;i++){
? ? ? ? ? ? divs[i].onmouseleave = startMove(divs[i],{width:100,height:100,opacity:100});
? ? ? ? }
? ? </script>
</body>
</html>

js代碼:

/**
?*?
?* @param {*} dom 改變形態(tài)的dom對象
?* @param {*} attrObj 要改變的所有元素的屬性形成的對象
?* @param {*} target 改變的目標(biāo)值
?* @returns?
?*/
function startMove(dom, attrObj, callback) {
? ? var timer = null;
? ? var speed = null;
? ? // 元素屬性的當(dāng)前值
? ? var iCur = null;
? ? return function() {
? ? ? ? clearInterval(dom.timer);
? ? ? ? dom.timer = setInterval(function() {
? ? ? ? ? ? var flag = true;
? ? ? ? ? ? // 0. 循環(huán)遍歷改變的屬性對象 將每一個(gè)屬性的形態(tài)都進(jìn)行運(yùn)動(dòng)
? ? ? ? ? ? for (var param in attrObj) {
? ? ? ? ? ? ? ? // 1. 判斷改變的屬性是不是透明度
? ? ? ? ? ? ? ? if (param === 'opacity') {
? ? ? ? ? ? ? ? ? ? iCur = getComputedStyle(dom)['opacity'] * 100;
? ? ? ? ? ? ? ? ? ? // console.log(iCur);
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? iCur = +getComputedStyle(dom)[param].slice(0, -2);
? ? ? ? ? ? ? ? ? ? console.log(iCur);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? // 2. 求出speed
? ? ? ? ? ? ? ? speed = (attrObj[param] - iCur) / 7;
? ? ? ? ? ? ? ? // 如果正值 向上取整(0.28 -> 1) ?如果是負(fù)值 向下取整(-0.28 -> -1)
? ? ? ? ? ? ? ? speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
? ? ? ? ? ? ? ? // 改變div的屬性的值
? ? ? ? ? ? ? ? if (param === 'opacity') {
? ? ? ? ? ? ? ? ? ? dom.style.opacity = (iCur + speed) / 100;
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? dom.style[param] = iCur + speed + 'px';
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? // 判斷div所有屬性是否到達(dá)目標(biāo)值
? ? ? ? ? ? ? ? if (iCur !== attrObj[param]) {
? ? ? ? ? ? ? ? ? ? flag = false;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (flag) {
? ? ? ? ? ? ? ? // 所有屬性值都到了目標(biāo)階段 可以清除定時(shí)器
? ? ? ? ? ? ? ? clearInterval(dom.timer);
? ? ? ? ? ? ? ? //?
? ? ? ? ? ? ? ? typeof callback === 'function' && callback();
? ? ? ? ? ? }
? ? ? ? ? ? // 上一個(gè)屬性運(yùn)動(dòng)結(jié)束之后 再讓下一個(gè)屬性開始運(yùn)行
? ? ? ? ? ? // 讓一個(gè)屬性的目標(biāo)值到達(dá)就停止定時(shí)器
? ? ? ? }, 60)
? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序使用this.setData()遇到的問題及解決方案詳解

    微信小程序使用this.setData()遇到的問題及解決方案詳解

    this.setData估計(jì)是小程序中最經(jīng)常用到的一個(gè)方法,但是要注意其實(shí)他是有限制的,忽略這些限制的話,會(huì)導(dǎo)致數(shù)據(jù)無法更新,下面這篇文章主要給大家介紹了關(guān)于微信小程序使用this.setData()遇到的問題及解決方案,需要的朋友可以參考下
    2022-08-08
  • 擴(kuò)展javascript的Date方法實(shí)現(xiàn)代碼(prototype)

    擴(kuò)展javascript的Date方法實(shí)現(xiàn)代碼(prototype)

    長期從事C#的開發(fā),被C#影響著我的思維。C#中DateTime的操作就很方便,于是就參考它對js的Date做了擴(kuò)展。
    2010-11-11
  • JavaScript中的異常捕捉介紹

    JavaScript中的異常捕捉介紹

    這篇文章主要介紹了JavaScript中的異常捕捉介紹,本文講解了throw語句拋出異常,try/catch/finally語句捕捉異常,需要的朋友可以參考下
    2014-12-12
  • javascript獲取網(wǎng)頁寬高方法匯總

    javascript獲取網(wǎng)頁寬高方法匯總

    本文給大家匯總介紹了下javascript獲取網(wǎng)頁寬高的方法,以及各個(gè)瀏覽器下不同方法獲取到的值的對比,有需要的小伙伴可以參考下。
    2015-07-07
  • jqgrid 表格數(shù)據(jù)導(dǎo)出實(shí)例

    jqgrid 表格數(shù)據(jù)導(dǎo)出實(shí)例

    jqgrid并沒有自帶導(dǎo)出表格數(shù)據(jù)的方法,這里就自己實(shí)現(xiàn)了一個(gè),嘗試過在頁面直接將數(shù)據(jù)導(dǎo)出,發(fā)現(xiàn)只有IE下可以通過調(diào)用saveas來實(shí)現(xiàn),但是別的瀏覽器不支持,于是考慮將數(shù)據(jù)傳回后臺,然后后臺返回下載文件來實(shí)現(xiàn)
    2013-11-11
  • 微信小程序整合使用富文本編輯器的方法詳解

    微信小程序整合使用富文本編輯器的方法詳解

    這篇文章主要介紹了微信小程序整合使用富文本編輯器的方法,結(jié)合實(shí)例形式分析了微信小程序整合與使用富文本插件WxParse相關(guān)步驟與操作技巧,需要的朋友可以參考下
    2019-04-04
  • 兼容ie、firefox的圖片自動(dòng)縮放的css跟js代碼分享

    兼容ie、firefox的圖片自動(dòng)縮放的css跟js代碼分享

    最近編輯反應(yīng),圖片有時(shí)候太大了,如果隱藏了,可能部分內(nèi)容別人就看不到了,如果手工設(shè)置圖片大小又太麻煩了,這里就提供一個(gè)方法讓也沒的圖片等比例縮放
    2013-08-08
  • JS編程小常識很有用

    JS編程小常識很有用

    JS是一門計(jì)算機(jī)編程語言,是一門動(dòng)態(tài)語言也稱為腳本語言,是解析型編程語言。需要了解跟多
    2012-11-11
  • JavaScript關(guān)聯(lián)數(shù)組用法分析【概念、定義、遍歷】

    JavaScript關(guān)聯(lián)數(shù)組用法分析【概念、定義、遍歷】

    這篇文章主要介紹了JavaScript關(guān)聯(lián)數(shù)組用法,結(jié)合實(shí)例形式分析了關(guān)聯(lián)數(shù)組的概念、定義與遍歷操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • Javascript頁面跳轉(zhuǎn)常見實(shí)現(xiàn)方式匯總

    Javascript頁面跳轉(zhuǎn)常見實(shí)現(xiàn)方式匯總

    這篇文章主要介紹了Javascript頁面跳轉(zhuǎn)常見實(shí)現(xiàn)方式,結(jié)合實(shí)例匯總分析了JavaScript常用的七種頁面跳轉(zhuǎn)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11

最新評論

文山县| 宁晋县| 蓝田县| 隆德县| 新巴尔虎左旗| 应用必备| 和林格尔县| 西华县| 大丰市| 上虞市| 玛纳斯县| 刚察县| 青岛市| 青田县| 姚安县| 昭平县| 南汇区| 荆州市| 区。| 通化市| 南漳县| 安多县| 海淀区| 嵊州市| 汶上县| 新乡县| 宝丰县| 禹州市| 固镇县| 双鸭山市| 南通市| 彰武县| 怀柔区| 永仁县| 嘉黎县| 吴堡县| 高清| 宜宾市| 永定县| 南涧| 中西区|