前端学习day09:js第四天

京东顶部栏,点击消失:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>

    <style>
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
        .topBox {
            width: 100%;
            height: 80px;
            background-color: #231fee;
          /*  opacity: 1; !*!/初值*!*/
        }
        .topBox .adv-img {
            position: relative;
            width: 1190px;
            height: 80px;
            margin: 0 auto;
            background: url("images/jdTop.jpg") no-repeat  0px 0px;
            /*调整背景的尺寸  cover 铺满 */
            background-size: cover;
        }
        .adv-img span {
            position: absolute;
            right: 0px;
            top:0;
            width: 30px;
            height: 30px;
            background: rgba(45,45,45,.3);
            color: #fff;
            line-height: 30px;
            text-align: center;
        }
    </style>
</head>
<body>
<div class="topBox" style="opacity: 1">
    <!--javascript:; 阻止a的默认跳转-->
    <a href="javascript:;">
        <div class="adv-img"  >
            <span> X </span>
        </div>
    </a>
</div>
<script src="获取元素.js"></script>
<script>
//1:先获取元素  点击关闭按钮  大盒子
    var topBox = my$('.topBox')
    var close = my$('.adv-img span')
    console.log(topBox ,close)
    //2:点击关闭按钮 让大盒子隐藏
    close.onclick = function () {
        //3:利用循环去减透明度  while
      /*  console.log(topBox.style.opacity);   第一 : 对象.style.属性名 只能获取行内样式 */
        console.log(topBox.style.opacity) //字符串  灰色   转数值
        var op = topBox.style.opacity;
       /* while(op>0){
            op = op-0.1;
            console.log(op.toFixed(1))
            topBox.style.opacity = 'op.toFixed(1)'
        }*/
       //定时器'
        var timer = setInterval(function () {
            op = op-0.1;
            console.log(op)
            topBox.style.opacity = op ;
            if(op<=0){
                clearInterval(timer)
                topBox.style.display = 'none';
            }
        },100)
    }
</script>
</body>
</html>

定时器:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>
</head>
<body>
<script>
    //1:永久定时  返回 定时器标识  整数
    //window.setInterval(function(){
    //  每隔多长时间执行的代码
    // }, 1000(ms))
    //2: 一次性定时  返回 定时器标识 整数
    /*
    * setTimeout(function(){1s之后执行一次},1000)
    */
    var i =0;
  /* var timer1 =  window.setInterval(function () {
        i++;
        console.log(i)
        if(i===10){
            //清除定时器  clearInterval(标识)
            clearInterval(timer1)
        }
    },1000)
*/
    var timer2 = window.setTimeout(function () {
        console.log('我是一次性定时器 ,执行一次')
        //clearTimeout(timer2)
    },2000)
 /*   var timer2 =  window.setInterval(function () {
        i++;
        console.log(i)
        if(i===10){
            //清除定时器  clearInterval(标识)
        }
    },1000)*/
</script>
</body>
</html>

节点添加操作:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>
    <!--<link rel="stylesheet" href="1.css">-->
    <!--<link rel="stylesheet" href="1.css">-->
    <!--<link rel="stylesheet" href="1.css">-->
    <!--<link rel="stylesheet" href="1.css">-->
    <!--<link rel="stylesheet" href="1.css">-->
    <!--<link rel="stylesheet" href="1.css">-->
    <!--<link rel="stylesheet" href="1.css">-->
</head>
<body>
<button id="btn">点击创建a标签</button>
<div class="father">
</div>
<script src="获取元素.js"></script>
<script>
    /*入口函数  目的  保障静态资源加载 完毕   只要加载完毕 这个回调函数就触发了*/
window.onload = function () {
    // js 写到{}里面
    var btn = my$('#btn')
    var father = my$('.father')
    // document.createElement('div')
    //创建出来一个标签而已
    var obj = document.createElement('a')
    //添加文本
  /*  obj.innerText = '百度'*/
    //创建文本节点
    var text = document.createTextNode('百度')
    //文本节点追加到a标签身上
    obj.appendChild(text);
    //设置默认属性  .  setAttribute()
    obj.href = 'http://baidu.com'
    //最后在把完整a标签挂接到树上
    father.appendChild(obj)
    console.log(obj)
}
</script>
</body>
</html>

插入节点:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>
</head>
<body>
<button id="btn">删除节点</button>
<div class="fa">
    <span class="gege"></span>
    <!--<p></p>-->
    <span class="last"></span>
