javascript实例学习之八——无缝切换效果

无缝切换在网站的很多地方都有涉及,比如轮播图等。

基本思路:

1)将可视窗当前的元素复制,依次添加为ul中的子元素

2)改变ul整体的left取值(负的窗口值),动画缓动至想要的位置

3)将原视窗(已被复制)的各个li删除

4)将ul的left取值重新调整为0

实现的html代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
    <style>
        *{margin:0;padding: 0;box-sizing:border-box;}
        div{width:480px;height:150px;border:5px solid #000; margin-left:300px;   position: relative;}
        ul{  overflow: hidden; position: absolute; left:0 ;}
        ul li{width:150px; height:150px; background:blue;float:left;margin-right:10px;list-style: none; color:white; font-size: 34px;text-align: center;}
    </style>
</head>

<body>
    <div id="div1">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
    </div>
    <button id="btn">切换</button>

    <script src="./commonJs/tool.js"></script>
    <script src="./commonJs/base.js"></script>
    <script src="./usualEffects/js/mySwitch.js"></script>

</body>

</html>

无缝切换html代码

js代码:

$(function() {
    var oUl = document.getElementsByTagName(‘ul‘)[0];
    var aLis = document.getElementsByTagName(‘li‘);
    var oneSize = aLis[0].offsetWidth + 10;
    var showNum = 3;
    var showWidth = showNum * oneSize;
    var btn = document.getElementById(‘btn‘);
    var flag = true;

    function setUlWidth() {
        var sumWidth = aLis.length * oneSize;
        console.log(‘sumWidth:‘ + sumWidth);
        oUl.style.width = sumWidth + ‘px‘;
    }
    setUlWidth();
    btn.addEventListener(‘click‘, function() {
        //为了防止动画累加,设置flag参数,只有当上次动画结束之后,才可能开始下一次动画
        if (flag) {
            flag=false;
            for (var i = 0; i < showNum; i++) {
                //将前面showNum个元素复制,粘贴到列表后面
                var cloneNode = aLis[i].cloneNode(true);
                oUl.appendChild(cloneNode);
                setUlWidth();
            }
            $(oUl).animate({ ‘left‘: -showWidth + ‘px‘ }, function() {
                //动画结束之后的回调
                //删除添加的元素
                for (var k = 0; k < showNum; k++) {
                    this.removeChild(aLis[0]);
                }
                //将ul的left值复原
                this.style.left = 0;
                flag=true;
            });
        }
    }, false);

});

无缝切换js代码

时间: 2024-10-17 11:55:33

javascript实例学习之八——无缝切换效果的相关文章

JavaScript实现多栏目切换效果

效果: 代码: <!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>JavaScript实现多栏目切换效果</title> <style> .news_wrap { width: 380px; height: 266px; fl

javascript马赛克遮罩图片切换效果:XMosaic.js(转)

新鲜出炉的javascript图片切换特效,实现的是马赛克遮罩切换.在flash里,好实现遮罩动画很简单,不过JS实现起来就有些困难了. XMosaic.js,与XScroll.js和XScroll2.js一样,都是用来制作单张图片切换特效的javascript类,不过,迄今为止XMosaic.js实现的特效是最炫的,炫到我以后很长一段时间都不用再写图片切换类了. XMosaic.js,马赛克图片切换特效示例页 XMosaic.js的使用方法请查看示例页源代码.其中html结构与一般图片切换的h

使用javascript实现图片上下切换效果并且实现顺序循环播放

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"&g

无缝切换效果

代码地址:https://github.com/peng666/blogs/tree/gh-pages/turn 在线测试地址:http://peng666.github.io/blogs/turn/

[JS]图片自动切换效果(学习笔记)

上次在下载的网页中看到 javascript实现图片自动切换效果: <style text="text/css"> /*图片滚动栏*/.container, .container * {    margin: 0;    padding: 0;}.container {    width: 1005px;    height: 395px;    float: right;    overflow: hidden;    position: relative;    rig

JavaScript打造无缝切换

原文摘自我的前端博客,欢迎大家来访问 http://hacke2.github.io/ 起因 一年前写管理学院的时候,那时候做首页有一个幻灯片,由于之前没交流好,CL写的静态页面幻灯片图片是在背景里,让我用jq写, 当时就感觉特别啃爹,图片写在了css里..好坑爹,自己又懒得改,只能硬着头皮用jq写,一堆临时变量,如num++,各种奇葩,最后加了 个jq淡隐淡出的效果,就交差了,,代码如下:   function trim(s) { return s.replace(/^\s*/, ""

JavaScript - Tab切换效果

简单Tab切换效果 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&

[前端] html+css+javascript 实现选项卡切换效果

用html+css+js实现选项卡切换效果 使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 北京首现零首付楼盘 53万购东5环50平 京楼盘直降5000 中信府 公园楼王现房 家居: 40平出租屋大改造 美少女的混搭小窝 经典清新简欧爱家 90平老房焕发新生 新中式的酷色温情 66平撞色活泼家居 瓷砖就像选好老婆 卫生间烟道的设计 二手房: 通州豪华3居260万 二环稀缺2居

javascript小例子:實現四方向文本无缝滚动效果

实现一个文本无缝滚动的效果: <!DOCTYPE html> <!--[if lt IE 7 ]> <html lang="zh-CN" class="ie6"> <![endif]--> <!--[if IE 7 ]> <html lang="zh-CN" class="ie7"> <![endif]--> <!--[if IE 8 ]