【发布时间】:2013-06-01 09:11:55
【问题描述】:
在 HTML 和 CSS 方面,我是一个完全的新手,并且刚刚建立我的第一个网站。我想创建一个图像,在悬停时显示文本并将图像淡化为较低的不透明度。我已经解决了所有的褪色问题,以及不透明度的变化。我唯一的问题是包含在我想要淡出的元素中的文本也会淡出,我希望将其保持为 100% 的不透明度。我尝试将文本的不透明度设置为 1,但它不会覆盖其容器的不透明度更改。例如,我有:
<div class="textbox">
<p class="boxtext">This is the text that will eventually go inside the box. It is blah lljsd iofu isduf iou eiosu dfi eiou sdiofu ioe soidfu oidu foiu foisu doiu eoiusodidfu oei osidfuosdiu ieu oisduf oiueoisu dfoi oiu soifu iod fioeo dfs.</p>
</div>
还有
div.textbox {
background-color: white;
margin-left: 2.5vw;
border: 2px solid lightgray;
width: 15vw;
height: 600px;
float: left;
}
div.textbox:hover {
background-color: lightgray;
border: 2px solid lightgray;
opacity: 0.5;
}
p.boxtext {
margin: 5% 5%;
}
这会创建我想要的悬停,但我无法将文本不透明度保持在 100%。
编辑:感谢您提供 rgba() 解决方案,这解决了问题。除了有背景图像而不是纯背景颜色之外,我还有另一个相同问题的情况。有没有类似的解决方法?
Edit2:用单独的透明 .png 替换不透明度更改后出现淡入淡出的问题。
a#imglink1 {
background-image: url('https://www.profilesinhistory.com/wp-content/uploads/2012/11/Apollo-11-NASA-Photograph-Signed-Neil-Armstrong-Michael-Collins-Buzz-Aldrin-200x200.jpg');
width: 200px;
height: 200px;
float: left;
-o-transition: 0.5s;
-ms-transition: 0.5s;
-moz-transition: 0.5s;
-webkit-transition: 0.5s;
transition: 0.5s;
}
a#imglink1:hover {
background-image: url('../images/apollo_transparent.png');
-o-transition: 1s;
-ms-transition: 1s;
-moz-transition: 1s;
-webkit-transition: 1s;
transition: 1s;
}
a#imglink1:hover p {
visibility: visible;
}
【问题讨论】:
-
只需将背景颜色更改为浅灰色,不用担心不透明度。
-
所以澄清一下,您想要一个带有背景图像的 div,当您将鼠标悬停在它上面时会淡出,但其中的文本保持完全不透明?这将是有问题的,因为不透明度是相对于父级的。如果父 div 的不透明度为 0.5,而您将子元素的不透明度设置为 1,那么您实际上会得到 1 * 0.5 = 0.5。换句话说,一个孩子不能比它的父母更不透明。作为一种解决方法,您可以改用 img 元素而不是 CSS 或者变得更聪明:jsfiddle.net/gtHTv
标签: css