放大镜
<! DOCTYPE html >
< html lang = " zh-cn" > < head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 商品放大镜</ title> < link rel = " stylesheet" href = " css/reset.css" > < style> .product-intro { position : relative; width : 450px; margin : 100px 0 0 200px; border : 1px solid #ccc; } .preview { position : relative; } .enlargement { display : none; overflow : hidden; position : absolute; top : -1px; left : 450px; width : 540px; height : 540px; border : 1px solid #ccc; } .mask { display : none; position : absolute; top : 0; left : 0; width : 60%; height : 60%; background-color : rgba ( 228, 228, 11, 0.3) ; border : 1px solid rgba ( 122, 122, 122, .4) ; cursor : move; } .active { display : block; } </ style>
</ head> < body> < div class = " product-intro" > < div class = " preview" > < img src = " images/m30.jpg" width = " 450" height = " 450" alt = " m30" > < div class = " mask" > </ div> </ div> < div class = " enlargement" > < img src = " images/m30-big.jpg" alt = " m30" > </ div> </ div> < script src = " js/common.js" > </ script> < script> var oPreview = $ ( '.preview' ) ; var oMask = $ ( '.mask' ) ; var oEnlarge = $ ( '.enlargement' ) ; var oEnlargeImg = $ ( '.enlargement>img' ) ; var mouseEventMap = { mouseenter : function ( e ) { oMask. classList. add ( 'active' ) ; oEnlarge. classList. add ( 'active' ) ; } , mouseleave : function ( e ) { oMask. classList. remove ( 'active' ) ; oEnlarge. classList. remove ( 'active' ) ; } , mousemove : function ( e ) { var x = e. clientX - oMask. offsetWidth / 2 - getPosition ( oPreview) . left; var y = e. clientY - oMask. offsetHeight / 2 - getPosition ( oPreview) . top; x = Math. min ( x, oPreview. offsetWidth - oMask. offsetWidth) ; x = Math. max ( x, 0 ) ; y = Math. min ( y, oPreview. offsetHeight - oMask. offsetHeight) ; y = Math. max ( y, 0 ) ; oMask. style. left = x + 'px' ; oMask. style. top = y + 'px' ; var moveX = ( oEnlargeImg. offsetWidth - oEnlarge. offsetWidth) / ( oPreview. offsetWidth - oMask. offsetWidth) ; var moveY = ( oEnlargeImg. offsetHeight - oEnlarge. offsetHeight) / ( oPreview. offsetHeight - oMask. offsetHeight) ; oEnlargeImg. style. marginLeft = - x * moveX + 'px' ; oEnlargeImg. style. marginTop = - y * moveX + 'px' ; } } oPreview. addEventListener ( 'mouseenter' , handle, false ) ; oPreview. addEventListener ( 'mouseleave' , handle, false ) ; oPreview. addEventListener ( 'mousemove' , handle, false ) ; function handle ( e ) { if ( mouseEventMap[ e. type] && typeof mouseEventMap[ e. type] === 'function' ) { mouseEventMap[ e. type] ( e) ; } } </ script>
</ body> </ html>