实现一个水平切换的幻灯片

本部分是临摹网上的例子供学习用,也算不容易总结一下用到的知识点:1. 如何扩展jquery,制作插件 2. js中的定时控制以及取消定时 3.基于jquery标签生成 4.基于juqery的标签事件

<head>
    <title></title>
    <script type="text/javascript" src="jquery-1.7.1.js"></script>
    <script type="text/javascript" src="slideshow.js"></script>
</head>
<body>
    <div id="container">
    </div>
    <script>
        var pictures = [];
        for (var i = 1; i < 10; i++) {
            pictures.push(‘img/‘ + i + ‘.jpg‘);
        }
        var opt = {
            /*width*/
            Width: 130,
            /*height*/
            Height: 90,
            /*count of shows*/
            countOfShow: 3,
            /*timeInterval*/
            timeInterval: 3000,
            /*pictures*/
            pictures: pictures
        };//将要传递的参数定义
        $(‘#container‘).slide(opt);//我们将要扩展的方法
</script>
</body>
(function($) {
    $.extend($.fn, {//fn类似于命名空间
        slide:function(opt) {
            var picWidth=opt.Width,
            picHeight = opt.Height,
            pictures = opt.pictures,
            picLength = pictures.length,
            countOfShow = opt.countOfShow||2,
            interval=opt.timeInterval||3000;
            var $div = $(‘<div id="picFrame">‘).css(‘float‘, ‘left‘)
            .css(‘overflow‘, ‘hidden‘).css(‘white-space‘, ‘nowrap‘).css(‘margin‘, ‘0 10px‘); //定义图框样式
//通过jquery生成标签,以及对标签属性的设定
            $(pictures).each(function(idx, url) {
                if (idx != 0) {
                    $(‘<img>‘).attr(‘src‘, url).css(‘margin-left‘,‘10px‘).css(‘cursor‘, ‘pointer‘).appendTo($div);
                } else {
                    $(‘<img>‘).attr(‘src‘, url).css(‘cursor‘, ‘pointer‘).appendTo($div);
                }
            });
//jquery访问数组元素
            var leftArrow = $(‘<img style="float:left;top:15px;" src="img/left.png">‘),
            rightArrow =$(‘<img style="float:left;top:15px;" src="img/right.png">‘);
//通过jquery生成标签,以及对标签属性的设定
            $div.height(picHeight+5).width(picWidth*countOfShow+10*countOfShow-1);

            $(‘<div>‘).append(leftArrow).append($div).append(rightArrow).appendTo(this); /*有先后顺序;*/

            var unit = picWidth+ 10;
            var timerInterval, timerTimeout;
            rightArrow.css(‘opacity‘, 0.5);
            rightArrow.css(‘cursor‘, ‘‘);
--------------------------------------------------------------------------------------
            function goLeft() {
                console.log(‘Lb:‘ + $div[0].scrollLeft);
                if ($div[0].scrollLeft == (picLength - countOfShow) * unit) {
                    leftArrow.css(‘opacity‘, 0.5);
                    leftArrow.css(‘cursor‘, ‘‘);/*设置按钮失效*/
                }
                $div[0].scrollLeft += unit;
                console.log(‘La:‘ + $div[0].scrollLeft);
                rightArrow.css(‘opacity‘, ‘‘);
                rightArrow.css(‘cursor‘, ‘pointer‘);
            }

            function goRight() {
                console.log(‘goRight‘ + $div[0].scrollLeft);
                if ($div[0].scrollLeft <= 0) {
                    rightArrow.css(‘opacity‘, 0.5);
                    rightArrow.css(‘cursor‘, ‘‘);/*设置按钮失效*/
                }
                $div[0].scrollLeft -= unit;
                console.log(‘goRight‘ + $div[0].scrollLeft);
                leftArrow.css(‘opacity‘, ‘‘);
                leftArrow.css(‘cursor‘, ‘pointer‘);
            }---------------------------------------------------------- /*左右箭头图标*/
            leftArrow.click(function() {
                goLeft();
                stopAutoPlay();
            });

            rightArrow.click(function() {
                goRight();
                stopAutoPlay();
            });
            /*end*/
            $div.mouseover(function () {
                clearInterval(timerInterval);//清除事件
            });
            $div.mouseout(autoPlay);

            function autoPlay() {
                if (interval) {
                    clearInterval(timerInterval);
                }
                timerInterval = setInterval(function() {
                    if ($div[0].scrollLeft ==831) {
                          $div[0].scrollLeft = 0;
                          return;
                    }//如果第一幅图片已经到最右端,则还原初始位置

                    goLeft();
                }, interval);
            }
            function stopAutoPlay() {
                clearInterval(timerInterval);
//                if (timerTimeout) {
//                    clearTimeout(timerTimeout);
//                }
                //timerTimeout = setTimeout(autoPlay, interval);
            }

            autoPlay();
        }

});
})(jQuery);
时间: 2024-10-20 22:56:30

实现一个水平切换的幻灯片的相关文章

DB水平切换要点

分区健选择 数据应该如何拆分,按照什么纬度来拆分 节点路由 应用程序写死/客户端(TDDL,cobar-client)/中间层(cobar-server) 固定分配/动态分配/混合 分片数据均衡 某些分片访问比较频繁,跟业务类型相关 全局唯一键生成器 专门的应用接口 跨节点排序/分组/表关联 应用程序实现 多数据源事务处理/分布式事务 应用程序实现 数据库扩容/缩减 峰值和平时的量差别很大,淘宝双十一 分片工具 根据非分区键查找记录,表结构变更,多实例管理 固定分配: 分片的数据是预先分配好的,

写一个水平滑动的View

保持饥饿,保持愚蠢,我们对待事情本来应该就是这样的 接下来我要写一个水平滑动的自写义,实现效果 水平滑动我们有很多种实现方法,recyceryView,HorizontalScrollView都可以,在做过的项目中基本都会用到, 我会把它例出来,一一归位,学习本应该如此,总结,总结,总结!!! 1.自定义首先要extend一个View,实现里面的四个方法,当然第四个一般不会用到 写构造方法的时候要是有要求的 1.this(context,null); this(context, attrs,0)

用IOS做一个界面切换的效果(登录界面和注册界面和找回密码界面的切换)(用封装好的lable和textf创建界面)

创建一个类封装uitextfield和UIlabel (源代码.m文件) #import "TLView.h" @interface TLView () { UILabel *_desLabel;    //左边的lable UITextField *_textField;//右边的 } @end @implementation TLView //改写父类的初始化方法,处理相同的性能 - (id)initWithFrame:(CGRect)frame { self = [super i

Cocos2D-X学习笔记 3 从一个场景切换到还有一个场景

工厂方法一般写法 StartLayer * StartLayer::create() { StartLayer *sl = new StartLayer(); sl->init(); sl->autorelease(); return sl; } 也能够用CC的CCPlatformMacros.h文件中提供的宏 CREATE_FUNC 来替代上面一段代码 #define CREATE_FUNC(__TYPE__) \ static __TYPE__* create() \ { \ __TYPE

用bootstrap的tab插件做一个图层切换效果(感觉会误导淫们,大家当乐子看吧)

小伙伴们啊,我JS真的是个渣渣,所以总想要偷懒,于是为了实现效果就把tab插件给改了(各位大神轻拍啊,我是小白,很纯洁滴,小心脏也很脆弱)…… 最近做的项目为了考虑以后的移动设备兼容性,所以用了Bootstrap.首页有一个需要鼠标点击不一样的按钮固定位置图层内容变化的效果(我描述清楚了吗Orz……),如下图: 分别点击1,2,3,4按钮时现实对应的内容变化. 我就呵呵了,这个跟tab插件很类似啊~~不就是点按钮换图层吗.如果在别处找独立插件,我这记性的,项目js文件里早晚被我弄得乱七八糟我都不

iOS 中一个tabBarController 切换到另一个tabBarController的实现方法

iOS 中主tab(含有5个视图) 切换到次级tab(含有另外五个视图) 的使用方法: -(void)makeTabBarHidden:(BOOL)hide { if ( [self.rootTabBarController.view.subviews count] < 2 ) { return; } UIView *contentView; if ( [[self.rootTabBarController.view.subviews objectAtIndex:0] isKindOfClass

如何在react中实现一个table切换?

废话不说,直接贴代码,供新手参考 export default class TabComponent extends Component { constructor(props){ super(props); this.state = { }; } render(){ return ( <TabController> <div name="one"> 第一部分 </div> <div name="two"> 第二部分

移动端事件——移动端滑屏切换的幻灯片(一)

在我们开始用原声JS写移动端轮播前,我们先了解一些移动端的基础. touch事件.touchEvents对象.滑屏的思想与实现 移动端touch事件 touchstart touchmove touchend let box = document.querySelector("#box"); /* touchstart --> mousedown 手指触碰元素 touchmove --> mousemove 手指触碰元素之后,在屏幕中移动 touchend --> m

一个自动播放的幻灯片

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Through the Looking-Glass</title><style>*{ padding:0; margin:0;}#banner{  width:400px; height:300px; margin:100px auto; positio