图像悬停时的奇怪问题

时间:2014-03-24 20:14:26

标签: html css

我对鼠标图像悬停有影响,但我遇到了问题。

我有3篇文章,当我悬停图像时,所有其他图像都向右移动。

我发现问题出在这里:.second-effect:hover a.info {},因为如果我在悬停图片时移除transform:scale(1,1),其他图片就不会移动。

但是如果没有这种转换,我想要在图像中心显示的图标字体就不会出现。

问题在于:

.second-effect:hover a.info {
    opacity:1;
    -moz-transform:scale(1,1);
    -webkit-transform:scale(1,1);
    -o-transform:scale(1,1);
    -ms-transform:scale(1,1);
    transform:scale(1,1);
    -moz-transition-delay:0.3s;
    -webkit-transition-delay:0.3s;
    -o-transition-delay:0.3s;
    -ms-transition-delay:0.3s;
    transition-delay:0.3s;
}

所以我想在我的图像中心有一个图标字体,我正在使用css过渡。

如果我删除了transform:scale(1,1)图标,则不会显示。

如果我在悬停图像时不删除此代码,其他图像也会移动。

有谁能理解为什么会这样?

我的jsfiddle:

http://jsfiddle.net/ritz/m78QF/1/

我这个问题的全部HTML:

 <article id="news">
    <div class="view second-effect">
        <img src="imagens/transferir (1).jpg" />
        <div class="mask">
            <a href="#" class="info"><i class="fa fa-download"></i></a>
        </div>
     </div>
      <h2>
       <a>Title Post number one</a>
        <br />
     </h2>
     <span>Date of post number one</span> 
     <p>Post Number one</p>
</article>

我对这个问题的全部css:

.info>i{font-size:1.7em; margin-top:15px; color:#000;  }

    #news img
    {
        width:155px;
        height:140px; 
    }

    .view a.info {

       padding:0;
       width:20px;
       height:20px;
    }

    .view {
       width: 155px;
       height: 140px;
       float: left;
       overflow: hidden;
       position: relative;
       text-align: center;
       box-shadow: 0px 0px 5px #aaa;
       cursor: default;
       margin-right:20px; 
       border:3px solid #ccc;
       margin-top:4px;

    }
    .view .mask, .view .content {
        width: 155px;
       height: 140px;
       position: absolute;
       overflow: hidden;
       top: 0;
       left: 0;
    }

    .view img {
       display: block;
       position: relative;
    }
    .view a.info>i{

    }    
    .second-effect .mask {
       opacity: 0;
       overflow:visible;
       border:0px solid rgba(0,0,0,0.7);
       -moz-box-sizing:border-box;
       -webkit-box-sizing:border-box;
       box-sizing:border-box;
       -webkit-transition: all 0.4s ease-in-out;
       -moz-transition: all 0.4s ease-in-out;
       -o-transition: all 0.4s ease-in-out;
       -ms-transition: all 0.4s ease-in-out;
       transition: all 0.4s ease-in-out;
    }
    .second-effect a.info {
        position:relative;
        top:-10px;
        opacity:0;
       -moz-transform:scale(0,0);
       -webkit-transform:scale(0,0);
       -o-transform:scale(0,0);
       -ms-transform:scale(0,0);
       transform:scale(0,0);
       -webkit-transition: -webkit-transform 0.2s 0.1s ease-in, opacity 0.1s ease-in-out;
       -moz-transition: -moz-transform 0.2s 0.1s ease-in, opacity 0.1s ease-in-out;
       -o-transition: -o-transform 0.2s 0.1s ease-in, opacity 0.1s ease-in-out;
       -ms-transition: -ms-transform 0.2s 0.1s ease-in, opacity 0.1s ease-in-out;
       transition: transform 0.2s 0.1s ease-in, opacity 0.1s ease-in-out;
    }
    .second-effect:hover .mask {
       opacity: 1;
       border:55px solid rgba(0,0,0,0.7);
    }
    .second-effect:hover a.info {
        opacity:1;
        -moz-transform:scale(1,1);
        -webkit-transform:scale(1,1);
        -o-transform:scale(1,1);
        -ms-transform:scale(1,1);
        transform:scale(1,1);
        -moz-transition-delay:0.3s;
        -webkit-transition-delay:0.3s;
        -o-transition-delay:0.3s;
        -ms-transition-delay:0.3s;
        transition-delay:0.3s;
    }

2 个答案:

答案 0 :(得分:0)

bottom: 5px;添加到.view img应该可以实现此目的。

JSFiddle宽度已更新.view img

.view img {
   display: block;
   position: relative;
   bottom: 5px
}

编辑: 变化

.second-effect:hover .mask {
opacity: 1;
border: 55px solid rgba(0,0,0,0.7);
}

.second-effect:hover .mask {
opacity: 1;
border: 55px solid rgba(0,0,0,0.7);
padding-top: 36px;
}

它会使过渡区的白色区域变大。

答案 1 :(得分:0)

为什么您的CSS设置了margin-top?那会不会压低你的图标?尝试将其评论出来,看看它是否会改变图标的​​位置。如果确实如此,只需缩小margin-top,即可将图标放置到位。

.info>i
{
font-size:1.7em; 
/* margin-top:15px; */ 
color:#000; 
margin-bottom:5px; 
}