11.1.wangyi 小结

一:css 样式注意点:left_span 和right_span与图片下面的span 公用一个parent
二:js部分:

  1. 遍历图片的张数 ,在这里动态创建footer_span inserBefore插入到第二个span中.同时给它们绑定类名,拿出oSpan.innerHTML 为下面的span的索引做准备的提供;
    2:设置出了第一张图片以外,其他的图片从新遍历 统一放在右边, left=parent.offsetWidth;
    3:遍历所有的 footer_box.children.(遍历所有的span包括 left_span,right_span)
    3.1 :通过类名 可以先判断点击的是right_span 与 left_span
    3.1.1:点击left_span 图片向右走 count-- .这里就是有三步 1:让当前的图片立即向右走 一个parent.offsetWidth; 2.让上一个来到左边-parent.offsetWidth;位置,等待动画触发.3:让当前对应的索引的图片 动画显示 left:0;
    4 :else :如果点击的都不是上面的两个 ,那么就是点击了这里 : 这里就拿上面原来创建span的索引 来 跟 (当前显示的索引)isNow 索引做对比 来判断是点击了相对于当前索引的左边还是右边;
    5:footer_span的排他思想就单独另外用一个函数,这样方便我们调用(因为它有三个地方的调用) 具体哪个调用的看代码吧, 在这里主要让你们注意的就是怎么用排他的遍历
    在这里我们遍历就 先排除 left_span 与 right_span 列子: for (var i =1; i < footer_box.children.length - 1; i++) ;然后让当前点击的绑定类名 .但是这里就注意 了 isNow + 1; 因为我们遍历的时候是从1 开始遍历故加1,footer_box.children[isNow+1].
    className = 'current cur'; 然后设置全部的为另外一个类 footer_box.children[i].className = 'current ';
    6:设置无限向左滚动 ,用到定时器
    7:onmouseover 的时候清除定时器 这样就停止动画 clearInterval(timer);
    8:onmouseout 的时候 开启定时器 timer=setInterval(autoPlay,1000);

