文章來源:搜索資源平臺 發(fā)布日期:2018-10-25
百度搜索資源平臺發(fā)布的《百度移動(dòng)搜索落地頁體驗(yàn)白皮書4.0》中提到圖片頁資源標(biāo)準(zhǔn):“詳情頁中主體內(nèi)容包括圖片的情況下,圖片應(yīng)能點(diǎn)擊調(diào)起大圖、縮小放大功能使用自如,手勢支持順滑,圖集能自由切換。”對于這一標(biāo)準(zhǔn),有哪些案例可以參考呢?對于基礎(chǔ)的點(diǎn)擊調(diào)起大圖功能,應(yīng)該如何實(shí)現(xiàn)呢?《百度移動(dòng)搜索落地頁體驗(yàn)白皮書4.0專題解讀》之《圖片交互如何做會更好?》,將為你解答這些疑問。
一、為什么圖片要增加交互功能?
優(yōu)質(zhì)的資源通暢是圖文并茂的,優(yōu)質(zhì)圖片所帶來的直觀體驗(yàn),可以讓用戶快速獲取信息,是用戶體驗(yàn)中非常重要的一環(huán)。
但是,受限于移動(dòng)端屏幕大小,考慮到用戶流量等問題,詳情頁中主體內(nèi)容的圖片通常被默認(rèn)設(shè)置為小圖。而用戶在瀏覽時(shí),看到感興趣的圖片,往往希望能夠在點(diǎn)擊圖片后獲取大圖,以便獲取更詳細(xì)的信息。
如下圖所示,用戶往往希望能夠在點(diǎn)擊圖片后獲取大圖,并對圖片進(jìn)行局部放大和移動(dòng),以便查看圖中的詳細(xì)數(shù)據(jù)。
而對于圖集來說,還需要有自由切換功能,才能夠滿足用戶需求。
因此,詳情頁中主體內(nèi)容包括圖片的情況下,圖片應(yīng)能點(diǎn)擊調(diào)起大圖、縮小放大功能使用自如,手勢支持順滑,圖集能自由切換。
二、參考案例
參考案例1
如下圖所示,詳情頁主體內(nèi)容中的圖片,點(diǎn)擊后可以調(diào)起大圖,縮小放大功能使用自如,手勢支持順滑,可以作為參考。
參考案例2
如下圖所示,詳情頁主體內(nèi)容中的圖集,點(diǎn)擊后可以調(diào)起大圖,縮小放大功能使用自如,手勢支持順滑,且能夠自由切換,可以作為參考。
三、以點(diǎn)擊調(diào)起大圖為例談技術(shù)實(shí)現(xiàn)
普通的Web頁面是無法直接查看圖片的,而放大查看圖片不僅僅是簡單的放大圖片,如果想要實(shí)現(xiàn)與原生手機(jī)應(yīng)用中類似的放大查看圖片的能力,需要通過JS代碼進(jìn)行一些動(dòng)效和交互效果封裝。
在MIP中,已經(jīng)將圖片查看效果封裝到了組件內(nèi)部,通過添加popup屬性來直接使用,例如:。
使用popup以后效果如下:
對于MIP站來說,直接添加popup屬性就可以實(shí)現(xiàn)點(diǎn)擊調(diào)起大圖的效果。而對于普通站點(diǎn)來說,也可以參考MIP的popup技術(shù)原理,升級自己的站點(diǎn)。
(1)功能拆解
實(shí)現(xiàn)圖片的popup效果,主要考慮以下幾個(gè)功能:
(2) 代碼實(shí)現(xiàn)
通過以上功能拆解,我們可以一起看一下幾個(gè)圖片popup的核心功能的代碼實(shí)現(xiàn):
(3)popup實(shí)現(xiàn)
① popup需要?jiǎng)?chuàng)建專用的彈層dom,代碼示例如下:
// 創(chuàng)建彈層 dom function createPopup(element, img) { var mipPopWrap = document.querySelector('.mip-img-popUp-wrapper'); if (!!mipPopWrap && mipPopWrap.getAttribute('data-name') === 'mip-img-popUp-name' && mipPopWrap.parentNode.tagName.toLowerCase() === 'body') { mipPopWrap.querySelector('img').setAttribute('src', img.src); return mipPopWrap; } var popup = document.createElement('div'); // 阻止縱向滑動(dòng) new Gesture(popup, { preventY: true }); popup.className = 'mip-img-popUp-wrapper'; popup.setAttribute('data-name', 'mip-img-popUp-name'); // 創(chuàng)建圖片預(yù)覽圖層 var popUpBg = document.createElement('div'); var innerImg = new Image(); popUpBg.className = 'mip-img-popUp-bg'; innerImg.className = 'mip-img-popUp-innerimg'; innerImg.src = img.src; popup.appendChild(popUpBg); popup.appendChild(innerImg); document.body.appendChild(popup); return popup; }
② 實(shí)現(xiàn)用戶點(diǎn)擊時(shí)的圖片放大和背景變化效果,代碼示例如下:
function bindPopup(element, img) {
var popup;
var popupBg;
var popupImg;
// 圖片點(diǎn)擊時(shí)展現(xiàn)圖片
img.addEventListener('click', function (event) {
event.stopPropagation();
// 圖片未加載則不彈層
if (img.width + img.naturalWidth === 0) {
return;
}
popup = createPopup(element, img);
popupBg = popup.querySelector('.mip-img-popUp-bg');
popupImg = popup.querySelector('img');
//觸發(fā)圖片落坑
popup.addEventListener('click', imagePop, false);
var imgOffset = getImgOffset(img);
var onResize = function () {
imgOffset = getImgOffset(img);
css(popupImg, imgOffset);
naboo.animate(popupImg, getPopupImgPos(imgOffset.width, imgOffset.height)).start();
};
window.addEventListener('resize', onResize);
css(popupImg, imgOffset);
css(popupBg, 'opacity', 1);
css(popup, 'display', 'block');
naboo.animate(popupImg, getPopupImgPos(imgOffset.width, imgOffset.height)).start();
css(img, 'visibility', 'hidden');
css(img.parentNode, 'zIndex', 'inherit');
}, false);
}
③ 實(shí)現(xiàn)圖片落坑,具體代碼示例如下:
function imagePop() {
naboo.animate(popupBg, {
opacity: 0
}).start();
naboo.animate(popupImg, getImgOffset(img)).start(function () {
css(img, 'visibility', 'visible');
css(popup, 'display', 'none');
});
popup.removeEventListener('click', imagePop, false);
}
基于以上,我們基本可以實(shí)現(xiàn)圖片的popup效果了。
四、結(jié)語
提高用戶體驗(yàn),就要從用戶的角度出發(fā),滿足用戶的合理需求。期待我們從多角度,全方位共同提高用戶體驗(yàn)。
? Copyright 2024. 悅?cè)痪W(wǎng)絡(luò)工作室/悅?cè)粀ordpress建站 專注中小企業(yè)wordpress建站 All Rights Reserved.網(wǎng)站地圖
本站圖片來源為Pexels、Pixabay、Freepik、Unsplash等圖片庫的免費(fèi)許可,CC0協(xié)議;還有部分為自己手繪,版權(quán)碰瓷請自重!法律服務(wù):law@yueranseo.com 蜀ICP備20016391號-1 川公網(wǎng)安備 51011502000367號
?
?
?
?
微信聯(lián)系