美文网首页
5.6 xuan 相片墙 js特效 创建li 添加img这里可以

5.6 xuan 相片墙 js特效 创建li 添加img这里可以

作者: 康轩 | 来源:发表于2017-06-05 17:12 被阅读0次

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title> 轩照片墙的特效 让开始加载时动画</title>
    <style>
    {
    margin: 0;
    padding: 0;
    border:none;
    }
    body,html,ul {
    width:100%;
    height:100%;
    }
    #oUl{
    position: relative;
    }
    #oUl li{
    width: 250px;
    height: 360px;
    box-shadow: 0 0 10px #000;
    position: absolute;
    /
    top:0;/
    /
    left: 0;*/
    list-style: none;
    transform: rotateZ(220deg);
    transition:all 1s;
    background: #fff;

            /*样式就只能走到这里了想让它实现随机的排版就用js吧*/
        }
        #oUl .cur{
            position: absolute;
            top:50%!important;
            left:50%!important;
            /*background: red;*/
            transform: rotateZ(0deg) translate(-50%,-50%) scale(1.3)!important;
            z-index: 999;
        }
        img{
            width:100%;
            /*background-size: 100% 100%;*/
        }
    </style>
    <style></style>
    

    </head>
    <body>
    <ul id="oUl">










    </ul>
    <script src="js/Underscore-min.js"></script>
    <script>
    //让图片在刚刷新加载的时候 添加动画 其实就是先分别 创建 li 与 img 并添加他们
    //然后在单独for 遍历 li 来设置每个 li 的不同位置 不同角度 这样他们在刷新加载的时候才有动画
    window.onload = function (){
    //1 找对象
    var oUl =document.getElementById('oUl');
    //3.1首先 由最大的事件源创建 li 但是前提是先遍历 li 的个数 这里我们给它 10 就是10张图片啦
    for (var i = 0; i < 20; i++) {
    //3,2创建li
    var li = document.createElement('li');
    oUl.appendChild(li);//添加 li 完成以后就 在css 那里设置 li 的样式
    // 5 . 创建图片
    var pic = document.createElement('img');

            // 5.1 给li 添加 pic
            li.appendChild(pic);
            pic.src = 'xuan/xuan'+(i+1)+'.jpg'; //这里添加的 图片的 张数 要注意了
        }
        //2 .设置屏幕的width height
        var screenW = document.documentElement.clientWidth - 250;//水平方向的宽
        var screenH = document.documentElement.clientHeight - 360;
        // 4 当 li 被点击的时候 所发生的事件
        // 首先获取 lis
        var lis = oUl.children;
        //for 遍历
        for (var i = 0; i < lis.length; i++) {
            var li = lis[i];
            // 3.3给li设置 不同的位置
            // 3.3.1先给li 设置不同的角度
            var radoRace = _.random(0,360);
           // { //li.style.transform =' rotate(deg)';//先这样写万一写错}
            li.style.transform =' rotate('+ radoRace +'deg)';
            // 3.3.2给li 设置在屏幕上的不同的位置 就是 X Y  那么就考虑 屏幕的宽高了
            var randomX = _.random(0,screenW);//水平方向的坐标 就是指 X 可以是 0 到 360 deg 任意的数字
            var randomY = _.random(0,screenH);//注意 他们是不一样的效果 值在小括号里面的图片随机占整个屏
            //  var randomX =_.random()*screenW;//这种方式的图片都缩在左上角,但是被点击的那一张也还是实现居中的
            // var randomY =_.random()*screenH; // 注意观察 值写在外面与写在外面的不同
            //3.3.3赋值给 每个 li
            li.style.left = randomX + 'px';
            li.style.top = randomY + 'px';
           // 被点击的 那个 li 单独设置 类名(这些位移 都是在css 那里设置  )
          li.onclick = function () {//哪里个 li 被点击就触发
          // alert(0);
              for (var i = 0; i < lis.length; i++) {
                      lis[i].className = '';
              }
              this.className ='cur';
         //  console.log(this);
          }
        }
    }
    

    </script>
    </body>
    </html>

    相关文章

      网友评论

          本文标题:5.6 xuan 相片墙 js特效 创建li 添加img这里可以

          本文链接:https://www.haomeiwen.com/subject/tvurfxtx.html