爲了讓網頁的使用體驗更好,咱們會讓網頁的某些元素對鼠標的動做作出響應。例如鼠標滑過、單擊按鈕的時候按鈕變色、變形。以前在不少網頁上看到了鼠標滑過一個圖片連接時圖片放大、拉近的效果,今天嘗試實現一下。html
思路:設置以圖片做爲
div
元素的背景,鼠標滑過div
的時候經過background
屬性放大圖片。git
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>background實現圖片拉近效果</title> <style> #box { background: url(../images/img022.png); width: 720px; height: 720px; margin: 0 auto; border: 1px solid #aaa; background-color: #444; } #box:hover { background-size: 100.5% 100.5%; } </style> </head> <body> <div id='box'> </div> </body> </html>
img
元素的width
height
屬性實現思路:當鼠標滑過圖片時,修改
img
元素的width
和height
屬性放大圖片github
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>img圖片拉近效果</title> <style> #box{ width:60%; min-width:1000px; min-height:800px; margin:0 auto; border:1px solid #aaa; background-color:#444; text-align:center; } img:hover{ width:723px; height:723px; } </style> </head> <body> <div id='box'> <img src="../images/img022.png" width='720px' height='720px' /> </div> </body> </html>
transform
放大圖片<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>transform實現圖片拉近效果</title> <style> a:hover img { transform: scale(1.005, 1.005); } </style> </head> <body> <a href="#"> <img src="../images/img022.png" /> </a> </body> </html>
transform
和transition
來放大圖片以上的3種實現方式中,圖片放大過程幾乎都是瞬間完成的,感受不流暢,視覺體驗也很差。同
transition
能夠設置放大過程經歷的時間,從而有流暢的感受。優化
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>transform、transform實現圖片拉近</title> <style> .test_a { display: block; margin: 0 auto; width:400px; overflow: hidden; } .test_a img { width: 100%; } .test_a:hover img { transform: scale(1.2); transition: all 1s ease 0s; } </style> </head> <body> <a href="" class="test_a"> <img src="../images/img022.png" /> </a> </body> </html>
上面這種方式,圖片放大過程是流暢的,可是縮小過程很生硬,能夠改進一下。url
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>transform、transform 圖片拉近 優化</title> <style> .test_a { display: block; margin: 0 auto; width:400px; overflow: hidden; } .test_a img { width: 100%; transform: scale(1); transition: all 1s ease 0s; } .test_a:hover img { transform: scale(1.2); transition: all 1s ease 0s; } </style> </head> <body> <a href="" class="test_a"> <img src="../images/img022.png" /> </a> </body> </html>
實驗的時候發現不少知識有點模糊了,該補習了。code
在線DEMO https://hgy9473.github.io/myl...orm