將需要用到的圖片、內容用html語法顯示在網頁
<div class="ant"> <img class="animg" src="images/animate.png" /> <div class="cnt"> <div class="txt"> <h3>姓名:郭哲瑋</h3> <h3>就讀學校:崑山科技大學</h3> <h3>科系:資訊管理系 研究所</h3> </div> </div> </div>
藍色字依照自己的設定去寫。
類似像這樣:
會發現圖片超大張,因位現在是圖片原本的尺寸,所以很大張。
我們可以用兩種方式讓圖片等比例縮小
這裡我們選擇用第2種方式,因為未來放在RWD網頁上才能讓整體隨著螢幕比例縮放。
.ant{
width:20%;
height:300px;
border:1px solid gray;
}
左上角會多一個方框,像這樣:

.animg{
height:100%;
}
這樣圖片就會依照外層div的高度做縮放
可以試著將外層的div(ant)的高度(height)變大或變小,可以發現圖片也會跟著變大變小。
從上面的範本可以發現圖片跟文字其實是重疊的,只是滑鼠滑入後圖片會消失,然後文字會出現,在沒有做這些效果時,其實他們是重疊的,要怎麼做呢??
這個部分就需要用到之前有講到的 position裡面的relative 和 absolute 這兩個功能。
.ant{
width:20%;
height:300px;
border:1px solid gray;
****新增下面這幾行****
position:relative;
margin-left:auto;
margin-right:auto;
margin-top:50px;
}
像這樣:
你會發現整體版面都在畫面中間,但這是因為用margin的關係。那 position 的部分在這裡是看不出來有效果的,這部分的position主要是讓外層的div(ant)變成父元素,讓裡面的圖片或其他元素以他為父元素做絕對路徑。
.animg{
height:100%;
position:absolute; **新增這一行**
}
div(cnt):
.cnt{
position:absolute;
width:100%;
}
像這樣:
你會發現圖片跟文字就可以重疊了
再來就是要做滑鼠的部分,當滑鼠滑入時最外層的div(ant)時會顯示效果。滑鼠的部分就是用 hover,滑鼠滑入後的效果就要用到之前講的 animation 部分。
animation用法:
@keyframes demo1 {
from { width: 100%; }
to { width: 120%; }
}
將動畫寫入要動作的那個 div 裡面
圖片移動的部分,因為我們已經設定好絕對路徑,所以只要用動畫讓圖片向右移動即可,那淡出的部分這邊我們使用透明度(opacity)的方式讓圖片消失。
@keyframes imgef {
from{left:0px; opacity:1;}
to {left:200; opacity:0;}
}
.ant:hover .animg{
animation-name:imgef; ---> 動畫名稱
animation-duration:1s; ---> 幾秒要跑完動畫
animation-iteration-count:1; ---> 要跑的次數
animation-fill-mode:forwards; ---> 動畫跑完後要維持的模樣
}
當滑鼠移到黑框時,圖片就會淡出,離開後就會恢復
文字這部分是當滑鼠滑入後才會出現,代表他一開始就不會出現,所以我們要先讓文字的部分一開始是不會顯示的。
.txt{
position:absolute;
opacity:0;
padding:10px;
}
這樣文字一開始就不會出現在網頁上
@keyframes txtef {
from{left:-200px; opacity:0;}
to {left:0px; opacity:1;}
}
.ant:hover .txt{
animation-name:txtef; ---> 動畫名稱
animation-duration:1s; ---> 幾秒要跑完動畫
animation-iteration-count:1; ---> 要跑的次數
animation-fill-mode:forwards; ---> 動畫跑完後要維持的模樣
}
當滑鼠移到黑框時,文字就會出現
在第一步驟寫html的部分時,我們在txt的div外還有在包一層名叫cnt的div,除了要做position的絕對路徑外,另一個用途就是外框線了,從範本來看感覺是線條慢慢出現,其實是讓cnt這個div的高度從0px慢慢變大。所以他不是線條慢慢出現,而是讓整個div的高度慢慢變大的效果,線條則是在滑鼠滑入後一起出現。
@keyframes cntef{
from{height:0px;}
to {height:100%;}
}
.ant:hover .cnt{
animation-name:cntef; ---> 動畫名稱
animation-duration:1s; ---> 幾秒要跑完動畫
animation-iteration-count:1; ---> 要跑的次數
animation-fill-mode:forwards; ---> 動畫跑完後要維持的模樣
border:5px solid black; --->顯示 5px寬的黑色外框線
}
當滑鼠移到黑框時,會有框線展開效果
最後再把一開始ant這個div裡的外框線(border)拿掉,就完成了