zoukankan      html  css  js  c++  java
  • 九宫格布局

    有些网站图片展示都是几行几列排列,开发者可以用九宫格布局任意排列图片

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>九宫格布局</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            #wrap{
                position: relative;
                 100%;
            }
            .box{
                background: #fd7600;
                 480px;
                height: 270px;
            }
        </style>
    </head>
    <body>
    <button id="btn1">3列</button>
    <button id="btn2">4列</button>
    <button id="btn3">5列</button>
    <div id="wrap">
       <div class="box">
           <img src="../images/a1.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a2.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a3.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a4.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a5.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a6.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a7.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a8.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a9.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a10.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a11.jpg" alt="">
       </div>
       <div class="box">
           <img src="../images/a12.jpg" alt="">
       </div>
    </div>
    <script src="../myTool.js"></script>
    <script>
    /*
      通过子元素数量和自定义列数来确定每个子元素的坐标
    * 从rows:0行cols:0列开始,每一个格子(下标n从0开始(左标(rows,cols))的距离上边距离
    * top=(子盒子高度height)*rows+(边距y),左边的距离left=(子盒子width)*cols+(边距x)
    * */

    window.onload=function () {
        let wrap=myTool.$("wrap")
        myTool.$("btn1").onclick=function () {
            j_flex(3,wrap)
        }
       myTool.$("btn2").onclick=function () {
           j_flex(4,wrap)
       }
       myTool.$("btn3").onclick=function () {
           j_flex(5,wrap)
       }

    }

    function j_flex(allCols,parentNode) {   //allCols自定义列数
        let box=parentNode.children[0]
        //获取子元素宽高
        var boxw=box.offsetWidth
        var boxh=box.offsetHeight
        var marginxy=15
        //遍历子元素
        for(let i=0;i<parentNode.children.length;i++){
            //求出当前盒子所在的行和列
            let row=Math.floor(i/allCols)
            let col=Math.floor(i%allCols)
            //当前盒子的定位
            let currentbox=parentNode.children[i]
            currentbox.style.position="absolute"
            currentbox.style.left=col*(boxw+marginxy)+"px"
            currentbox.style.top=row*(boxh+marginxy)+"px"
        }


    }

    </script>
    </body>
    </html>
  • 相关阅读:
    html实现虚线分隔线3例
    sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件
    在Repeater中添加runat="server"的div,并控制
    Oracle中实现自增长列(转)
    SQL中按月进行分组(转)
    复制到剪切板js代码(转)
    如何使 Menu控件的链接打开指定的框架页(转)
    RadioButtonList限制每行"项"的个数
    Repeater_ItemDataBound 中用字段名获取值
    IIS7.0下配置Asp项目
  • 原文地址:https://www.cnblogs.com/wywd/p/13155269.html
Copyright © 2011-2022 走看看