可以使用css3中的rotate實(shí)現(xiàn)
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),新華網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:新華等地區(qū)。新華做網(wǎng)站價(jià)格咨詢:18980820575
實(shí)際的旋轉(zhuǎn)效果是這樣:
rotate中的 60deg 表示按最原始的位置,順時(shí)針旋轉(zhuǎn)60°
w3school 里面有更詳細(xì)用法,可以2D旋轉(zhuǎn)、3D旋轉(zhuǎn)
可以參考:網(wǎng)頁(yè)鏈接
動(dòng)畫效果可以通過(guò)js改變r(jià)otate中傳入的值來(lái)實(shí)現(xiàn)
制作圖片的放大效果我考慮到的方法是將原始圖片繪制到canvas上,然后在對(duì)canvas進(jìn)行局部裁剪最后對(duì)裁剪的部分進(jìn)行放大,這樣就可以實(shí)現(xiàn)放大鏡的效果。
這里我給出一個(gè)實(shí)現(xiàn)這個(gè)想法的示例。該示例實(shí)際上就是運(yùn)用HTML5?canvas中對(duì)畫布進(jìn)行裁剪與保存畫布狀態(tài)的相關(guān)知識(shí)實(shí)現(xiàn)的。
上面是給出示例的效果圖。這是不是你想要的放大鏡效果呢?
下面我們來(lái)看下示例代碼:在這個(gè)示例中當(dāng)你點(diǎn)擊圖片時(shí)圖片就會(huì)出現(xiàn)上圖效果,再一次點(diǎn)擊時(shí)就變成原始圖片了。
!DOCTYPE html
html
head
meta charset="utf-8"
title放大鏡/title
!—HTML代碼設(shè)計(jì):一個(gè)簡(jiǎn)單的canvas元素--
/head
body
div id="result-stub" class="well hidden"
canvas id="canvas" width="345" height="345"
p你的瀏覽器不支持canvas元素/p
/canvas
/div
script
window.onload=function() {
//獲取canvas對(duì)象以及圖片對(duì)象
var
canvas = document.getElementById('canvas'),
img = new Image(),
context = null,
dataUrl = null,
//設(shè)置一個(gè)標(biāo)記,該標(biāo)記的作用是控制我們點(diǎn)擊canvas時(shí)放大鏡效果的消失和出現(xiàn)
isMagnified = false,
//init函數(shù)只要是在圖片加載時(shí)繪制出圖形
init = function() {
img.onload = function() {
//繪制原始圖片
context.drawImage(img, 0, 0);
//將圖片信息轉(zhuǎn)化為二進(jìn)制信息或者URL信息存儲(chǔ)在dataUrl中方便后面調(diào)用
dataUrl = canvas.toDataURL();
}
img.src = 'fist-pump-baby.jpg';
//設(shè)置標(biāo)記值
isMagnified = false;
},
//magnify函數(shù)的作用是繪制具有放大鏡效果的圖形
magnify = function() {
//保存當(dāng)前畫布的繪制狀態(tài)即畫布繪制原始圖片的狀態(tài)。方便我們?cè)诤竺婊謴?fù)到繪制原始圖片的狀態(tài)
context.save();
//因?yàn)榉糯箸R的圓圈和把手是通過(guò)canvas繪制的這里設(shè)置了一些繪制把手和圓圈的樣式屬性。
context.lineWidth = 10;//?線條寬度
context.shadowColor = '#000';//?陰影的顏色黑色
context.shadowBlur = 15;//?模糊級(jí)別為15
context.shadowOffsetX = 5;//?形狀與陰影的水平距離5
context.shadowOffsetY = 5;//?形狀與陰影的垂直距離5
//保存畫布當(dāng)前狀態(tài)即我們?cè)O(shè)置陰影屬性后的狀態(tài)方便后面使用
context.save();
//繪制出放大鏡把手的圖形
context.beginPath();
context.moveTo(230, 230);
context.lineCap = 'round';
context.lineWidth = 30;
context.lineTo(285, 285);
context.stroke();
//對(duì)圖片進(jìn)行裁剪,裁剪出的圖形是一個(gè)圓形。
context.beginPath();
context.arc(
150,
150,
115,
0,
Math.PI * 2,
true);
context.clip();
//創(chuàng)建一個(gè)新的Image對(duì)象,這個(gè)Image對(duì)象的圖片資源是前面存儲(chǔ)在dataUrl中的圖片資源。所以這個(gè)Image對(duì)象和之前初始化的Image對(duì)象是完全一樣的。
var magnified = new Image();
magnified.src = dataUrl;
//對(duì)Image對(duì)象進(jìn)行放大1.5倍,并進(jìn)行繪制。注意此時(shí)的畫布狀態(tài)時(shí)裁剪為一個(gè)圓形的狀態(tài),所以這里繪制的也僅僅是圖片中的一個(gè)圓形區(qū)域。這里為了繪制出圖片中娃娃的臉設(shè)置了繪制的圖片有一定的偏移量。
context.scale(1.5, 1.5);
context.drawImage(img, -40, -40);
//調(diào)用restore()函數(shù)將畫布狀態(tài)恢復(fù)到繪制把放大鏡把手時(shí)的狀態(tài),即具有陰影屬性
context.restore();
//繪制放大鏡的圓圈,即繪制剛剛我們裁剪出來(lái)圖片的邊框。這樣剛剛裁剪出來(lái)的圓形圖形就會(huì)正好處于放大鏡的圓圈中。
context.arc(
150,
150,
115,
0,
Math.PI * 2,
true);
context.stroke();
//重置畫布,將畫布恢復(fù)到繪制元素圖片的狀態(tài),以方便繪制出放大效果后,再次點(diǎn)擊是繪制原始圖片。
context.restore();
//設(shè)置標(biāo)記值,實(shí)現(xiàn)點(diǎn)擊后放大效果消失。
isMagnified = true;
};
//加載初始化代碼,即當(dāng)運(yùn)行頁(yè)面時(shí)會(huì)在頁(yè)面繪制出一個(gè)原始圖像
init();
//監(jiān)聽畫布的點(diǎn)擊事件,當(dāng)點(diǎn)擊頁(yè)面的圖像時(shí)會(huì)根據(jù)標(biāo)記的值來(lái)進(jìn)行判斷是否對(duì)畫布進(jìn)行方大處理
$('canvas').click(function() {
if (isMagnified) {
init();//繪制原始圖像
}
else {
magnify();//繪制放大的圖像
}
});
}
/script
script src="jquery.js"/script
/body
/html
對(duì)于這些知識(shí)在一個(gè)叫秒秒學(xué)的教程網(wǎng)站上有相關(guān)的學(xué)習(xí)資料,有興趣的可以自己去看看,希望對(duì)你有幫助。
文件選擇之后可以在onchange事件當(dāng)中獲取當(dāng)前所選擇的文件(列表),并且可以獲得當(dāng)前文件的本地路徑,使用本地路徑賦值給圖片的src屬性,就達(dá)到了更換圖片的效果。
新聞名稱:html5圖片效果,html圖片特效大全
分享URL:http://jinyejixie.com/article2/dseceoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、企業(yè)建站、企業(yè)網(wǎng)站制作、App設(shè)計(jì)、品牌網(wǎng)站制作、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)