Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从零开始学 Web 之 BOM(二)定时器

从零开始学 Web 之 BOM(二)定时器

作者头像
Daotin
发布于 2018-08-31 03:11:16
发布于 2018-08-31 03:11:16
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

一、定时器

BOM 中有两中方式设置定时器。

1、方式一

特点:定时器可以重复使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 参数有两个:
// 第一个参数:定时器定时结束处理函数
// 第二个参数:定时事件,单位毫秒。
// 返回值:定时器id值
var timeId = window.setInterval(function() {
  // ...
}, 1000); // 定时1s

// 清除定时器
// 参数只有一个:定时器的 id 值。
window.clearInterval(timeId);

1.1、案例:图片摇起来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            position: absolute;
        }
    </style>
</head>
<body>
<input type="button" value="摇起来" id="btn1">
<input type="button" value="停止" id="btn2">
<div id="dv">
    <img src="images/Daotin.png" alt="">
</div>

<script src="common.js"></script>
<script>
    var timeId = 0;
    my$("btn1").onclick = function () {
        timeId = setInterval(function () {
            //让图片动起来可以使div动起来
            var x = parseInt(Math.random() * 100) + 1; // 1-100随机数
            var y = parseInt(Math.random() * 100) + 1;
            my$("dv").style.left = x + "px";
            my$("dv").style.top = y + "px";
        }, 100);
    };
    my$("btn2").onclick = function () {
        clearInterval(timeId);
    };
</script>
</body>
</html>

点击”摇起来“按钮,图片每隔 100ms 动一次,点击停止按钮,图片停止移动。

遗留问题:

多次点击“摇起来”按钮的时候,图片动的越来越快,而且点击“停止”按钮没法停下来。

原因分析:

多次点击“摇起来”按钮的时候,timeId 的值会有多个,而停止的时候,只会清理最后一个值,其他的值对应的定时器没有清理。

解决方法:

在每次点击按钮的时候,先进行一次定时器的清理动作。clearInterval(timeId);

2、方式二

特点:定时器是一次性的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setTimeout(); // 参数与返回值同 setInterval();

这个定时器只执行一次。虽然只执行一次,但是还是要清零,不然就一直占内存。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clearTimeOut(); // 参数为 setTimeout() 定时器的 id。

2.1、案例:协议禁用倒计时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
<input type="button" value="请认真阅读协议(5)" id="btn" disabled>

<script src="common.js"></script>
<script>
    var time = 5;
    var timeId = setInterval(function () {
        time--;
        if (time >= 0) {
            my$("btn").value = "请认真阅读协议(" + time + ")";
        } else {
            clearInterval(timeId);
            my$("btn").value = "同意";
            my$("btn").disabled = false;
        }
    }, 1000);
</script>
</body>

倒计时后才可以点击同意按钮。

2.2、案例:移动元素

目标:有两个按钮,点击第一个按钮,div 缓慢移动到 400px 位置,点击第二个按钮缓慢移动到 800px 位置,再点击第一个按钮缓慢移动到 400px 位置......

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        input {
            margin-top: 10px;
        }

        div {
            position: absolute;
            width: 200px;
            height: 100px;
            background-color: yellowgreen;
            margin-top: 10px;
            /*left: 20px;*/
        }
    </style>
</head>
<body>
<input type="button" value="移动400px" id="btn1">
<input type="button" value="移动800px" id="btn2">
<div id="dv"></div>

<script src="common.js"></script>
<script>
    // 移动400px
    my$("btn1").onclick = function () {
        animation(my$("dv"), 400);

    };
    // 移动800px
    my$("btn2").onclick = function () {
        animation(my$("dv"), 800);

    };

    // 封装动画移动函数
    function animation(element, target) {
        // 判断当前的位置
        var current = element.offsetLeft; // 不能使用 element.style.left
        var onestep = 7;

        var timeId = setInterval(function () {
            current += current < target ? onestep : -onestep;
            if (Math.abs(current - target) >= onestep) {
                element.style.left = current + "px";
            } else {
                clearInterval(timeId);
                element.style.left = target + "px";
            }
        }, 20);
    }
