• 图片大小不一放在div中的兼容方案


    css部分:

    .img-center {
         200px;
        height: 150px;
        margin: 20px;
        overflow: hidden;
        position: relative;
    }
    
    .img-center img {
        display: block;
        position: absolute;
    }
    
    .img-center img.aspectFill-x {
         100%;
        top: 50%;
        transform: translateY(-50%);
    }
    
    .img-center img.aspectFill-y {
        height: 100%;
        left: 50%;
        transform: translateX(-50%);
    }
    

      js部分

    // components/imageCenter.js
    define(function(require) {
    
        // 利用Promise封装一个加载函数,这里也是可以单独放在一个功能模块中进一步优化
        var imageLoad = function(img) {
            return new Promise(function(resolve, reject) {
                if (img.complete) {
                    resolve();
                } else {
                    img.onload = function(event) {
                        resolve(event);
                    }
    
                    img.onerror = function(err) {
                        reject(err);
                    }
                }
            })
        }
    
        var imageCenter = function(domList, mode) {
    
            domList.forEach(function(item) {
                var img = item.children[0];
                var itemW = item.offsetWidth;
                var itemH = item.offsetHeight;
                var itemR = itemW / itemH;
    
                imageLoad(img).then(function() {
                    var imgW = img.naturalWidth;
                    var imgH = img.naturalHeight;
                    var imgR = imgW / imgH;
    
                    var resultMode = null;
    
                    switch (mode) {
                        // 这样写是因为期待未来可以扩展其他的展示方式
                        case 'aspectFill':
                            resultMode = imgR > 1 ? 'aspectFill-x' : 'aspectFill-y';
                            break;
                        case 'wspectFill':
                            resultMode = itemR > imgR ? 'aspectFill-x' : 'aspectFill-y'
                            break;
                        default:
                    }
    
                    $(img).addClass(resultMode);
                })
            })
        }
    
        return imageCenter;
    })
    

      引用:

    // index.js
    var imageCenter = require('imageCenter');
    var imageWrapList = document.querySelectorAll('.img-center');
    imageCenter(imageWrapList, 'wspectFill');
    

      

  • 相关阅读:
    H5 后代选择器
    H5 id选择器和class选择器
    H5 类选择器
    H5 id选择器
    H5 标签选择器
    H5 颜色属性
    H5 文本属性
    H5 文字属性的缩写
    H5 字体属性补充
    H5 文字属性
  • 原文地址:https://www.cnblogs.com/vonson/p/10169735.html
Copyright © 2020-2023  润新知