代码如下:
<script src="js/MyFunc.js"></script>
<script>
function $(symId) {
return document.getElementById(symId);
}
window.onload = function () {
//找对象
var box = $('box');
var top_main = $('top_main');
var picS = top_main.children;

// var footer_box = box.children[1];
var footer_box = $('footer');

// var iSpan = footer_box.children;
var isNow = 0;//用来判断跳转的页数
//遍历图片
for (var i = 0; i < picS.length; i++) {
//有多少张图片就创建多少个span
// var pic = picS[i];
// pic = i;
//创建span
var oSpan = document.createElement('span');
// 添加类
oSpan.className = 'current';
//footer_box.appendChild(oSpan);
//把创建出来的span 添加到第二个
footer_box.insertBefore(oSpan, footer_box.children[1]);
//查看ospan 的索引 值 发现它是由大到小的. 那么我们就只能拿pics[i].lenght -i
// oSpan.innerHTML= i;
//在这里拿到span的索引
oSpan.innerHTML = picS.length - i;
}
//单独给 最下面的 第一个span (相对来说是第二个 同行来说是第一个)添加类
footer_box.children[1].className = 'current cur';//这行要写在外面不能写在上面的大括号里面
//除了第一张 其他的都给它从新排列
var box_w = box.offsetWidth;
for (var i = 1; i < picS.length; i++) {
picS[i].style.left = box_w + 'px';
}
//判断点击了哪里? 点击了以后让图片滚动 那么多个span的地方可以点击 那么只能遍历 判断了

    for (var i = 0; i < footer_box.children.length; i++) { //这里遍历的是 全部的span (包括左右两个小 箭头)

// mySpan[i].index = i;
//拿出单个span
var mySpan = footer_box.children[i];
mySpan.onmousedown = function () {
//alert(0);
if (this.className == 'lf') {//点击了左边 图片向右滚动
//让当前的页快速的向右移动
buffer(picS[isNow], {left: box_w});
isNow--;
// console.log(isNow);
//判断不给它小于0
if (isNow < 0) {
isNow = picS.length - 1;//这里的索引的长 是拿图片的总张数来判断.
}
//让上一张快速的来到左边 等待
picS[isNow].style.left = -box_w + 'px';

                //让上一张图片快速的显示在这里
                buffer(picS[isNow], {left: 0})
            } else if (this.className == 'rg') {//点击了右边
                //让当前的页快速的向左移动
                buffer(picS[isNow], {left: -box_w});
                isNow++;
                if (isNow > picS.length - 1) {//如果当前的跳转到第5张图片 (用图片的索引来判断
                    isNow = 0; //给它直接跳到第0 张
                }
                //让下一张快速的来到右边等待
                picS[isNow].style.left = box_w + 'px';
                //让对应索引的这一张动画向左移动 显示 那么此时 left为0
                buffer(picS[isNow], {left: 0})
            } else {//点击了脚下中间的某个span 那么 这里点击的群体个数就更多了 需要遍历
                //但是想想上面都遍历了一次大范围的了  这次遍历就将遍历缩小范围吧
                // 就是从第2个span 开始 到小于总数的1

// for (var i = 1; i < footer_box.children.length-1; i++) {
//在这里就拿到 横轴的 所有 span
// footer_box.children[i].className = 'current ';//让所有的为原来的

                // this.className = 'current cur';//让当前的单独却换
                // 但是这里两步就实现了 索引的却换而已 . 想了想 这里排他实现不应该放这里.
                // 我们应该把他另外放,然后好调用

                // 在这里我们应该是实现 点击哪个span 给它对应的图片的索引动画显示
                //但是我们要想知道我们点击的是当前的span的左边还是右边的话,
                // 我们必须另外保存一个变量 用来记录点击的是哪个

// // var mSpan = footer_box.children.length-1.[i];
// // mSpan.onmousedown = function () {
// alert(0);

                // var indexNew = 0;//用来判断将要点击的新的span


                var indexNew = this.innerHTML - 1;//因为上面我们获取到的span 的索引值从 1 开始 .而现在我们要的索引从0 开始

                if (indexNew > isNow) { //点击 了右边
                    //alert('点击了右边');
                    buffer(picS[isNow], {left: -box_w});
                    isNow = indexNew;
                    //让下一张快速的来到右边等待
                    picS[indexNew].style.left = box_w + 'px';
                    //让对应索引的这一张动画向左移动 显示 那么此时 left为0
                    buffer(picS[isNow], {left: 0})
                } else if (indexNew < isNow) {//点击了左边
                    // alert('点击了左边');
                    //让当前的页快速的向右移动
                    buffer(picS[isNow], {left: box_w});
                    isNow = indexNew;
                    //让上一张快速的来到左边 等待
                    picS[isNow].style.left = -box_w + 'px';
                    //让上一张图片快速的显示在这里
                    buffer(picS[isNow], {left: 0})
                }
            }
            //当span点击一触发就进行  当然这里也是设置了排除大小于号的span的触发
            update();//调用索引却换
        }
    }

    //更新索引
    function update() {
        for (var i =1; i < footer_box.children.length - 1; i++) {
            //在这里就拿到 横轴的 所有 span
            footer_box.children[i].className = 'current ';//让所有的为原来的 / 注意不能 - 1

            //this.className = 'current cur';//让当前的单独却换  但是这个方式 不能实现
            footer_box.children[isNow+1].className = 'current cur';//让当前的单独却换 , 不能不 + 1
            // 这里的位置可以写在当前遍历的外面
            console.log(footer_box.children[isNow+1]);
        }

// for (var i = 0; i < oSpan.innerHTML.length; i++) {//这里是不能直接遍历 oSpan.innerHTML
// oSpan.innerHTML[i].className = 'current';
// this.className = 'current cur';
// }
}
//设置无限轮播 给它无限的向左滚动
var timer = null;
timer = setInterval(autoPlay,1000);

    function autoPlay() {
        console.log('-------------');
        buffer(picS[isNow], {left: -box_w});
        isNow++;
        if (isNow>picS.length-1) {
                isNow = 0;
        }
        //让下一张快速的来到右边等待
        picS[isNow].style.left = box_w + 'px';
        //让对应索引的这一张动画向左移动 显示 那么此时 left为0
        buffer(picS[isNow], {left: 0});
        //让下面的span 条 也跟着跳转
        update();//调用索引却换
    }
    //当 鼠over 与out 时发生的事件
    box.onmouseover = function () {

// alert(0);
clearInterval(timer);
// console.log(clearInterval(timer));
};
box.onmouseout = function () {
// alert('lIK')
timer=setInterval(autoPlay,1000);
};
}
</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 完美代码 window.onload = function () {//1.获取标签var slider = do...
    康轩阅读 304评论 0 0
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,797评论 0 1
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,082评论 2 19
  • DOM DOM内容主要分为四部分: 什么是DOM和节点; 获取节点; 节点操作(3种); 属性操作(3种)。 什么...
    magic_pill阅读 753评论 0 1
  • 线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开启好几个下载通道。 首先我们先把tom...
    蛋蛋不哭阅读 444评论 0 0