MUI - 圖片預覽(perviewimage)的優化

主要對mui圖片全屏預覽插件作了如下三點補充
1.添加了預覽圖片文字說明,使用的時候須要添加如下cssDOM屬性css

.mui-slider-img-content {
                position: absolute;
                bottom: 10px;
                left: 10px;
                right: 10px;
                color: white;
                text-align: center;
                line-height: 21px
            }
<img src="../images/yuantiao.jpg" data-preview-src="" data-preview-group="2" data-content="這裏是文字說明"/>

2.若是圖片過寬或過長,預加載圖片(上一張或下一張)時,會和當前顯示的圖片重疊
原來的效果是這樣

主要對縮放進行了更改html

proto._initImgData = function(itemData, imgEl) {
        if (!itemData.sWidth) {
            var img = itemData.el;
            itemData.sWidth = img.offsetWidth;
            itemData.sHeight = img.offsetHeight;
            var offset = $.offset(img);
            itemData.sTop = offset.top;
            itemData.sLeft = offset.left;
            //縮放判斷,解決預加載圖片時,圖片過大,和當前顯示圖片重疊的問題
            //未更改以前縮放比例能達到2.5倍以上
            var scale = Math.max(itemData.sWidth / window.innerWidth, itemData.sHeight / window.innerHeight);
            itemData.sScale = scale > 1 ? 0.977 : scale;
        }
        imgEl.style.webkitTransform = 'translate3d(0,0,0) scale(' + itemData.sScale + ')';
    };

3.解決了預加載頁面返回(mui.back)從新加載數據並打開時,預覽無用的問題
主要應用場景是這樣的:git

  • view是預加載的,返回時view隱藏,DOM重置,
  • 若是不清除當前預覽對象previmage的話,加載數據後打開當前頁面,從新調用mui.previewImage()無效,依然是第一次的預覽的DOM結果
  • 由於插件源碼決定了該對象是不變的
var previewImageApi = null;
    $.previewImage = function(options) {
        if (!previewImageApi) {
            previewImageApi = new PreviewImage(options);
        }
        return previewImageApi;
    };
  • 有朋友會問,爲毛要預加載,爲何不經過loadurl或其餘方式刷新頁面(或DOM)?
  • 就爲了優化性能,秒開頁面,整個詳情頁的代碼前先後後改了一個多星期
  • 我不可能由於插件的不完整而放棄優化的成果。
  • 因此就有了如下的代碼
//釋放當前對象及清除DOM
    proto.dispose = function() {
        var prevdom = document.getElementById("__MUI_PREVIEWIMAGE");
        prevdom && prevdom.parentNode.removeChild(prevdom);
        previewImageApi = null;
    };

具體代碼在這https://github.com/phillyx/mui/blob/master/examples/hello-mui/examples/imageviewer.htmlgithub

相關文章
相關標籤/搜索