【发布时间】:2015-11-26 03:06:39
【问题描述】:
我有一个类似于卡片的 html 对象。这是我的代码:
<a class="card" href="/subjects/electronics.html" >
<div class="card_img" id="img_electronics"></div>
<h4>Electronics</h4>
<p class="card_description">Description</p>
<div class="line"></div>
<h5>GET STARTED</h5>
</a>
还有我的 CSS:
.card_img{
width: 350px;
height: 200px;
background-size: 350px 200px;
}
#img_electronics{
background-image: url(/images/electronics.jpg);
}
我在 css 中指定图像来源的原因是因为我想使用悬停效果在图像上创建颜色叠加。我有很多不同图片来源的卡片,所以我用JS来做效果:
$(document).ready( function() {
$('.card').hover(
function(){
pic = $(this).find("[id^='img_']");
read_img_url = pic.css("background-image");
val_img_url = read_img_url.replace(/["']/g, "");
$(pic).css("background", "linear-gradient(rgba(255,255,255, 0.3),rgba(255,255,255, 0.3)), " + val_img_url);
$(this).toggleClass('card_hover');
$(this).find('h5').toggleClass('h5_hover');
},
function(){
$(pic).removeProp("background");
$(pic).css("background-image", val_img_url);
$(pic).addClass('card_img');
$(this).toggleClass('card_hover');
$(this).find('h5').toggleClass('h5_hover');
});
});
一开始,每张图片都会正确显示。但是,第一次悬停后,页面上的图像大小保持不变,但只有一小部分实际图像存在。不过,悬停时的颜色叠加效果很好。
我尝试设置background: linear-gradient(rgba(255,255,255,0.0),rgba(255,255,255,0.0)), url(/images/electronics.jpg); 而不是背景图像,但 jQuery 将该属性读取为空字符串。任何建议如何在悬停后保留我的整个图像?
【问题讨论】:
-
this是document和.ready();没有hovercss或js函数出现在 Question ?$(pic).removeProp("background");的预期结果是什么? -
对不起,我在这里粘贴时不小心删除了部分代码。我现在修好了。 removeProp 的想法是确保我不会覆盖 background-image 属性
标签: javascript jquery css background hover