• 界面实例--图片布局在前端


      图片布局在前端很多时候的时候因为图片本身大小长宽比例不同,想要布局得好看,需要注意几点问题,下面写一写怎么布局,主要讲的是<img>元素,需要自己定制形状的可以考虑canvas,前面有讲。

      先看看<img>默认布局的特点,<img>是行内元素,不设置大小的时候按图片原本大小显示,每个<img>之间有一个字的间隙,会换行。vertical-align的默认值是baseline。

      可以设置vertical-align或者设置img的宽高,设置img的宽和高有以下三种方法:

          • 设置宽,高度自适应,适合垂直布局
          • 设置高,宽度自适应,适合水平布局
          • 同时设置宽和高,会产生拉伸变形,不推荐

    1、水平布局

      百度图片采用的就是这个方法,设置图片的高。

      代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="layui/css/layui.css">
    <link rel="stylesheet" href="css/myscroll.css">
    <style>
        .image-container{
            width:90%;
            margin:0 auto;
            
        }
        .image-container>img{
            margin-top:10px;
            height:300px;
        }
    </style>
    </head>
    <body>
    <div class="image-container">
        <img src='img/1.jpg'/>
        <img src='img/2.jpg'/>
        <img src='img/3.jpg'/>
        <img src='img/4.jpg'/>
        <img src='img/5.jpg'/>
        <img src='img/6.png'/>
        <img src='img/10.png'/>
        <img src='img/9.png'/>
        <img src='img/8.png'/>
        <img src='img/7.png'/>
        <img src='img/11.png'/>
        
        <img src='img/7.png'/>
    </div>
    
    </body>
    </html>
    View Code

    2、垂直布局

    代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="layui/css/layui.css">
    <link rel="stylesheet" href="css/myscroll.css">
    <style>
        .image-container{
            width:90%;
            margin:0 auto;
            
        }
        .image-container>div{
            display:inline-block;
            width:30%;
            vertical-align:top;
        }
        .image-container>div>img{
            margin-top:10px;
            width:100%;
            
        }
    </style>
    </head>
    <body>
    <div class="image-container">
        <div>
        <img src='img/1.jpg'/>
        <img src='img/2.jpg'/>
        <img src='img/3.jpg'/>
        <img src='img/4.jpg'/>
        </div>
        <div>
        <img src='img/5.jpg'/>
        <img src='img/6.png'/>
        <img src='img/10.png'/>
        <img src='img/9.png'/>
        </div>
        <div>
        <img src='img/8.png'/>
        <img src='img/7.png'/>
        <img src='img/11.png'/>
        <img src='img/7.png'/>
        </div>
    </div>
    
    </body>
    </html>
    View Code

    3、鼠标悬浮在图片上面图片变大

      利用css的transform来进行设置,纯html+css就可以实现,不过img还是受限于外面的容器,如果外部的div有overflow:hidden;img就算放大也会被截掉一部分。下附完整代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <style>
    div{
        margin:10% auto;
    }
    div>img{
        cursor: pointer;/**/
        transition: all 0.6s;
    }
    div>img:hover{
        transform: scale(1.5);
    }
    </style>
    </head>
    <body>
    <div>
        <img src='img/10.png' width="300px" height="300px"/>
        <img src='img/9.png' width="300px" height="300px"/>
        <img src='img/8.png' width="300px" height="300px"/>
        <img src='img/7.png' width="300px" height="300px"/>
    </div>
    
    </body>
    </html>
    鼠标悬浮图片变大

    4、显示在一行之中进行滚动播放

    包括了hidden滚动条,另外设置滚动条件

    代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <style>
        .image-container{
            width:90%;
            height:285px;
            overflow:hidden;
            margin:100px auto;
            margin-bottom:0;
            
        }
        .image-container>.imgs{
            height:300px;
            width:100%;
            white-space: nowrap;/*强制不换行*/
            overflow-x:auto;
            overflow-y:hidden;
        }
        .image-container>.imgs>img{
            height:100%;
        }
        
        .command-container{
            width:90%;
            height:15px;
            margin:0 auto;
            text-align:center;
        }
        
        
        .command-container>.command-button{
            background:#009688;
            color:white;
            padding:10px;
            display:inline-block;
            width:50px;
            border-radius:5px;
        }
        .command-container>.command-button:hover{
            
            background:#119999;
            //background:#5FB878;
        }
        
    </style>
    </head>
    <body>
    <div class="image-container">
        <div class="imgs">
            <img src='img/1.jpg'/>
            <img src='img/2.jpg'/>
            <img src='img/3.jpg'/>
            <img src='img/4.jpg'/>
            <img src='img/5.jpg'/>
            <img src='img/6.png'/>
            <img src='img/10.png'/>
            <img src='img/9.png'/>
            <img src='img/8.png'/>
            <img src='img/7.png'/>
            <img src='img/11.png'/>
            <img src='img/7.png'/>
        </div>
    </div>
    <div class="command-container">
        <div class="command-button">上翻</div>
        <div class="command-button">下翻</div>
    </div>
    <script>
        window.onload=function(){
            var buttons = document.getElementsByClassName('command-button');
            var img = document.getElementsByClassName('imgs')[0];
            var container = document.getElementsByClassName('image-container')[0];
            buttons[0].addEventListener('click',function(){
                var left = container.offsetWidth*0.5;
                img.scrollLeft = img.scrollLeft-left;
                //console.log(img.scrollWidth);
                
            });
            buttons[1].addEventListener('click',function(){
                var left = container.offsetWidth;
                img.scrollLeft = img.scrollLeft+left;
                //console.log(img.scrollWidth);
                
            });
            
            
            
        }
    </script>
    
    </body>
    </html>
    View Code

     5、加一个图片懒加载的实现

    参考:https://www.jianshu.com/p/8e2a73638153

      事实上,会有一个问题,我不知道是我自己之前写的有问题或是别的什么原因。我发现一开始时懒加载根本没有实现,打开后台看所有图片都是在刷新界面时全部加载了,即使大部分图片相对不可见,后来我发现了问题。

      图片懒加载的实现原理是:1、将所有图片的src指向默认图片,那么一开始就只需要加载默认图片。2、根据图片自身的offsetTop,以及父元素的height、scrollTop判断是否有滑动到使得当前图片可见,有,则更改src,加载图片。3、既然这样,一开始,在滑动界面前需要加载一开始就可见区域的图片。

      我的问题出现在第三个,一开始所有图片的offsetTop都是0,反倒是offsetLeft有递增,当我滑动页面的时候一切则又变得正常了,所以我在尝试了一会决定设定一开始加载前10张照片,判断是否可见的操作在滑动页面后再做。但是我并没有找到原因,主页面的代码是很久之前写的,设置了主页面不可滑动,其他又设置了什么不太记得了。。。。。又或者是别的原因?

    当你深入了解,你就会发现世界如此广袤,而你对世界的了解则是如此浅薄,请永远保持谦卑的态度。
  • 相关阅读:
    SQL*Loader-951错误
    excel导出
    zookeeper常见bug
    可编辑表格
    tree的应用
    join
    hibernate manytomany 双向
    hibernate 多对多 单向关联
    hibernate 一对多(多对一)双向
    hibernate one2many
  • 原文地址:https://www.cnblogs.com/liwxmyself/p/10304965.html
Copyright © 2020-2023  润新知