</div>
<script src="获取元素.js"></script>
<script>
    //插入节点  兄弟关系  之前  之后
    var myp = document.createElement('p')
    myp.innerText = '我是p元素'
    //起了类名
    myp.setAttribute('class','myp')
//insertBefore(创建的节点,参考节点)
    my$('.fa').insertBefore(myp,my$('.last'));
    my$('#btn').onclick = function () {
        //移除元素 父元素.removeChild('子元素')
        my$('.fa').removeChild( my$('.myp'))
    }
</script>
</body>
</html>

省市联动:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>
</head>
<body>
<select name="province"  id="province" >  <!--// province:0 -->
    <option value="0">北京</option>
    <option value="1">河南省</option>
    <option value="2">河北省</option>
    <option value="3">广东省</option>
</select>
<select name="city" id="city">
    //不能提前写好
</select>
<script src="获取元素.js"></script>
<script>
window.onload = function () {
    //1:下拉列表改变  onchange 给你要改变那个列表加
    //2:数据  城市数组
    var str = ''; //空串
    var cities = [['朝阳区','海淀区','大兴区'],['洛阳市','开封市','郑州市'],['张家口市','石家庄市','保定市'],
        ['东莞市','珠海市','深圳市']   ];
    my$('#province').onchange = function () {
        //在改变之后  str清空
        str = '';
        //1:遍历对应的市   ---文字
        /*得到被选中的元素  检测那个元素有selected属性 */
        for(var i =0;i<this.options.length;i++){
            if(this.options[i].selected){
                var index = this.options[i].value
            }
        }
        console.log(index)
        for(var i = 0;i<cities.length;i++){
            if(i == index ){ //?
               var cs =  cities[index]
              /* console.log(cities[index])*/
                //遍历每一个城市 装到option标签里
                for(var j= 0;j<cities[index].length;j++){
                    //拼接字符串
                    str+="<option value="+ j+">"+ cities[index][j]+" </option>"
                }
                console.log(str)
            }
        }
        my$('#city').innerHTML = str;
        //2:option标签
        //3:追加到name=city的下拉列表里
    }
    //初始化函数
    function init() {
        //创建元素法  createElement('option')
        for(var i =0;i<cities[0].length;i++){
            var o = document.createElement('option')
            o.innerText = cities[0][i];
            my$('#city').appendChild(o)
        }
    }
    init();
}
</script>
</body>
</html>

轮播图:

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
<!--相框-->
<div class="Photo-frame">
    <!--照片条-->
    <ul class="picBox clearFix" style="left: 0">
        <li><a href="#"><img src="images/zhutu1.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/zhutu3.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/zhutu4.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/zhutu5.jpg" alt=""></a></li>
        <li><a href="#"><img src="images/zhutu6.jpg" alt=""></a></li>
    </ul>
    <!--指示  小圆圈-->
    <div class="circles">
        <span in="0" style=" box-shadow: 0 0 10px 5px rgba(255,255,255,.7)  inset"></span>
        <span in="1"></span>
        <span in="2"></span>
        <span in="3"></span>
        <span in="4"></span>
    </div>
    <!--箭头  next 右箭头-->
    <div class="arrow" id="next"> > </div>
    <!--左箭头-->
    <div class="arrow" id="prev"> < </div>
</div>
<!--不能互换顺序-->
<script src="../获取元素.js"></script>
<script src="index.js"></script>
</body>
</html>

css:

@charset "UTF-8";

* {
    padding: 0;
    margin: 0;

}
img {
    display: block; /*转换块级元素*/
}
ul li {
    list-style: none;
}
/*清浮动的衣服*/
.clearFix::after,.clearFix::before {
    content: '';
    display: block;
    line-height: 0;
    clear: both;

}
.Photo-frame {
    position: relative;
    width: 590px;
    height: 470px;
    border: 1px solid #ccc;
    margin: 100px auto;
    /*溢出隐藏*/
    overflow: hidden;
}
/*照片条*/
.picBox {
    /*定位*/
    position: absolute;
    width: 2950px;
    height: 470px;

    top:0;

}
.picBox > li {
    float: left;

}
.arrow {
    position: absolute;
    top:50%;
    margin-top: -20px;
    width: 24px;
    height: 40px;
    background-color: rgba(45,45,45,.3);
    color: #fff;
    line-height: 40px;
    text-align: center;
    font-size: 25px;
    cursor: pointer;/*鼠标小手样式*/

}
#next {
    right: 0;
}
#prev {
    left: 0;
}
.arrow:hover {
    background-color: rgba(45,45,45,.7);
}
/*小圆点*/
.circles {
    position: absolute;
    bottom:20px;
    left: 50%;
    margin-left:-76px ;
    height: auto;

}
.circles span {
    display: inline-block;
    box-sizing: border-box;
    width: 14px;
    height: 14px;
    border: 3px solid rgba(255,255,255,.3);
    border-radius: 50%;
    margin-left: 10px;
    cursor: pointer;
    background-color: darkblue;


}
/*
.circles span:hover {
    box-shadow: 0 0 10px 5px rgba(255,255,255,.7)  inset;
}*/

