仅在特定区域的不透明度

Posted

技术标签:

【中文标题】仅在特定区域的不透明度【英文标题】:Opacity only at a particular area 【发布时间】:2012-07-28 22:31:12 【问题描述】:

我只想为左下角的 div 赋予不透明度。 可能吗?怎么样?

<div id="right_img"></div>

css

#right_img

     float:right;
     width:600px;
     height:400px;
     margin-top:100px;
     background:url(../images/assets/sobrf-maria-page.jpg) no-repeat bottom center;
     opacity:0.6;
     filter:alpha(opacity=60); 

如果我给整个 div 赋予不透明度,图像清晰度将会丢失。

【问题讨论】:

我不认为可以使用 CSS 为元素的特定区域赋予不透明度,除非您使用带有 RGBA 的 CSS 宏。也许你有一个你想要完成的例子,比如一个模型? 使用 html5 canvas 和 javascript 来做这些事情。 【参考方案1】:

改用 PNG 图像并让图像成为透明部分?

【讨论】:

【参考方案2】:

赋予元素不透明度总是会影响整个元素及其所有子元素。如果你只想给它的一个子元素 opacity 属性,你必须直接在那个元素上声明它。有时你必须引入一些辅助元素来达到你想要的效果。

例外是您声明的不继承到子元素的颜色的不透明度。使用新的rgba() 声明,(第四个参数是颜色的不透明度),您可以实现像“透明” div(透明背景)但字体完全不透明的效果。

在你的情况下(解释你的答案 - 它不是很清楚)只需使用普通的背景声明和这个rgba背景颜色就足够了:

#right_img
   background:rgba(x,y,z,0.6) url(../images/assets/sobrf-maria-page.jpg) no-repeat bottom center;

x,y,z = 0...255a = 0...1

请注意,旧 IE(甚至 IE8!)不支持 rgba() 声明。你需要一个过滤器来支持这些。幸运的是有一个:

filter:progid:DXImageTransform.Microsoft.gradient(
           startColorstr=#aaxxyyzz,
           endColorstr  =#aaxxyyzz);

其中第一个参数 (a) 是 0% = 00100% = FF 的不透明度。还有xx,yy,zz = 00...FF

【讨论】:

以上是关于仅在特定区域的不透明度的主要内容,如果未能解决你的问题,请参考以下文章

InkPresenter 仅在透明区域绘制

有没有办法在鼠标悬停时更改c3js堆积区域图表的不透明度

使用 rgba() 仅在背景图像上设置不透明度

更改ImageView中黑色像素的不透明度

在鼠标指针下使用 JS 或 CSS 更改图像不透明度?

jquery animate:一一改变元素的不透明度