1. 程式人生 > >使用html+css實現一個個人照片牆

使用html+css實現一個個人照片牆

今天我們來簡單的實現一個個人照片牆

照片呈不規則的角度擺放,當滑鼠放在照片上時,照片會放大;
滑鼠離開照片時,照片回到原來的狀態。
其實只要用CSS3的一些屬性完全就可以實現這樣的效果,無須一行js程式碼~~

程式碼分為兩部分

HTML內容其實很簡單,就是在一個div裡面放上幾個圖片

<div>
    <h1>人生就是搞事
   
    </h1>
  <p id=ji>每天睡覺的時候問自己:今天一天過得不錯吧?夢想是不是更遠了?</p>
  </div>

 <div>
   <div class="mm" align=center>
           <img src=1.jpg / width=250px>
           <img src=2.jpg / width=270px>
           <img src=3.jpg / width=260px>
           <img src=4.jpg / width=290px>
           <img src=5.jpg / width=290px>
           <img src=6.jpg / width=250px>
           <img src=7.jpg / width=250px>
           <img src=8.jpg / width=290px>
           <img src=9.jpg / width=300px>
           <img src=10.jpg / width=300px>

 
   </div>

接下來就是CSS部分的程式碼

h1{color:#CFB53B;font-family:方正清刻本悅宋;text-align:center;}
body{background:url(bg.jpg)top center no-repeat;background-size:cover;}
#ji{font-family:"Courier New", Courier, monospace;
     font-size:24px;text-align:center;color:#6B4226;}
 
 .con{
    width: 960px;
    height: 500px;
    margin:100px auto;
    position: relative;}

img{
    position:absolute;
    padding: 10px 10px 15px;
    background:#fff;
    border:1px solid #ddd;
    cursor:pointer;
}
 img:nth-of-type(1){transform:rotate(20deg);z-index:2;
 left:10%;
    top:180px;}
 img:nth-of-type(2){transform:rotate(10deg);z-index:4;
 left:25%;
    top:180px;}
 img:nth-of-type(3){transform:rotate(-10deg);z-index:1;
 left:40%;
    top:180px;}
 img:nth-of-type(4){transform:rotate(5deg);z-index:2;
 left:55%;
    top:180px;}
 img:nth-of-type(5){transform:rotate(10deg);z-index:3;
 left:70%;
    top:180px;}
 img:nth-of-type(6){transform:rotate(-5deg);z-index:1;
 left:10%;
    top:500px;}
 img:nth-of-type(7){transform:rotate(10deg);z-index:2;
 left:25%;
    top:500px;}
 img:nth-of-type(8){transform:rotate(20deg);z-index:1;
 left:40%;
    top:500px;}
 img:nth-of-type(9){transform:rotate(10deg);z-index:4;
 left:55%;
    top:500px;}
 img:nth-of-type(10){transform:rotate(-10deg);z-index:1;
 left:70%;
    top:500px;}
    
    img:hover{
    transform:scale(2,2);
    transition:all 3s;
    box-shadow: 10px 10px 15px #034663;
    z-index:20
    }

首先,為了照片牆美觀一些,我們在主體部分加入了一張背景圖片,使得整個介面不單調。

然後為照片牆的名稱加一些特殊字型和顏色,並使文字內容居中。

接下來就是照片的佈局和旋轉特效了,首先我們為每一個圖片設定一個position:absolute絕對定位

因為我們待會兒需要用到z-index來為圖片設定縮放和堆疊的效果,如果沒有絕對定位的話所有的圖片都會層疊在一起

為了沒個圖片設定 padding: 10px 10px 15px;(上下左右四個內邊距為10px)background設定白色,這樣每個圖片都

擁有了一個白色的邊框,然後設定游標樣式cursor,使cursor屬性值為pointer,當滑鼠放在圖片上將顯示手指樣式。

然後使用nth-of-type(n)選擇器來逐個選擇圖片,img:nth-of-type(1)代表選擇第一個圖片,以此類推,

使用transform:rotate()來為圖片設定一個旋轉角度,角度可以為負。

使用z-index:()來設定圖片的堆疊屬性,也就是z軸

使用left:();top:()來為圖片設定擺放位置,從程式碼可以看出,我們為前面五張圖片設定高度180px使其呈一列擺放

圖片間隔15%規律擺放,第二排圖片高度設定為500px,當然這裡的值並不固定,為了美觀或者個性也可以將圖片隨

意擺放於視窗某處。

接下來就是設定當滑鼠放在圖片上圖片放大的特效了,使用img:hover設定當滑鼠懸停圖片時

transform:scale(x,y);圖片進行縮放的比列x y可以不相等,我們這裡設定了放大2倍

transition:all ns;來規定完成這個動作所需要的時間,這裡我們設定時間為3s

box-shadow來為圖片設定陰影效果,其中水平陰影以及垂直陰影設定為必須,這裡我們設定水平與垂直為10px

模糊距離為15px,因為我們設定了hover,所在陰影效果只會在圖片放大之後才有效果

接下來依然設定z-index:(),這裡的值要大於前面每張圖片的值,這樣當圖片放大之後才會現在在螢幕前方

這樣呢我們一個簡單的照片牆就以及完成了

效果展示