[英]Transparent PNG image doesn't regard background color, and acts as not transparent
HTML代码
<!DOCTYPE html>
<html>
<head>
<title>My Website</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="center-box">
<ul>
<li id="fim"><img src="images/1.png" /></li>
<li id="sim"><img src="images/2.png" /></li>
<li id="tim"><img src="images/3.png" /></li>
<li id="fom"><img src="images/4.png" /></li>
</ul>
</div>
</body>
</html>
CSS代码
html {
height:100%;
}
body {
background:black;
border:1px solid white;
margin:0;
padding:0;
position:absolute;
height:100%;
width:100%;
}
#center-box {
border:4px solid white;
color:white;
position:absolute;
width:250px;
height:250px;
left:50%;
top:50%;
margin-left:-150px;
margin-top:-150px;
background:grey;
}
#center-box ul {
list-style-type:none;
margin:5px;
padding:18px;
}
#center-box ul li {
display:inline;
}
#center-box ul li:hover {
background-color:blue;
}
它在页面中间只有一个框,并且有一个内嵌列表,其中包含透明图像(PNG)。 我想通过将透明图像悬停在透明图像上来更改其背景颜色,但由于图像不透明,因此它的作用是。 您将如何建议解决此问题?
对于PNG格式的图像,实际上IE6中存在alpha透明度问题。 由于这些浏览器缺少对Alpha通道的支持,因此有些标签可以支持您的代码。
如果您想要通过CSS
img {
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);
}
如果您想要通过JavaScript
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(...)";
您可以在此处查看更多陷阱
只要浏览器是IE 7+,透明PNG就会对我有很好的背景。 我怀疑您的PNG可能不是透明的。
我认为您应该在CSS中为li元素使用“行内阻止”显示:
#center-box ul li {
display: inline-block;
}
这样,背景不仅将应用于区域的文本部分,还将应用于整个图像。
希望能帮助到你!
对于<IE7:
这些浏览器不支持PNG alpha透明度。 但是,具有Alpha透明度的PNG-8图像将以完全透明的方式呈现。 但是truecolor PNG的alpha透明度在呈现时显示为灰色。
因此,请尽可能使用PNG-8图像,然后完成。 否则,您必须放弃对浏览器的支持或使用其答案中提到的Shiv之类的变通方法。
出于好奇...您是否在IE的较早版本中对此进行了测试?
:hover
伪类不适用于所有元素,并且inline-block
只能应用于IE7中的内联元素(列表项是块级),而不能应用于IE6。
我认为您将在<li>
使用<a>
; 这应该解决这两个问题(当然,透明度问题也要解决)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.