</script>
</body>
</html>

1、既然要缓慢移动,就需要定时器。 2、当前位置的获取不能使用 element.style.left; 而需要使用 element.offsetLeft; 因为所有写在标签中的 style 属性值都拿不到,只有内联的 style 属性值可以使用 element.style.left 拿到。而 element.offsetLeft 则两种方式都可以拿到。 3、需要每次移动的步数 onestep,而且有回退的需要,所以 onestep 可能是负数。 4、每次移动后判断现在的位置到目标位置的距离,如果大于 onestep,那么就移动 当前 current 加减 onestep 的位置,否则就移动到目标位置,这样做的目的是避免 onestep 的不确定,导致最后的终点与目标还差少许的距离。 5、使用当前与目标距离的绝对值来决定是前进还是后退。 6、到达目标位置后,关闭定时器。 7、将动画过程封装成一个函数,参数为移动的目标和移动的距离。 8、注意:div 需要脱离文档流。

2.3、案例:轮播图

2.3.1、简单的轮播图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        #box {
            width: 400px;
            height: 250px;
            margin: 200px 0 0 400px;
            position: relative;
            border: 2px solid #31608a;
            overflow: hidden;
        }
        ul {
            width: 1300px;
            position: absolute;
        }
        li {
            list-style-type: none;
            float: left;
        }
        img {
            width: 400px;
            height: 250px;
        }
        li a {
            display: inline-block;
        }
        .sp {
            position: absolute;
            left: 50%;
            margin-left: -45px;
            bottom: 10px;
        }
        span {
            float: left;
            width: 20px;
            height: 20px;
            background-color: #fff;
            border-radius: 10px;
            text-align: center;
            font: 400 16px/20px Consolas;
            margin: 0 5px 0 5px;
            cursor: pointer;
        }
        .current {
            background-color: red;
            color: #fff;
        }
    </style>
</head>
<body>
<div id="box">
    <ul>
        <li><a href="#"><img src="images/img1.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/img2.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/img3.jpg" alt=""></a></li>
    </ul>
    <div class="sp">
        <span class="current">1</span>
        <span>2</span>
        <span>3</span>
    </div>
</div>

<script src="common.js"></script>
<script>
    // 获取box元素
    var boxObj = my$("box");

    // 获取ul元素,因为移动的就是整个ul
    var ulObj = boxObj.children[0];

    // 移动宽度
    var moveWidth = document.getElementsByTagName("img")[0].offsetWidth;

    // 获取所有span标签
    var spanObjs = boxObj.children[1].getElementsByTagName("span");
    // console.log(spanObjs);

    for (var i = 0; i < spanObjs.length; i++) {
        // 获取每个span的编号,设置自定义属性
        spanObjs[i].setAttribute("index", "" + i);

        spanObjs[i].onmouseover = function () {
            for (var j = 0; j < spanObjs.length; j++) {
                // 清空span背景
                spanObjs[j].removeAttribute("class");
            }
            // 设置当前span标签
            this.className = "current";

            // 每个编号*移动的宽度就是移动到的目标位置
            var index = this.getAttribute("index");
            animation(ulObj, -index*moveWidth);

        };
    }

    // 封装动画移动函数
    function animation(element, target) {
        // 判断当前的位置
        var current = element.offsetLeft;
        var onestep = 7;
        var timeId = setInterval(function () {
            current += current < target ? onestep : -onestep;
            if (Math.abs(current - target) >= onestep) {
                element.style.left = current + "px";
            } else {
                clearInterval(timeId);
                element.style.left = target + "px";
            }
        }, 10);
    }
</script>
</body>
</html>