js:

window.onload = function () {

    // ☆☆☆☆☆  如果你是先加后判断 判断条件应该是下标+1
    //1:手动播放
    /*

    * (1)当用户点击右箭头  下一张    照片盒子向左移动   left-=590px
    * (2)当用户点击左箭头  上一张    照片盒子向右移动
    * left+=590px
    *
    * */
    //相框
    var Photo_frame = my$('.Photo-frame')
    //照片盒子
    var picBox = my$('.picBox')
    //箭头
    var next = my$('#next') //右
    var prev = my$('#prev') //左
    var circles = my$('.circles')
    var circlesSpans = my$All('.circles span') //bug  my$() ===>my$All()
    console.log(circlesSpans)
    var index  = 0 ;// 标记当前有光圈的小圆点的下标


    /***********照片盒子运动函数  picBoxAnimation()
     * 参数:偏移量 +590 向右 上一张
     *            -590 向左  下一张
     * 返回值 无
     * ************/

   function picBoxAnimation(offset){
        var leftValue = parseInt(picBox.style.left); //数值类型
        var newLeft =  leftValue + offset    //照片盒子要运动的距离
        if(newLeft < -2360 ){ //向左走的趋势 当前已经展示的是第5张

           newLeft = 0;
        }
        if(newLeft > 0 ){
            newLeft = -2360

        }

        picBox.style.left = newLeft + 'px';
        console.log(picBox.style.left)  //只能获取行内样式
    }

    //右箭头
    next.onclick = function () {
       picBoxAnimation(-590)
        //右箭头朝右移动 加+
        index++; //4
        if(index === 5){
           index = 0;
        }

        buttonShow();


    }
    prev.onclick = function () {
        picBoxAnimation(+590)
        index--;
        if(index === -1){
            index = 4;
        }



        buttonShow();


    }

    //2:自动播放  定时器
    function play() {
          timer = setInterval(function () {
            next.onclick();

        },1000)
    }
    play();

   //s鼠标移入不动 清定时器
    Photo_frame.onmouseover = function () {

        clearInterval(timer) //清除定时器 停止自动轮播
    }


    //鼠标移开 重新自动轮播 play()
    Photo_frame.onmouseout= function () {

        play()
    }


/*********小圆点
 * 1:随着图片移动
 * 2:鼠标切换相应(自定义属性 )图片
 * **********/

//小圆点移动函数  buttonShow()  参数 无 返回值 无


    function  buttonShow() {

        for(var i =0;i<circlesSpans.length ;i++){

            circlesSpans[i].style.boxShadow = '';//清除样式


        }
        circlesSpans[index].style.boxShadow = "0 0 10px 5px rgba(255,255,255,.7)  inset"


    }

    //鼠标移入哪个小圆圈 哪张图就显示

    //图片盒子运动偏移量 = (旧下标 index -新下标 )*590

    for(var i =0;i<circlesSpans.length ;i++){
        //给小圆圈绑定鼠标移入事件
        circlesSpans[i].onmouseover= function () {

            //获取当前鼠标移入的那个小圆圈的下标 ===》 新下标
            var newIndex = this.getAttribute('in')

            console.log(newIndex)
            //根据产生的新下标和旧下标的差的到了照片移动的偏移量
            var currentOffset = (index-newIndex)*590
            //调用运动函数 ===》图片已经切换
            picBoxAnimation(currentOffset)
            //新旧更替 旧下标保存新下标
            index = newIndex ;
            //调用小圆圈展示的函数 为什么在这调用? 能不能拿到前面? 为什么?

            buttonShow()
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43800846/article/details/89002637