<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.container{
border: 2px solid #eee;
width: 400px;
height: 400px;
box-shadow: 5px 10px 10px 3px #ccc;
position: relative;
float: left;
}
.box {
width: 180px;
height: 180px;
background: yellow;
opacity: 0.4;
/*display: none;*/
position: absolute;
}
.scale {
width: 450px;
height: 450px;
border: 2px solid #b3b3b3;
position: relative;
display: inline-block;
overflow: hidden;
}
.big-image{
/*overflow: hidden;*/
position: absolute;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div class="container">
<img src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=4265027237,2654660306&fm=27&gp=0.jpg" width="100%" height="100%">
<div class="box"></div>
</div>
<div class="scale">
<img class="big-image" src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=4265027237,2654660306&fm=27&gp=0.jpg" alt="" width="100%" height="100%">
</div>
<script>
let container = document.querySelector('.container');
let box = document.querySelector('.box');
let scale = document.querySelector('.scale');
let bigImage = document.querySelector('.big-image'); // 大圖
let percent = scale.offsetHeight / box.offsetHeight; // 大圖:小圖比例
bigImage.width = bigImage.offsetWidth * percent;
bigImage.height = bigImage.offsetHeight * percent;
container.onmouseover = () => {
box.style.display = 'block';
container.onmousemove = e => {
let x = e.clientX;
let y = e.clientY;
box.style.left = x - box.offsetWidth / 2 + 'px';
box.style.top = y - box.offsetHeight / 2 + 'px';
if(box.offsetLeft <= 0) {
box.style.left = 0;
}
if(box.offsetTop <= 0) {
box.style.top = 0;
}
if (container.offsetWidth - box.offsetLeft < box.offsetWidth) {
box.style.left = container.offsetWidth - box.offsetWidth + 'px';
}
if (container.offsetHeight - box.offsetTop < box.offsetHeight) {
box.style.top = container.offsetHeight - box.offsetHeight + 'px';
}
bigImage.style.left = -box.offsetLeft * percent + 'px';
bigImage.style.top = -box.offsetTop * percent + 'px';
; }
};
container.onmouseout = () => {
box.style.display = 'none';
};
</script>
</body>
</html>
源碼貼上可以直接運行,大神幫忙看看,我眼花了真是~~
找到問題所在了,大圖的寬應(yīng)該等于小圖寬乘以 放大圖的預(yù)覽圖除以放大鏡的寬, 高同理,上面的代碼自己改一部分就可以
*上面的
bigImage.width = bigImage.offsetWidth * percent;
bigImage.height = bigImage.offsetHeight * percent;
改為
bigImage.width = container.offsetWidth * percent;
bigImage.height = container.offsetHeight * percent;
即可,昨天寫到太晚,迷迷糊糊地沒發(fā)現(xiàn)
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。