jquery單擊文字或圖片內(nèi)容放大并居中顯示
我們想要實(shí)現(xiàn)的效果是:
點(diǎn)擊一張小圖,會在頁面的居中位置顯示一張大圖。
使用了animate動畫函數(shù),有從小圖到大圖,從小圖位置到居中位置的軌跡。
支持IE7及以上瀏覽器,火狐、谷歌瀏覽器。
大圖得居中位置,我主要使用了如下代碼:
var width=$('.alert').find('img').width();//大圖得寬高
var height=$('.alert').find('img').height();
var lwidth=$(window).width();//屏幕中頁面可見區(qū)域的寬高
var lheight=$(window).height();
var x2=lwidth/2-width/2+$(window).scrollLeft();//在屏幕居中的坐標(biāo)
var y2=lheight/2-height/2+$(window).scrollTop();
這里面加上了滾動條的寬度和高度,這樣可以在有滾動條的情況下也是居中顯示的。
主要的代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>單擊文字或圖片內(nèi)容放大顯示</title>
<script src="../jquery-1.8.3.min.js"></script>
<style>
*{margin:0;padding:0;}
ul{overflow:hidden;list-style:none;margin:1000px auto;}
ul li{float:left;height:150px;width:130px;margin:0 10px;}
.bigpic{position:absolute;display:none;}
.alert{background:#fff;border:solid #ccc 1px;padding:10px;}
.alert a.close{position:absolute;top:0;right:0;}
</style>
</head>
<body>
<ul>
<li><img src="mm1.jpg"></li>
<li><img src="mm2.jpg"></li>
<li><img src="mm3.jpg"></li>
<li><img src="mm4.jpg"></li>
</ul>
<div class="bigpic" style="display:none;">
<div class="pic-one"><img src="m1.jpg"></div>
<div class="pic-two"><img src="m2.jpg"></div>
<div class="pic-three"><img src="m3.jpg"></div>
<div class="pic-four"><img src="m4.jpg"></div>
</div>
<div class="alert" style="display:none;">
<a class="close" href="javascript:;" rel="external nofollow" >關(guān)閉</a>
</div>
<script>
var x=0;
var y=0;
$('ul li').click(function(e){
var index=$(this).index();
x= e.pageX|| e.clientX+$(window).scrollLeft();//鼠標(biāo)點(diǎn)擊的坐標(biāo)
y= e.pageY|| e.clientY+$(window).scrollTop();
$('.alert').css({position:'absolute',top:y,left:x,width:'1px',height:'1px',overflow:'hidden'});
var bigpic=$('.bigpic').find('div').eq(index).find('img').attr('src');//找到相對應(yīng)的大圖片
$('.alert').find('img').remove();
$('.alert').append("<img src="+bigpic+">");//添加大圖
$('.alert').show();
var width=$('.alert').find('img').width();//大圖得寬高
var height=$('.alert').find('img').height();
var lwidth=$(window).width();//屏幕頁面可見區(qū)域的寬高
var lheight=$(window).height();
var x2=lwidth/2-width/2+$(window).scrollLeft();//在屏幕居中的坐標(biāo)
var y2=lheight/2-height/2+$(window).scrollTop();
$('.alert img').css({width:'100%'});
$('.alert').animate({left:x2,top:y2,width:width,height:height},300);
})
//這出現(xiàn)一個問題,當(dāng)alert寬度和高度都為15px時或以下,如果不加padding,img是100%,就會造成圖片不是從左上角開始的,上面就會有空白,這是因?yàn)楦冈厥菈K狀元素,有自己的行間距,二他的子元素是行內(nèi)元素,這樣就會有空隙,此時解決方法有兩個,
// 給img加上display:block屬性,形成塊狀元素;
// 或者img還是內(nèi)聯(lián)元素,此時使用vertical-align:top可以向上對齊。
//把父元素的間距設(shè)置為0,或者父元素的font-size設(shè)置為0yekeyi
$('.alert a.close').click(function(){
//console.log(x+'```'+y);
$('.alert').animate({left:x,top:y,width:'1px',height:'1px'},300); //全局變量
$('.alert').fadeOut(100);
})
</script>
</body>
</html>
效果可復(fù)制代碼,自行在頁面中查看。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery實(shí)現(xiàn)等比例縮放大圖片讓大圖片自適應(yīng)頁面布局
- 基于jquery實(shí)現(xiàn)一張圖片點(diǎn)擊鼠標(biāo)放大再點(diǎn)縮小
- jQuery當(dāng)鼠標(biāo)懸停時放大圖片的效果實(shí)例
- jQuery實(shí)現(xiàn)圖片放大預(yù)覽實(shí)現(xiàn)原理及代碼
- 基于jquery的滾動鼠標(biāo)放大縮小圖片效果
- 一個CSS+jQuery實(shí)現(xiàn)的放大縮小動畫效果
- jQuery div層的放大與縮小簡單實(shí)現(xiàn)代碼
- jquery 實(shí)現(xiàn)京東商城、凡客商城的圖片放大效果
- zShowBox 圖片放大展示jquery版 兼容性
- jQuery實(shí)現(xiàn)響應(yīng)瀏覽器縮放大小并改變背景顏色
相關(guān)文章
BootStrap的table表頭固定tbody滾動的實(shí)例代碼
本文給大家分享一段關(guān)于BootStrap的table表頭固定tbody滾動的實(shí)例代碼,代碼簡單易懂,需要的朋友可以參考下2016-08-08
jQuery動態(tài)添加<input type="file">
有時候需要在頁面上允許用戶上傳多個文件,個數(shù)由用戶自己決定,個數(shù)多了也可以刪除,使用jQuery可以很簡單的實(shí)現(xiàn)這個功能2016-04-04
jquery簡單實(shí)現(xiàn)網(wǎng)頁層的展開與收縮效果
這篇文章主要介紹了jquery簡單實(shí)現(xiàn)網(wǎng)頁層的展開與收縮效果的方法,涉及jquery中toggle結(jié)合animate方法操作頁面元素屬性的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下2015-08-08
Jquery刷新頁面背景圖片隨機(jī)變換的實(shí)現(xiàn)方法
Jquery刷新頁面背景圖片隨機(jī)變換的實(shí)現(xiàn)方法,需要的朋友可以參考一下2013-03-03