1、移动的时候移动的是 ul,而不是单独的 li 或者 img。 2、span 小标签在鼠标进入的时候,背景变成红色。(排他事件:需要两步,第一清理所有,第二当前元素设置属性) 3、为每个 span 绑定事件时,程序开始,for 循环就运行完了,得不到每个span 标签的编号,所以要自定义属性保存每个 span 标签的编号。 4、直接调用封装好的动画移动函数来移动 ul 标签。

2.3.2、左右焦点轮播图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        #box {
            width: 400px;
            height: 250px;
            margin: 200px 0 0 400px;
            position: relative;
            border: 2px solid #31608a;
            overflow: hidden;
        }
        ul {
            width: 1300px;
            position: absolute;
        }
        li {
            list-style-type: none;
            float: left;
        }
        img {
            width: 400px;
            height: 250px;
        }
        .sp {
            width: 400px;
            height: 50px;
            position: absolute;
            top: 100px;
            display: none;
        }
        #left {
            width: 50px;
            height: 50px;
            float: left;
            cursor:pointer;
            text-align:center;
            font: 400 28px/50px Consolas;
            background-color: #fff;
            opacity: 0.4;  /* 透明度 */

        }

        #right {
            float: right;
            width: 50px;
            height: 50px;
            cursor:pointer;
            text-align:center;
            font: 400 28px/50px Consolas;
            background-color: #fff;
            opacity: 0.4;
        }

    </style>
</head>
<body>
<div id="box">
    <ul>
        <li><a href="#"><img src="images/img1.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/img2.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/img3.jpg" alt=""></a></li>
    </ul>
    <div class="sp">
        <span id="left"><</span>
        <span id="right">></span>
    </div>
</div>

<script src="common.js"></script>
<script>
    // 获取box元素
    var boxObj = my$("box");

    // 获取ul元素,因为移动的就是整个ul
    var ulObj = boxObj.children[0];

    // 移动宽度
    var moveWidth = document.getElementsByTagName("img")[0].offsetWidth;

    // 获取sp标签
    var spObj =boxObj.children[1];

    // 获取span左标签
    var leftObj = my$("left");
    // 获取span右标签
    var rightObj = my$("right");

    var index = 0;

    boxObj.onmouseover = function () {
        spObj.style.display = "block";
    };
    boxObj.onmouseout = function () {
        spObj.style.display = "none";
    };

    // 左移
    leftObj.onclick = function () {
        if(index) {
            index--;
            animation(ulObj, -index*moveWidth);
        }
    };

    // 右移
    rightObj.onclick = function () {
        if(index<ulObj.children.length-1) {
            index++;
            animation(ulObj, -index*moveWidth);
        }
    };

    // 封装动画移动函数
    function animation(element, target) {
        // 判断当前的位置
        var current = element.offsetLeft;
        var onestep = 17;
        var timeId = setInterval(function () {
            current += current < target ? onestep : -onestep;
            if (Math.abs(current - target) >= onestep) {
                element.style.left = current + "px";
            } else {
                clearInterval(timeId);
                element.style.left = target + "px";
            }
        }, 10);
    }
</script>
</body>
</html>
2.3.3、完整轮播图

需求:鼠标进入数字按钮自动切换;鼠标点击左右切换按钮切换,并且数字按钮跟着切换;自动轮播。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="base.css">
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #box {
            width: 400px;
            height: 250px;
            margin: 100px 0 0 400px;
            position: relative;
            border: 2px solid #31608a;
            overflow: hidden;
        }

        ul {
            width: 1300px;
            position: absolute;
        }

        li {
            list-style-type: none;
            float: left;
        }

        img {
            width: 400px;
            height: 250px;
        }

        .sp {
            position: absolute;
            left: 50%;
            margin-left: -45px;
            bottom: 10px;
        }

        span {
            float: left;
            width: 20px;
            height: 20px;
            background-color: #fff;
            border-radius: 10px;
            text-align: center;
            font: 400 16px/20px Consolas;
            margin: 0 5px 0 5px;
            cursor: pointer;
        }

        .spdiv {
            width: 400px;
            height: 50px;
            position: absolute;
            top: 100px;
            display: none;
        }

        #left {
            width: 50px;
            height: 50px;
            float: left;
            cursor: pointer;
            text-align: center;
            font: 400 28px/50px Consolas;
            color: #fff;
            background-color: rgba(255, 255, 255, 0.3);

        }

        #right {
            float: right;
            width: 50px;
            height: 50px;
            cursor: pointer;
            text-align: center;
            font: 400 28px/50px Consolas;
            color: #fff;
            background-color: rgba(255, 255, 255, 0.3);
        }

        .current {
            background-color: red;
            color: #fff;
        }
    </style>
