[英]Hide without removing background image
有没有办法隐藏CSS中的背景图像而不删除它? 为方便起见,我使用CSS来改变它是否显示,并依靠一个类来显示它。 所以,默认情况下,它会被隐藏,但是类会让它显示出来。 因此,不能改变背景图像。 我可以使用哪些背景属性来实现此目的? 将大小更改为“0 0”实际上使其在左上角变为1px - 未完全隐藏。 CSS3解决方案被接受。
刚遇到同样的问题。 我用:
background-size: 0 0;
我认为这比使用background-position
一些huuuuge负值更友好一些。
您可以尝试将背景图像定位在可视区域之外,例如设置
background-position: -9999px -9999px
或根据可视区域不那么剧烈的东西。
创建一个css属性并使用toggleClass:
.class {
background-image: url(...);
}
.class.toggle {
background-image: none;
}
$('.class').toggleClass('toggle');
假设您使用的是javascript,您可以使用它来修改属性。 在我发布的示例中,我假设你也有jQuery lib,如果不是直接的DOM操作也可以。 我也在调用你希望切换其背景图像输入节点的元素。 最后这个方法使用cookies。
=>隐藏
setCookie(inputNode.name, $(inputNode).css("background-image"),1);
$(inputNode).css("background-image", "url()");
=>取消隐藏
$(inputNode).css("background-image",getCookie(inputNode.name));
哪里
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}
这对我有用。 希望能帮到你。
您可以使用background-position
并将其移出元素视图。
element.class{
background-position:-9999px;
}
要么
element.class{
background:transparent;
}
第二个解决方案应该有效。 我没有测试过它,我不确定它是否符合“删除它”的条件。
background-position: -9000 -9000
是我认为的最佳选择
复古网页设计的一个转折是使用经典的spacer.gif
来替换/隐藏您的背景图像。 回想一下,在CSS的早期(可怕)时代, spacer.gif被用作布局网格系统(带表格)的一种方式。 它是具有一个透明像素的单像素图像。
您可以在21世纪使用spacer.gif,如下所示:
#ImageBox
{
background: url(../images/my-regular-background.png) no-repeat center center;
&.ImageLoaded
{
background-image: url(../images/spacer.gif);
}
}
只是要添加到混合中,您可以在样式属性中放置2个图像,当您想要隐藏它们时,只需在属性中更改它们的顺序即可。 这将满足不操纵图像的需要。
您的hider.gif可以是单个像素,也可以是完全不同的图像。
<!DOCTYPE html>
<html>
<head>
<style>
bg_hidden {
background-image: url(hider.gif), url(realImage.jpg);
}
bg_shown {
background-image: url(realImage.jpg), url(hider.gif);
background-repeat: repeat, repeat;
}
</style>
</head>
<body>
<div class="bg_shown">
<button onclick="this.parent.className='bg_hidden'">Hide BG</button>
</div>
</body>
</html>
我没有检查这个代码的bug,所以买家要小心;-)
我认为背景位置答案可能是最好的解决方案,但我想提高对混合的可见性。 设置visible: hidden
将从视图中删除它,但保持结构的机智。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.