CSS3实现带动画效果的照片墙页面

利用CSS3制作一个带有动画效果的照片墙:照片随意分散摆放在页面中,当鼠标放在移动到某张图片上,图片缓慢由倾斜转换为水平,并放大一定比例,移开鼠标,图片恢复原状。
使用到了以下CSS3属性:

  • transform;
  • transition;
  • box-shadow;
  • position;
  • z-index.

transform属性:

CSS3实现曲面阴影和翘边阴影中介绍了使用transform属性的skew(x-angle,y-angle)和rotate(angle)参数设置元素拉伸倾斜和旋转角度,在本次任务中,除了使用以上参数还将使用一个新的参数scale(值),该参数可以设定元素的放大倍数,支持小数;

transform: rotate(30deg) scale(1.3);
/*旋转30度,放大1.3倍*/
/*记得添加不同浏览器前缀*/

transition属性:

transition属性用于设定元素从一个样式变化为另一个样式的过渡时间;具体参数有:

  • transition-property:规定该过渡效果的对哪些CSS属性起效。值有三种:none|all|property;
  • transition-duration:规定过渡效果的时间长度,默认值为0;
  • transition-timing-function:规定过渡效果的速度曲线:匀速过渡、慢速开始、快速开始等,详细参数参考W3School中的介绍
  • transition-delay:规定过渡效果在几秒后开始,默认值为0;
transition:all 0.5s ease-in; 
/*所有属性都起效,过渡时间0.5s,速度曲线:慢速开始*/
/*记得添加不同浏览器前缀*/

box-shadow属性

该属性在CSS3实现曲面阴影和翘边阴影有过介绍;

参数:

  • **h-shadow(必需):**水平阴影的位置。允许负值。
  • **v-shadow(必需):**垂直阴影的位置。允许负值。
  • **blur(可选):**模糊距离。(一般不设置)
  • **spread(可选):**阴影的尺寸。
  • **color(可选):**阴影的颜色。请参阅 CSS 颜色值。
  • **inset(可选):**将外部阴影 (outset) 改为内部阴影。

添加多个阴影用,隔开。

box-shadow:15px 15px 20px rgba(50, 50, 50, 0.4); 
/*记得添加不同浏览器前缀*/

position属性:

该属性用于对元素进行定位,已经很熟悉了,不再多做介绍。

z-index属性:

该属性设置元素的堆叠顺序。值越高,顺序越靠前;该元素仅在定位元素上奏效。

下面是本次任务的代码,HTML:

<code class="html">
  
  <html lang="en" >
  <head >
    <meta charset="UTF-8" >
    <title>照片墙  </title>
    <link rel="stylesheet" type="text/css" href="css/style.css" >
  
  <body >
    <div class="container">
      <img class="pic pic1" src="images/mm1.jpg" alt="" >
      <img class="pic pic2" src="images/mm2.jpg" alt="" >
      <img class="pic pic3" src="images/mm3.jpg" alt="" >
      <img class="pic pic4" src="images/mm4.jpg" alt="" >
      <img class="pic pic5" src="images/mm5.jpg" alt="" >
      <img class="pic pic6" src="images/mm6.jpg" alt="" >
      <img class="pic pic7" src="images/mm7.jpg" alt="" >
      <img class="pic pic8" src="images/mm8.jpg" alt="" >
      <img class="pic pic9" src="images/mm9.jpg" alt="" >
      <img class="pic pic10" src="images/mm10.jpg" alt="" >
    </div >
  
  

CSS:

*{
  margin: 0;
}
body{
  background-color: #dbdbdb;
}
.container{
  width:960px; 
  height:450px; 
  margin:60px auto; 
  position:relative;
}
.container img{
  background-color: #fff;
  padding: 5px;
  border: 1px solid #ddd;
  box-shadow: 5px 5px 3px rgba(0,0,0,0.3); 
  -webkit-box-shadow: 5px 5px 3px rgba(0,0,0,0.3); 
  -moz-box-shadow: 5px 5px 3px rgba(0,0,0,0.3); 
  -o-box-shadow: 5px 5px 3px rgba(0,0,0,0.3); 
  position: absolute;
  z-index: 1;
  -webkit-transition:all 0.5s ease-in;
  -moz-transition:all 0.5s ease-in;
  transition:all 0.5s ease-in; 
}
.container img:hover{
  box-shadow:15px 15px 20px rgba(50, 50, 50, 0.4); 
  -webkit-box-shadow:15px 15px 20px rgba(50, 50, 50, 0.4);; 
  -moz-box-shadow:15px 15px 20px rgba(50, 50, 50, 0.4);; 
  -o-box-shadow: 15px 15px 20px rgba(50, 50, 50, 0.4);; 
  -webkit-transform: rotate(0deg) scale(1.3); 
  -moz-transform: rotate(0deg) scale(1.3); 
  transform: rotate(0deg) scale(1.3);
  z-index: 2;
}
.pic1{
  left: 500px;
  top: 100px;
  -webkit-transform: rotate(30deg); 
  -moz-transform: rotate(30deg); 
  transform: rotate(30deg);
}
.pic2{
  left: 100px;
  top: 100px;
  -webkit-transform: rotate(-20deg); 
  -moz-transform: rotate(-20deg); 
  transform: rotate(-20deg);
}
.pic3{
  left: 300px;
  top: 100px;
  -webkit-transform: rotate(5deg); 
  -moz-transform: rotate(5deg); 
  transform: rotate(5deg);
}
.pic4{
  left: 600px;
  top: 150px;
  -webkit-transform: rotate(-30deg); 
  -moz-transform: rotate(-30deg); 
  transform: rotate(-30deg);
}
.pic5{
  left: 700px;
  top: 100px;
  -webkit-transform: rotate(-15deg); 
  -moz-transform: rotate(-15deg); 
  transform: rotate(-15deg);
}
.pic6{
  left: 100px;
  top: 400px;
  -webkit-transform: rotate(-30deg); 
  -moz-transform: rotate(-30deg); 
  transform: rotate(-30deg);
}
.pic7{
  left: 350px;
  top: 300px;
  -webkit-transform: rotate(45deg); 
  -moz-transform: rotate(45deg); 
  transform: rotate(45deg);
}
.pic8{
  left: 80px;
  top: 200px;
  -webkit-transform: rotate(5deg); 
  -moz-transform: rotate(5deg); 
  transform: rotate(5deg);
}
.pic9{
  left: 600px;
  top: 300px;
  -webkit-transform: rotate(-20deg); 
  -moz-transform: rotate(-20deg); 
  transform: rotate(-20deg);
}
.pic10{
  left: 800px;
  top: 400px;
  -webkit-transform: rotate(30deg); 
  -moz-transform: rotate(30deg); 
  transform: rotate(30deg);
}