悬停淡出不与砌体CSS一起使用

时间:2014-07-07 12:03:36

标签: javascript jquery html css ember.js

我正在我的投资组合网站上工作,在工作页面上,我有一个像pinterest一样的砖石布局,上面有我的一些作品的图像。在悬停图像时,我使用css来显示标题框,这可以按预期工作。但是,我希望图像在没有标题框失败的情况下淡出,当我在图像上添加悬停渐变时,无论是通过CSS还是javascript / jquery,它只能在第一行图像上正常工作。或者说它在所有行上都能正常工作,但它会打破除第一行之外的任何行上的标题框。它肯定似乎是由于我正在使用的行,因为如果我将css更改为只有一行它按预期工作。

以下是其中一个图像面板的代码:

<div class="panel panel-primary work-panel image text-center">
  <script id="metamorph-29-end" type="text/x-placeholder"></script>
    <div class="panel-image hide-panel-body hide-panel-footer">
  <div class="img-wrap">
      <img src="./imgs/abstract-realism.jpg" data-bindattr-1="1" class="panel-image-preview">
  <div class="img-overlay">
  <h4><script id="metamorph-30-start" type="text/x-placeholder"></script>Abstract Reality<script id="metamorph-30-end" type="text/x-placeholder"></script></h4>
      <p><script id="metamorph-31-start" type="text/x-placeholder"></script>This piece was completed during my studies at the Art Institute of Virginia Beach. The drawing was done in colored chalk and conte on paper.<script id="metamorph-31-end" type="text/x-placeholder"></script></p>
  </div>
  </div>
    </div>
    <div class="panel-body">
      <h4><script id="metamorph-32-start" type="text/x-placeholder"></script>Abstract Reality<script id="metamorph-32-end" type="text/x-placeholder"></script></h4>
      <p><script id="metamorph-33-start" type="text/x-placeholder"></script>This piece was completed during my studies at the Art Institute of Virginia Beach. The drawing was done in colored chalk and conte on paper.<script id="metamorph-33-end" type="text/x-placeholder"></script></p>
    </div>
  </div>

这是控制字幕框的CSS:

.img-wrap{
overflow:hidden;
position:relative;
}
.img-overlay {
background-color:#000;
bottom:0;
color:#fff;
opacity:0;
filter: alpha(opacity = 0);
position: absolute;
width:100%;
z-index:9999;
}
.img-overlay h4, .img-overlay p{
padding:0 10px;
}
.img-wrap:hover .img-overlay{
opacity:0.9;
filter: alpha(opacity = 90);
transition:opacity 0.25s;
-moz-transition:opacity 0.25s;
-webkit-transition:opacity 0.25s;
}

这是控制淡入淡出的ember视图上的jquery(以$(&#39; .img-wrap&#39;)开头的函数:

    App.WorksfadeView = Ember.View.extend({
        didInsertElement : function(){
        Ember.run.scheduleOnce('afterRender', this, function(){
                $(function() {
                        $("a[rel^='prettyPhoto']").prettyPhoto({social_tools: false, theme:    'dark_rounded', allow_resize: false});
                        $('.work-panel.image').on('click', function(e) {
                                var img = $(this).find('img').attr('src');
                                var name = $(this).find('h4').text();
                                var desc = $(this).find('p').text();
                                $.prettyPhoto.open(img,name,desc)
                        });
                      $('.img-wrap').hover(function(){
                                      $(this).find('img').addClass("faded");
                              }, function(){
                                      $(this).find('img').removeClass("faded");
                      });
                });
    });
  }
});

您可以在此处找到仅包含标题的作品页面(以显示其自身的作用):

http://adminref.com/#/works

这就是我添加图片淡入时会发生的情况:

http://adminref.com/#/worksfade

正如您所看到的那样,它在第一行上按预期工作,但就是这样。也许这是我需要在ember.js级别更正的问题?我尝试通过css添加淡入淡出和评论框框,通过jquery或一个通过jquery和另一个通过css,没有任何东西适用于所有行我卡住请帮忙。

1 个答案:

答案 0 :(得分:1)

好吧,如果我理解得很好,你会在悬停在你的项目上时尝试淡出/淡出动画吗?

目前,您正在添加一个在悬停时提供额外样式的类。 您最好只使用CSS (因此管理起来比javascript事件更容易)。

示例:

.panel-image img.panel-image-preview {
  width: 100%;
  border-radius: 2px 2px 0px 0px;
  transition: opacity .2s ease-in-out; /* you may use prefixes */ 
}
.panel-image:hover img.panel-image-preview {
  opacity: .5;
}
.panel-image .img-overlay {
  background-color: #000;

bottom: 0;
color: #fff;
opacity: 0;
filter: alpha(opacity = 0);
position: absolute;
width: 100%;
z-index: 9999;
  transition: opacity .2s ease-in-out; /* you may use prefixes */
}
 .panel-image:hover .img-overlay {
  opacity: 1;
}

我只是在悬停时需要转换的元素上添加了转换,并在悬停时进行了样式修改(而不是使用javascript添加的类)。所以你必须从JS代码中删除类切换

更新: 您显然遇到了Chrome错误。这是一个解决方法:

.img-wrap {
overflow: hidden;
position: relative;
-webkit-transform: translate3d(0,0,0); /* this will do the job */
}

请注意,这只是一种解决方法。

尽管如此,我强烈建议使用完整的CSS解决方案:更顺畅,它肯定会更容易处理和维护。