• 缩略图不变形


    需求:图片按九宫格展示,图片展示其缩略图(不变形),点击可看大图。(本文暂时只讨论展示缩略图不变形的方案)图片要求有两点:1.缩略,2.不变形。需要同时实现这两点,也就是图片的width和height中较小者应该完全显示,较大的截取中间的部分。如下图是这样:
    而不是:

    分析:想要根据图片的宽高来判断如果截取,需要图片load之后,在load之前要保证九宫格样式不乱,所以我在图片外面包了一层div,对div限制宽度和高度,并overflow:hidden

    <div class="img-box">
    	<img :src="pic.src" @load="curPic($event)">
    </div>
    <div class="img-box">
    	<img :src="pic.src" @load="curPic($event)">
    </div>
    <div class="img-box">
    	<img :src="pic.src" @load="curPic($event)">
    </div>
    
    .img-box{
    	display: inline-block;
    	33.3%;
    	height:113px;
    	overflow:hidden;
    }
    
    curPic(e) {
    // 获取九宫格其中一格的宽高
    	const width = document.getElementsByClassName('img-box')[0].offsetWidth;
    	const height = document.getElementsByClassName('img-box')[0].offsetHeight;
    	// 获取图片的宽高
        const realWidth = e.target.offsetWidth;
        const realHeight = e.target.offsetHeight;
    
        if (realWidth > realHeight) {
        // 如果图片width大于height,就将height完全展示,width按比例减小
           e.target.style.width = `${realWidth * (height / realHeight)}px`;
        } else {
        // 如果图片height大于width,就将width完全展示,height按比例减小
           e.target.style.height = `${realHeight * (width / realWidth)}px`;
        }
    },
    
    

    经过以上缩小,效果如下图

    此时已经没变形了,但是展示的是左上角,不是为中间部分,接着对图片进行垂直水平居中即可

    .img-box{
        display: inline-block;
        33.3%;
        height:113px;
        overflow:hidden;
        position: relative;
        img{
            position:absolute;
            top:50%;
            left:50%;
            transform: translate(-50%, -50%);
        }
    }
    

    此时就可以正确展示了~

  • 相关阅读:
    [转]给嵌入式系统工程师的十个建议
    About Career Links
    Oh My, JAVA?!
    All Maling-Lists
    ALSA Links
    [Music Links]
    [Android-Building]/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../liblzo2.so when searching for -llzo2
    Debugging for Unfortunately, the process android.process.media has stopped
    [Quote] How To Change, Customize & Create Android Boot Animation [Guide]
    Share folders on your local Windows PC to remote Linux PC
  • 原文地址:https://www.cnblogs.com/youhong/p/9520355.html
Copyright © 2020-2023  润新知