鼠标悬停改变图片位置和大小

15

我正在为我的网站制作一个按钮菜单,但在鼠标悬停时,图片的位置存在问题。目前我已经创建了这个http://jsfiddle.net/tNLUx/

当鼠标悬停在某个图片上时,我希望选中的图片增大,其他图片保持原位,就像第一张图片一样...我该如何让下面的图片增大并向下移动而不是向上移动?

#btnSocial {
  width:100px;
  position: relative;
  opacity: 0.5;
  -webkit-opacity: 0.5;
  -moz-opacity: 0.5;
  transition: 0.5s ease;
  -webkit-transition: 0.5s ease;
  -moz-transition: 0.5s ease;
}
#btnSocial:hover{
  width: 150px;
  opacity: 1;
  -webkit-opacity: 1;
  -moz-opacity: 1;
}
<img src="http://img24.imageshack.us/img24/3221/32845401.png" alt="img1" id="btnSocial" class="social1" />
<img src="http://img24.imageshack.us/img24/3221/32845401.png" alt="img1" id="btnSocial" class="social2"/>
<img src="http://img24.imageshack.us/img24/3221/32845401.png" alt="img1" id="btnSocial" class="social3"/>
<img src="http://img24.imageshack.us/img24/3221/32845401.png" alt="img1" id="btnSocial" class="social4"/>

2个回答

40

使用transform: scale(x, y)来缩放对象。
使用transform: translate(x, y)来移动对象。
这两个属性也可以组合使用:transform: scale(x, y) translate(x, y)

示例:

.btn-social {
    width: 100px;
    position: relative;
    opacity: 0.5;
    transition: 0.3s ease;
    cursor: pointer;
}

.btn-social:hover {
    opacity: 1;

    /** default is 1, scale it to 1.5 */
    transform: scale(1.5, 1.5);

    /** translate 50px from left, and 40px from top */
    /** transform: translate(50px, 40px); */

    /** combine both scale and translate */
    /** transform: scale(1.5, 1.5) translate(50px, 40px); */
}
<img src="http://sstatic.net/stackexchange/img/logos/so/so-icon.png?v=c78bd457575a" class="btn-social" />
<img src="http://sstatic.net/stackexchange/img/logos/so/so-icon.png?v=c78bd457575a" class="btn-social" /><br />
<img src="http://sstatic.net/stackexchange/img/logos/so/so-icon.png?v=c78bd457575a" class="btn-social" />
<img src="http://sstatic.net/stackexchange/img/logos/so/so-icon.png?v=c78bd457575a" class="btn-social" />


是的,transform:scale效果非常好,但问题是我无法使其他图像随着缩放对象改变其位置。 - iniestar

3

请查看http://jsfiddle.net/tNLUx/11/

从CSS中移除了position: relative;

#btnSocial{
    width:100px;
    opacity: 0.5;
    -webkit-opacity: 0.5;
    -moz-opacity: 0.5;
    transition: 0.5s ease;
    -webkit-transition: 0.5s ease;
    -moz-transition: 0.5s ease;

}

这个效果是我想要的,但如果没有position:relative属性,我无法控制图像的初始位置。 - iniestar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接