</head>
<body>
<div id="box">
    <ul>
        <li><a href="#"><img src="images/img1.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/img2.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/img3.jpg" alt=""></a></li>
    </ul>
    <div class="sp">
        <span class="current">1</span>
        <span>2</span>
        <span>3</span>
    </div>
    <div class="spdiv">
        <s id="left"><</s>
        <s id="right">></s>
    </div>
</div>

<script src="common.js"></script>
<script>
    // 获取box元素
    var boxObj = my$("box");

    // 获取ul元素,因为移动的就是整个ul
    var ulObj = boxObj.children[0];

    // 移动宽度
    var moveWidth = document.getElementsByTagName("img")[0].offsetWidth;

    // 获取ul中所有的li
    var liObjs = ulObj.children;

    ulObj.appendChild(liObjs[0].cloneNode(true)); // 克隆第一个li,加入到ul中的最后
    ulObj.style.width = ulObj.offsetWidth + moveWidth + "px"; // 重新设置ul的宽度

    // 获取所有span标签
    var spanObjs = boxObj.children[1].getElementsByTagName("span");
    // console.log(spanObjs);

    // 获取spdiv标签
    var spdivObj = boxObj.children[2];
    // 获取span左标签
    var leftObj = my$("left");
    // 获取span右标签
    var rightObj = my$("right");

    var pos = 0;
    var myTimeId = setInterval(moveRight, 1000);
    
    // 自动播放 + 鼠标进入事件
    boxObj.onmouseover = function () {
        spdivObj.style.display = "block";
        clearInterval(myTimeId);

    };
    boxObj.onmouseout = function () {
        spdivObj.style.display = "none";
        myTimeId = setInterval(moveRight, 1000);
    };

    // 左移
    leftObj.onclick = function () {
        if (pos === 0) {
            pos = spanObjs.length;
            ulObj.style.left = -spanObjs.length * moveWidth + "px";
        }
        pos--;
        animation(ulObj, -pos * moveWidth);

        for (var i = 0; i < spanObjs.length; i++) {
            // 清空span背景
            spanObjs[i].removeAttribute("class");
        }
        // 设置当前span标签
        spanObjs[pos].className = "current";
    };

    // 右移
    rightObj.onclick = moveRight;

    function moveRight() {
        if (pos === spanObjs.length) { // 在到达克隆的一张的时候,立即跳到第一张
            pos = 0;
            ulObj.style.left = 0 + "px";
        }

        pos++;
        animation(ulObj, -pos * moveWidth);

        if (pos === spanObjs.length) {
            spanObjs[0].className = "current";
            spanObjs[spanObjs.length - 1].className = "";
        } else {
            for (var i = 0; i < spanObjs.length; i++) {
                // 清空span背景
                spanObjs[i].removeAttribute("class");
            }
            // 设置当前span标签
            spanObjs[pos].className = "current";
        }


    };


    // 遍历所有的 span 标签
    for (var i = 0; i < spanObjs.length; i++) {
        // 获取每个span的编号,设置自定义属性
        spanObjs[i].setAttribute("index", i + "");

        spanObjs[i].onmouseover = function () {
            for (var j = 0; j < spanObjs.length; j++) {
                // 清空span背景
                spanObjs[j].removeAttribute("class");
            }
            // 设置当前span标签
            this.className = "current";

            // 每个编号*移动的宽度就是移动到的目标位置
            pos = this.getAttribute("index");
            if (pos) {
                animation(ulObj, -pos * moveWidth);
            } else {

            }

        };
    }

    // 封装动画移动函数
    function animation(element, target) {
        // 判断当前的位置
        var current = element.offsetLeft;
        var onestep = 7;
        var timeId = setInterval(function () {
            current += current < target ? onestep : -onestep;
            if (Math.abs(current - target) >= onestep) {
                element.style.left = current + "px";
            } else {
                clearInterval(timeId);
                element.style.left = target + "px";
            }
        }, 10);
    }
