基于JQuery實(shí)現(xiàn)的圖片自動(dòng)進(jìn)行縮放和裁剪處理
其實(shí)很早就想寫(xiě)一個(gè)這樣的效果,至于原因?進(jìn)來(lái)這個(gè)筆記,我相信你懂的。
一般門(mén)戶(hù)網(wǎng)站,缺少不了大量的圖片展示,而為了網(wǎng)站美觀,圖片又有各種不同尺寸,專(zhuān)業(yè)的網(wǎng)站編輯人員,會(huì)把圖片處理成等比例的圖片再上傳,把網(wǎng)站弄得很好看,可惜,我想說(shuō),我遇到90%的網(wǎng)站編輯人員都是不專(zhuān)業(yè)的。
為了不讓網(wǎng)站編輯人員毀掉我的心血,我決定做這樣一個(gè)事情。
1、首先,在CSS里對(duì)圖片定義好大小,如果JS不執(zhí)行,就能看到拉伸的圖片,也就是最正常的表現(xiàn);
2、對(duì)每個(gè)定義圖片大小的CSS多定義一個(gè)不常用的容器,這里我選用了斜體標(biāo)簽<cite></cite>,并定義其CSS與同根img的CSS一模一樣,并定義該容器里的img的CSS樣式回歸margin:0;padding:0;
我是這樣做的:
/*公用*/
cite{display:block;overflow:hidden;overflow:hidden !important;}
/*某容器*/
#BigPic img{display:block;padding:2px;width:240px;height:160px;border:1px solid #cccccc;}
#BigPic cite{display:block;padding:2px;width:240px;height:160px;border:1px solid #cccccc;}
#BigPic cite img{display:block;margin:0px;padding:0px;border:none;}
3、定義圖片處理函數(shù),參考圖片被定義的大小和原始大小,在保持比例的前提下填充滿(mǎn)位置,再裝進(jìn)裁剪容器;
我的代碼:
//圖片尺寸判斷與處理,用裁剪容器包圍 - By COoL
function cutImgz(obj){
var image=new Image();
image.src=obj.src;
$this=$(obj);
var iwidth=$this.width();//獲取在CSS里固定的圖片顯示寬度
var iheight=$this.height();//獲取在CSS里固定的圖片顯示高度
if(1*image.width*iheight!=1*iwidth*image.height){
//原始圖片的尺寸與CSS里固定的圖片尺寸比例不一致,則進(jìn)行處理
if(image.width/image.height>=iwidth/iheight){
$this.height(iheight+'px');
$this.width((image.width*iheight)/image.height+'px');
}
else{
$this.width(iwidth+'px');
$this.height((image.height*iwidth)/image.width+'px');
}
//用cite裝起來(lái),做出裁剪效果
$this.wrap('<cite />');
}
}
4、在加載頁(yè)面時(shí)遍歷所有圖片,判斷其是否在緩存中,在緩存中則直接進(jìn)行處理,不在緩存中則通過(guò)onload觸發(fā)處理;
(因?yàn)樵诰彺娴膱D片秒load,在定義onload事件之前就已經(jīng)load好,導(dǎo)致onload事件不被觸發(fā);而不在緩存的圖片,若直接處理,圖片未load出來(lái),原始尺寸會(huì)被Image對(duì)象認(rèn)為是空?qǐng)D,width和height都是0)
我的代碼:
$('img').each(function(){
var image=new Image();
image.src=this.src;
if(image.complete){
//存在緩存中,立即處理
cutImgz(this);
} else{
//不存在緩存中,onload處理
this.onload=function(){
cutImgz(this);
}
}
});
- jQuery實(shí)現(xiàn)等比例縮放大圖片讓大圖片自適應(yīng)頁(yè)面布局
- jquery 圖片預(yù)加載 自動(dòng)等比例縮放插件
- jquery 圖片縮放拖動(dòng)的簡(jiǎn)單實(shí)例
- jquery實(shí)現(xiàn)圖片按比例縮放示例
- 基于jquery實(shí)現(xiàn)圖片相關(guān)操作(重繪、獲取尺寸、調(diào)整大小、縮放)
- jQuery實(shí)現(xiàn)的鼠標(biāo)滾輪控制圖片縮放功能實(shí)例
- jQuery圖片縮放插件smartZoom使用實(shí)例詳解
- JQuery 圖片延遲加載并等比縮放插件
- jQuery圖片預(yù)加載 等比縮放實(shí)現(xiàn)代碼
- 基于jquery的防止大圖片撐破頁(yè)面的實(shí)現(xiàn)代碼(立即縮放)
- jQuery實(shí)現(xiàn)的移動(dòng)端圖片縮放功能組件示例
相關(guān)文章
jQuery動(dòng)態(tài)添加元素?zé)o法觸發(fā)綁定事件的解決方法分析
這篇文章主要介紹了jQuery動(dòng)態(tài)添加元素?zé)o法觸發(fā)綁定事件的解決方法,結(jié)合實(shí)例形式分析了動(dòng)態(tài)添加元素?zé)o法綁定事件的原因與相關(guān)解決方法,需要的朋友可以參考下2018-01-01jquery+json實(shí)現(xiàn)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了如何利用jquery結(jié)合json實(shí)現(xiàn)分頁(yè)效果,感興趣的小伙伴們可以參考一下2016-03-03JQuery 表單中textarea字?jǐn)?shù)限制實(shí)現(xiàn)代碼
textarea中的字?jǐn)?shù)的限制是在1000個(gè)之內(nèi),下面是具體的實(shí)現(xiàn)代碼,基本上會(huì)點(diǎn)jquery的能看懂,不懂的可以學(xué)習(xí)下jquery,當(dāng)期比較流行了,要不就落伍了。2009-12-12Jquery 動(dòng)態(tài)添加元素并添加點(diǎn)擊事件實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Jquery 動(dòng)態(tài)添加元素并添加點(diǎn)擊事件實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10解決jquery1.9不支持browser對(duì)象的問(wèn)題
項(xiàng)目里面一直用的都是jquery1.9,不支持browser對(duì)象,百度一下,找到了解決方案在此與大家分享下,有遇到此問(wèn)題的朋友不要錯(cuò)過(guò)2013-11-11jquery幻燈片插件bxslider樣式改進(jìn)實(shí)例
這篇文章主要介紹了jquery幻燈片插件bxslider樣式改進(jìn),對(duì)比官方樣式以實(shí)例形式講述了改進(jìn)的技巧,非常實(shí)用,需要的朋友可以參考下2014-10-10