• 缩略图不变形


    需求:图片按九宫格展示,图片展示其缩略图(不变形),点击可看大图。(本文暂时只讨论展示缩略图不变形的方案)图片要求有两点: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%);
        }
    }
    

    此时就可以正确展示了~

  • 相关阅读:
    OpenCV+iOS开发使用文档
    Mac下OpenCV开发
    vs2010+cuda5.0+qt4.8
    对于基类添加虚析构函数问题
    PMVS学习中学习c++
    解决ubuntu上opengl的问题
    js中const,var,let区别
    phpstorm 快捷键
    Chrome 控制台console的用法
    【PHP】进一法取整、四舍五入取整、忽略小数等的取整数方法大全
  • 原文地址:https://www.cnblogs.com/youhong/p/9520355.html
Copyright © 2020-2023  润新知