</script>
</body>
</html>

1、首先获取所有需要的元素。 2、使用克隆第一个 li 标签来模拟从最后一个图片切换到第一个图片的过程。注意:这时候 ul 的宽度要改变,保证 li 的浮动在一行显示。 3、在右移最后一张过度到第二张的时候的处理方式为:当用户看到第一张的时候其实是最后一张,这个时候怎么过度到第二张?处理方法是,当在需要从最后一张跳转到第二张的时候,先让最后一张图切换到第一张,因为是克隆的,所以最后一张和第一张没有区别,用户看到的第一张其实是最后一张切换到了第一张,这个时候正常切换到第二张即可。 4、当需要点击左右切换按钮,需要数字按钮相对应的时候,注意第一个数字按钮和最后一个数字按钮的特殊处理。 5、图片下标 pos 是链接点击按钮和数字按钮的关键。 6、设置自动播放的时候,不使用定时器设置 pos 的方式,是因为当前 pos 的值不确定,使用自动点击右移按钮的方式。之所以设置两个 setInterval(moveRight, 1000); ,一个是进入页面自动播放,一个是鼠标退出 box 后的自动播放。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从零开始学 Web 之 BOM(三)offset,scroll,变速动画函数
在 window 下有一个方法:window.getComputedStyle(element, string) 可以获取一个元素所有的属性值。
Daotin
2018/08/31
1.2K0
前端分享|Html+CSS+JS 实现轮播切换
说明:Windows操作系统在终端区域中您可以使用右键粘贴命令,macOS系统在终端区域中您可以使用command+shift+v快捷键粘贴命令。
六月暴雪飞梨花
2023/11/27
5950
前端分享|Html+CSS+JS 实现轮播切换
Day15:大前端
position: relative, absolute, fixed, static
达达前端
2019/07/15
4K0
Day15:大前端
23个项目管理经典案例_交互动画
注意: speed = (end - box.offsetLeft)/20; 代表用(终点位置-当前位置)/动画系数 动画系数可以控制动画的快慢
全栈程序员站长
2022/11/03
1.9K0
图片轮播(左右切换)--JS原生和jQuery实现
左右切换的做法基本步骤跟 上一篇文章  淡入淡出 类似,只不过修改了一些特定的部分
书童小二
2018/09/03
83K1
图片轮播(左右切换)--JS原生和jQuery实现
JavaScript基础②
console.log(item)//点哪里,item的值就是你点击对应的currentvalue console.log(index)//点哪里,index的值就是你点击对应的索引
ymktchic
2022/01/18
1.1K0
JavaScript基础②
从零开始学 Web 之 移动Web(二)JD移动端网页,移动触屏事件
要实现轮播图,必须在首尾添加图片,如果直接在 html 代码直接添加图片的话,由于图片的数量是不固定的,那么每次图片的数量发生改变的话,不仅需要设置 html 的源码,而且还要设置对应的 css 代码,所以,为了从后台获取的图片数量不固定的情况下,也能够实现轮播效果,我们可以使用 js 来动态的添加图片。
Daotin
2018/08/31
2.8K0
从零开始学 Web 之 移动Web(二)JD移动端网页,移动触屏事件
动画函数封装
如果多个元素都使用这个动画函数,每次都要var 声明定时器。我们可以给不同的元素使用不同的定时器(自己专门用自己的定时器)。
星辰_大海
2020/09/30
1.2K0
javaWeb技术第二篇之CSS、事件和案例
<!--内联式 CSS (层叠样式表) 编辑 层叠样式表(英文全称:Cascading Style Sheets) CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 就是网页的美化技术。 入门:如何在html里面使用css html里面的外观命名跟css外观命名会有所有不同。但效果一致 css属性: 属性1:值1;属性2:值2;属性3:值3;... 内联式:对每个元素都进行style进行样式添加. 内部式:在当前html的head的style标签里面添加 <head> <
海仔
2019/08/15
1.2K0
定时器
var timer=setInterval(函数,毫秒); 重复执行 clearInterval(timer); 清空定时器
河湾欢儿
2018/09/06
3.2K0
jQuery1.jQuery简介及使用2.jQuery语法3.jQuery选择器4,jQuery 事件函数及效果显示
jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。(write less,do more.)
Python攻城狮
2018/08/23
2.5K0
jQuery1.jQuery简介及使用2.jQuery语法3.jQuery选择器4,jQuery 事件函数及效果显示
js运动框架逐渐递进版
运动,其实就是在一段时间内改变left、right、width、height、opactiy的值,到达目的地之后停止。
wfaceboss
2019/04/08
2.1K0
第61天:json遍历和封装运动框架(多个属性)
 var json = {width:200,height:300,left:50} console.log(json.width); for(var k in json) { console.log(k);   // k 遍历的是json  可以得到的是  属性 console.log(json[k]);  // json[k]  得到 是属性的  值 }
半指温柔乐
2018/09/11
6790
第61天:json遍历和封装运动框架(多个属性)
JS实现定时器
有趣的小案例池子: JS实现定时器 JS实现关闭图片窗口 JS实现输入检验 获取焦点后隐藏提示内容的输入框 JS实现获取鼠标在画布中的位置 聊天信息框显示消息 JS点击切换背景图 自动切换背景的登录页面 JS制作跟随鼠标移动的图片 JS实现记住用户密码
GeekLiHua
2025/01/21
5300
JS实现定时器
从零开始学 Web 之 jQuery(二)获取和操作元素的属性
DOM中有很多方式获取元素,比如通过id,通过标签名,通过类名,通过name的值,通过选择器等方式。
Daotin
2018/08/31
2K0
js 水平轮播和透明度轮播的实现
主要思路:透明度轮播相对水平轮播的实现更简单一点。首先在HTML里建一个绝对定位的div盒子,然后在这个div盒子里用列表的方式插入四张图片,设置为绝对定位,并且块排列;接着在js中实现动态效果,透明轮播的实现就是将前一张图片的透明度设置为0,需要轮播的那一张图片的透明度设置为1,在js的对象中实现,最后实现手动点击轮播,子弹轮播,自动轮播。
不愿意做鱼的小鲸鱼
2022/08/24
13K0
js 水平轮播和透明度轮播的实现
JS-使用定时器实现焦点图
需求 定时器每秒切换一张图片以及图片上的内容 效果 代码 <!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>焦点图</title>
且陶陶
2023/04/12
7.2K0
JS-使用定时器实现焦点图
JavaScript——动画函数封装
回调函数原理:函数可以作为一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。
岳泽以
2022/10/26
1.1K0
JavaScript——动画函数封装
jQuery基础--jQuery特殊属性操作
区别:html方法会识别html标签,text方法会那内容直接当成字符串,并不会识别html标签。
eadela
2019/09/29
2.2K0
WEB前端期末实训大作业---我的家乡
该网页从宣传自己的家乡出发,设计到家乡的旅游观光,生态环保,现代农业,人文精神,总共设计了五个页面,主要使用的布局房市flex布局,运用最基本的HTML内容。
用户10950404
2024/07/30
1960
WEB前端期末实训大作业---我的家乡
相关推荐
从零开始学 Web 之 BOM(三)offset,scroll,变速动画函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档