zoukankan      html  css  js  c++  java
  • 百度前端技术学院之相册拼图布局

    html代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link type="text/css" rel="stylesheet" href="相框拼图布局外部样式.css">
    </head>
    <body>
    <input type="button" class="button" value="布局1">
    <input type="button" class="button" value="布局2">
    <input type="button" class="button" value="布局3">
    <input type="button" class="button" value="布局4">
    <input type="button" class="button" value="布局5">
    <input type="button" class="button" value="布局6">
    <script type="text/javascript" src="相框拼图布局外部js.js"></script>
    <script type="text/javascript">
        window.onload=function(){
            var Btn=document.getElementsByClassName("button");
            for(var i=0;i<6;i++){
                Btn[i].onclick=function(ev){
                    return function() {
                        alert(ev);
                        layout("400px", "400px",ev + 1, "imgs/Lighthouse.jpg", "imgs/Desert.jpg", "imgs/Penguins.jpg", "imgs/Tulips.jpg", "imgs/Jellyfish.jpg", "imgs/Hydrangeas.jpg");
                    }
                    }(i);
            }
    
            //layout函数的参数
            //layout(width,height,picnumber,url1,url2,url3,url4......)
            //输入全部的url,然后写明数量来表明要显示几张图片
    
        }
    </script>
    </body>
    </html>

    css:代码

    .album{
        border: 1px solid black;
        margin: 0 auto;
        position: relative;
    }
    .img1{
        position: absolute;
        width: 100%;
        height: 100%;
    }
    .al2_img1,.al2_img2,
    .al3_img1,.al3_img2,.al3_img3,
    .al4_img1,.al4_img2,.al4_img3,.al4_img4,
    .al5_img1,.al5_img2,.al5_img3,.al5_img4,.al5_img5,
    .al6_img1,.al6_img2,.al6_img3,.al6_img4,.al6_img5,.al6_img6
    
    {
        width: 100%;
        height: 100%;
        position: absolute;
    }
    .al2_img1{
        -moz-clip-path:polygon(0 0, 67% 0, 33% 100%, 0% 100%); ;
        -ms-clip-path:polygon(0 0, 67% 0, 33% 100%, 0% 100%); ;
        -webkit-clip-path: polygon(0 0, 67% 0, 33% 100%, 0% 100%);
        clip-path: polygon(0 0, 67% 0, 33% 100%, 0% 100%);
    }
    .al2_img2{
        -moz-clip-path:polygon(67% 0, 100% 0, 100% 100%, 33% 100%) ;
        -ms-clip-path:polygon(67% 0, 100% 0, 100% 100%, 33% 100%) ;
        -webkit-clip-path: polygon(67% 0, 100% 0, 100% 100%, 33% 100%);
        clip-path: polygon(67% 0, 100% 0, 100% 100%, 33% 100%);
    }
    .al3_img2{
        top:0;
        right: 0;
    }
    .al3_img3{
        bottom: 0;
        right: 0;
    }
    .al4_img1{
        top: 0;
        left: 0;
    }
    .al4_img2{
        top: 0;
        right: 0;
    }
    .al4_img3{
        bottom: 0;
        right: 0;
    }
    .al4_img4{
        bottom: 0;
        left: 0;
    }
    .al5_img1{
        top: 0;
        left: 0;
    }
    .al5_img2{
        top: 0;
        right: 0;
    }
    .al5_img3{
        bottom:0;
        right: 0;
    }
    .al5_img4{
        bottom: 0;
    }
    .al5_img5{
        bottom: 0;
        left: 0;
    }
    .al6_img1{
        top: 0;
        left: 0;
    }
    .al6_img2{
        top: 0;
        right: 0;
    }
    .al6_img3{
        right: 0;
    }
    .al6_img4{
        right: 0;
        bottom: 0;
    }
    .al6_img5{
        bottom: 0;
    }
    .al6_img6{
        bottom: 0;
        left: 0;
    }

    javascript:

    function     layout(width,height,picnumber,url1,url2,url3,url4,url5,url6){
        var Obody=document.getElementsByTagName("body")[0];
        var Odiv=document.createElement("div");
        Odiv.className="album";
        Odiv.style.width=width;
        Odiv.style.height=height;
        Obody.appendChild(Odiv);
        function  getStyle(element,attr){
            if(getComputedStyle){
                var style=document.defaultView.getComputedStyle(element,null);
                var comstyle=style[attr];
            }
            else{
                var style=element.currentStyle;
                comstyle=style[attr];
            }
            return parseInt(comstyle);
        }
        if(picnumber==1) {
            for (var i = 0; i < picnumber; i++) {
                var img = document.createElement("img");
                img.className = "img1";
                img.setAttribute("src", url1);
                Odiv.appendChild(img);
            }
        }
        if(picnumber==2){
            for (var i = 0; i < picnumber; i++) {
                img = document.createElement("img");
                img.setAttribute("id","img"+i);
                if(i==0){
                    img.setAttribute("src", url1);
                    img.className="al2_img1";
                }
                if(i==1){
                    img.setAttribute("src", url2);
                    img.className="al2_img2";
                }
                Odiv.appendChild(img);
            }
        }
        if(picnumber==3){
            for(var i=0;i<picnumber;i++){
                img=document.createElement("img");
                if(i==0){
                    img.setAttribute("src", url1);
                    img.className="al3_img1";
                    img.style.height=getStyle(Odiv,"height")+"px";
                    img.style.width=getStyle(Odiv,"width")-(getStyle(Odiv,"height")/2)+"px";
                }
                if(i==1){
                    img.setAttribute("src",url2);
                    img.className="al3_img2";
                    img.style.width=getStyle(Odiv,"height")/2+"px";
                    img.style.height=getStyle(Odiv,"height")/2+"px";
                }
                if(i==2){
                    img.setAttribute("src",url3);
                    img.className="al3_img3";
                    img.style.width=getStyle(Odiv,"height")/2+"px";
                    img.style.height=getStyle(Odiv,"height")/2+"px";
    
                }
                Odiv.appendChild(img);
            }
    
        }
        if(picnumber==4) {
            for (var i = 0; i < picnumber; i++) {
                img = document.createElement("img");
                if (i == 0) {
                    img.setAttribute("src", url1);
                    img.className = "al4_img1";
                    img.style.width = getStyle(Odiv, "width") / 2 + "px";
                    img.style.height = getStyle(Odiv, "height") / 2 + "px";
                }
                if (i == 1) {
                    img.setAttribute("src", url2);
                    img.className = "al4_img2";
                    img.style.width = getStyle(Odiv, "width") / 2 + "px";
                    img.style.height = getStyle(Odiv, "height") / 2 + "px";
    
                }
                if (i == 2) {
                    img.setAttribute("src", url3);
                    img.className = "al4_img3";
                    img.style.width = getStyle(Odiv, "width") / 2 + "px";
                    img.style.height = getStyle(Odiv, "height") / 2 + "px";
    
                }
                if (i == 3) {
                    img.setAttribute("src", url4);
                    img.className = "al4_img4";
                    img.style.width = getStyle(Odiv, "width") / 2 + "px";
                    img.style.height = getStyle(Odiv, "height") / 2 + "px";
    
                }
                Odiv.appendChild(img);
            }
    
        }
        if(picnumber==5) {
            for (var i = 0; i < picnumber; i++) {
                img = document.createElement("img");
                if (i == 0) {
                    img.setAttribute("src", url1);
                    img.className = "al5_img1";
                    img.style.width = 2 * getStyle(Odiv, "width") / 3 + "px";
                    img.style.height = 2 * getStyle(Odiv, "height") / 3 + "px";
                }
                if (i == 1) {
                    img.setAttribute("src", url2);
                    img.className = "al5_img2";
                    img.style.width = getStyle(Odiv, "width") / 3 + "px";
                    img.style.height = getStyle(Odiv, "width") / 3 + "px";
                }
                if (i == 2) {
                    img.setAttribute("src", url3);
                    img.className = "al5_img3";
                    img.style.width = getStyle(Odiv, "width") / 3 + "px";
                    img.style.height = getStyle(Odiv, "height") - (getStyle(Odiv, "width") / 3) + "px";
                }
                if (i == 3) {
                    img.setAttribute("src", url4);
                    img.className = "al5_img4";
                    img.style.width = getStyle(Odiv, "width") / 3 + "px";
                    img.style.height = getStyle(Odiv, "height") / 3 + "px";
                    img.style.left = getStyle(Odiv, "width") / 3 + "px";
                }
                if (i == 4) {
                    img.setAttribute("src", url5);
                    img.className = "al5_img5";
                    img.style.width = getStyle(Odiv, "width") / 3 + "px";
                    img.style.height = getStyle(Odiv, "height") / 3 + "px";
                }
    
                Odiv.appendChild(img);
    
            }
        }
        if(picnumber==6){
            for(var i=0;i<picnumber;i++){
                img=document.createElement("img");
                if(i==0){
                    img.setAttribute("src",url1);
                    img.className="al6_img1";
                    img.style.width=2*getStyle(Odiv,"width")/3+"px";
                    img.style.height=2*getStyle(Odiv,"height")/3+"px";
                }
                if(i==1){
                    img.setAttribute("src",url2);
                    img.className="al6_img2";
                    img.style.width=getStyle(Odiv,"width")/3+"px";
                    img.style.height=getStyle(Odiv,"height")/3+"px";
                }
                if(i==2){
                    img.setAttribute("src",url3);
                    img.className="al6_img3";
                    img.style.width=getStyle(Odiv,"width")/3+"px";
                    img.style.height=getStyle(Odiv,"height")/3+"px";
                    img.style.top=getStyle(Odiv,"height")/3+"px";
                }
                if(i==3){
                    img.setAttribute("src",url4);
                    img.className="al6_img4";
                    img.style.width=getStyle(Odiv,"width")/3+"px";
                    img.style.height=getStyle(Odiv,"height")/3+"px";
                }
                if(i==4){
                    img.setAttribute("src",url5);
                    img.className="al6_img5";
                    img.style.width=getStyle(Odiv,"width")/3+"px";
                    img.style.height=getStyle(Odiv,"height")/3+"px";
                    img.style.left=getStyle(Odiv,"width")/3+"px";
                }
                if(i==5){
                    img.setAttribute("src",url6);
                    img.className="al6_img6";
                    img.style.width=getStyle(Odiv,"width")/3+"px";
                    img.style.height=getStyle(Odiv,"height")/3+"px";
                }
                Odiv.appendChild(img);
            }
    
        }
    
    
    }

    笔记:

    1,闭包问题在for循环中,

    例如一段代码如下:

    function createFunction (){
        var result=new Array();
        for(var i=0;i<10;i++){
                 result[i]=function(){
                   return i;
            }
         }
    return result; }

    实际上,每个函数都会返回10,因为当我们执行return i 语句时,在匿名函数内部没有找到变量 i ,在父级函数中查找变量 i ,此时变量 i 经过循环之后变成了10,解决办法:

    代码:

    function  createFunctions(){
               var  result=new Array();
               for(var i=0;i<10;i++){
                     result[i]=function(num){
                              return  function(){
                                        return num;
                                   }
                       }(i);
           }  
          return  result;
    }

    原理如下:

    在匿名函数内部,又创建了一个访问num的闭包,每次调用匿名函数时,由于参数num是按值传递的,每次调用num都会返回为i 的当前值

    方法二:

    利用es6 的let 和const关键字:

    例如:

    function createFunction (){
        var result=new Array();
        for(let i=0;i<10;i++){
                 result[i]=function(){
                   return i;
            }
         }
         return result;        
    }
            

    2,裁剪图片的clip-path方法:

    3,append();在IE下不兼容,要使用appendChild()实现兼容

    4,要获取元素的样式,利用getStyle(),获取属性,注意   element.style.height或element.style.width用于设置样式属性,通过style属性来获取的样式,不包含与外部样式表或嵌入样式表经层叠而来的样式

  • 相关阅读:
    readystatechange事件
    DOMContentLoaded事件
    beforeunload事件
    jieba
    模型评估
    机器学习术语
    决策树
    kafka
    即时通讯好文
    HTTP头的Expires与Cache-control
  • 原文地址:https://www.cnblogs.com/qianduangaoshou/p/6664391.html
Copyright © 2011-2022 走看看