我正在我的投资组合网站上工作,在工作页面上,我有一个像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/#/worksfade
正如您所看到的那样,它在第一行上按预期工作,但就是这样。也许这是我需要在ember.js级别更正的问题?我尝试通过css添加淡入淡出和评论框框,通过jquery或一个通过jquery和另一个通过css,没有任何东西适用于所有行我卡住请帮忙。
答案 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解决方案:更顺畅,它肯定会更容易处理和维护。