1. 程式人生 > >仿淘寶 圖片區域性放大效果

仿淘寶 圖片區域性放大效果

本人前端小白一枚 做了個仿淘寶的圖片放大效果與大家分享一下,還望大神批評

主要思路是 水平放兩個同等大小的div用來分別盛放原圖和放大後的圖片。下圖所示


在img1和img2中放入相同的圖片,div2中使用overflow:hidden屬性使多餘的圖片隱藏達到區域性放大的效果

下面是HTML部分程式碼

<div id="base" style="width: 200px; height: 200px ;position: relative; float:left;">
        <img id="base_img" style="position: absolute; height: inherit;width: inherit;"  src="marta2jpg.jpg"/>
        <span id="ks_span" style="position:absolute;width: 100px;height: 100px;" class="ks_span none"></span>
    </div>
    <div id="show_contain" class="none" style="width: 200px; height: 200px ;position: relative; float:left;overflow: hidden;border: 1px solid #F0F0F0">
        <img id="show" style="position: absolute; height: 400px;width: 400px;"  src="">
    </div>

網狀遮罩層的實現:利用 background-repeat: repeat;background-position: 0 0;background-image: url("back2-1.png");

把2畫素*2畫素的圖片重複填充滿span元素 將span元素背景顏色設定透明

網狀層整體樣式

.ks_span{
        background-attachment: scroll;
        background-repeat: repeat;
        cursor: move;
        z-index: 1;
        position: absolute;
        overflow: hidden;
        background-position: 0 0;
        background-color: transparent;
        background-image: url("back2-1.png");
    }

在div1中獲取滑鼠位置 根據滑鼠的位置去改變img2 的top和left屬性,使img2根據滑鼠的移動把不同的部分顯

示在div2中。

下面是獲取滑鼠位置的幾種方法:

event物件不說了,主要寫獲取滑鼠位置的方法:

1.event.clientX、event.clientY 獲取滑鼠相對於瀏覽器視窗可視區域(不包括工具欄和滾動條)的橫縱座標。

2.event.pageX、event.pageY 獲取滑鼠相對於文件也就是body的位置 event.pageX = event.clientX+橫向滾動

條距離,event.pageY = event.clientY + 縱向滾動條距離。

3.event.offsetX、event.offsetY 獲取滑鼠相對於事件源元素的橫縱座標。

4.event.screenX、event.screenY 獲取滑鼠相對於螢幕邊緣的橫縱座標。

我使用的是第二種pageX與pageY,

網狀層與滑鼠主要幾個位置圖:


使滑鼠位於span的中心 滑鼠位置與span的left和top都相差50px 所以用滑鼠的座標減去50得到span的top和left的

值但是body有預設的margin值為8px這裡沒有處理,所以要減去58。實現網狀層跟隨滑鼠移動使用onmousemove

事件不停地改變span的top和left值。

接下來根據滑鼠的位置得到img2的top和left值,當滑鼠向下移動img2需要向上移動才能把下面的圖片顯示出來相同

滑鼠向上移動img2需要向下移動,所以img2的top和left值需要是負值。當滑鼠在12線上時span的邊界已經和div1

的邊界相接圖片此時應該顯示到邊界。所以img2的top為0,此時滑鼠y值為58 ,所以img2 top為58-y 然而在34線上

span下邊界與div1相接所以img2的top值應為-200,此時滑鼠y值為158,-200正好等於2*(58 - y),左右也是這樣

分析 所以滑鼠位置與img2top與left 的關係就是116-2*y和116-2*x。

當滑鼠超出1234線的範圍是img2和span都不需要移動了只需要用if條件限制

JavaScript程式碼:

<script>

    var base = document.getElementById("base");
    var show = document.getElementById("show");
    var base_img = document.getElementById("base_img");
    var show_contain = document.getElementById("show_contain");
    var sk_span = document.getElementById("ks_span");

    base.onmousemove = function (event) {

        var x = event.pageX ;
        var y = event.pageY ;
	var draw = base_img.getAttribute("src")
	show.setAttribute("src",draw);

        if (y>=58 && y<=158){
            sk_span.style.top = y-58+"px";
            show.style.top = 116-2*y + "px";
        }
        if (x>=58 && x<=158){
            sk_span.style.left = x-58+"px";
            show.style.left = 116-2*x + "px";
        }

        show_contain.classList.remove("none");
        sk_span.classList.remove("none");

    };

    base.onmouseout = function () {
        show_contain.classList.add("none");
        sk_span.classList.add("none");
		show.setAttribute("src","");
    }

</script>

以下是整體程式碼以及圖片元素的下載地址


相關推薦

仿 圖片區域性放大效果

本人前端小白一枚 做了個仿淘寶的圖片放大效果與大家分享一下,還望大神批評 主要思路是 水平放兩個同等大小的div用來分別盛放原圖和放大後的圖片。下圖所示 在img1和img2中放入相同的圖片,div2中使用overflow:hidden屬性使多餘的圖片隱藏達到區域性放大的

Android開發仿商品詳情瀏覽效果 兩步曲

效果圖: 第一步佈局檔案: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr

android自定義ProgressBar(仿)的載入效果

三種方式實現自定義圓形頁面載入中效果的進度條 To get a ProgressBar in the default theme that is to be used on white/light back ground, use one of the inverse st

Android/安卓仿直播點贊效果/qq空間點贊效果動畫

之前玩淘寶誤入它的直播頻道,發現它的直播介面的點贊效果挺好看,然後發現QQ控制元件點贊有類似動畫,於是趁有空花了點時間玩玩。 先上個效果圖: 添加了一個按鈕模擬點贊,點選多少次就出現多個水果,他們的運動軌跡和速度是不一樣的,而且帶有淡入淡出效果。這是淘寶直播的效果,qq

android 仿的載入重新整理效果

自定義view: package com.taobao.view; import android.content.Context; import android.util.AttributeSet

Android之仿商品詳情瀏覽效果

-----------------轉載請註明出處:http://blog.csdn.net/android_cll 一:先來幾張效果圖,沒有弄gif動畫,也就是商品詳情滑動到底部繼續上滑檢視圖文詳情、 二:實現步驟:   1.自定義一個父容器ScrollVi

Winform圖片區域性放大效果

有兩個picturebox控制元件,name預設沒有修改。其中picturebox1的img賦予初始值,picturebox2的visible=false;其餘不變,程式比較簡單,看以參考下。 [csharp] view plain copy print? using System;  u

jquery---仿商品圖片區域性放大

本篇博文用於簡單記錄圖片放大功能實現 功能實現還存在一些小漏洞在文章結尾提出,希望各位指正 1、圖片放大初考慮將圖片轉換為字型圖片形式,然後進行放大處理,但最終本人技術不過關無法實現,後用width: 200%;進行一般的圖片放大,所以當圖片越大就存在一些失真; 2、圖

仿的一個圖片動畫效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w

js實現圖片滑動及放大鏡效果仿京東圖片展示)

程式碼地址: https://github.com/EsionChang/HTML/tree/master/ThreeInOne 實現效果為: 滑鼠放到小圖上,上部的大圖會滑動到相應的位置,滑動方式為減速。滑鼠移動到上部的大圖上,會顯示大圖的對應放大部位。

仿實現滑鼠移入圖片圖片放大功能

<!doctype html><html><head><meta charset="utf-8"><title>無標題文件</title><style>  *{margin: 0;paddin

使用原生js實現仿放大鏡效果

放大鏡實現步驟 1.獲取元素 2.實現滑鼠移上時顯示小方塊 和大圖 3.再新增中圖的移動事件 獲取滑鼠的座標付給小方塊 注意必須座標還要減去小方塊的寬高的一半 讓游標在中間顯示 4.實現大圖同比例的顯示 原理:游標移動的座標/大圖移動的座標=中圖的寬度/大圖的寬度 求的是大圖

仿商品放大鏡效果

效果圖:     原始碼: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title>

Android 仿商品詳情標題欄變色,佈局層疊效果

如圖效果 思路:如圖可以將圖片中佈局分成三個部分,1標題欄透明背景,2上半部分佈局,3下半部分佈局,當我們向上拉動的時候,1佈局實現漸變,從透明變到白色,2佈局背景色漸變到白色,23佈局隨滾動條上拉,並且慢慢改變2佈局paddingtop的屬性,其中1佈局漂浮在整個scro

仿商品詳情頁[帶有視訊和圖片的輪播功能]

因為工作需求的原因,自己寫了一個demo,既實現了功能,又能與大家分享,很高興!Demo已上傳GitHub,https://github.com/xinniangdeweidao/CloneTaobaoProductsDetails.git 轉載請註明出處,謝謝!

原生js實現圖片放大功能

目錄結構:HTML:<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="

圖片自動輪播(仿??)

先上效果圖(給美宅瘋狂打call~) 是不是你們要找的效果,是的話就繼續往下看hahaha 上重點(敲黑板)!!! js <script> $(function () { var containl

網頁中商品圖片區域性放大效果

需求背景:購物網站中的商品區域性放大: 程式碼: html:  <div class="Pro_Detleft">         <div class="detail-itemsummary-imageviewer">              

仿、京東首頁圖片廣告垂直滑動

這是我從事Android開發以來寫的第一篇部落格,以後會不定期的將我所學習到的東西,分享出來,希望大家能多多批評指正。 言歸正傳,這篇部落格我要說的是仿淘寶、京東首頁的可滑動的導航,不同的是,我做的不是水平方向的,而是垂直方向的,其實很簡單,就是重寫ViewPa

ANDROID廣告輪播DEMO_仿廣告輪播_滑動圖片廣告例子

今天在專案中遇到了這樣的需求、輪播圖片來展示商品、剛剛已經分享了一種方法 但是我覺得這種還是達不到我的要求、所以我後臺又換了一種方式、比較好 跟淘寶京東的商品展示非常像、很符合的我胃口、現在分享出來、供大家使用 程式碼簡單、設定簡單、自定