Html 如何制作没有背景图像的透明背景?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3222961/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-29 03:44:32  来源:igfitidea点击:

How to make a transparent background without background image?

htmlcsstransparentbackground-color

提问by Misha Moroshko

I would like a divto have a transparent background.
I tried to do this using background-colorand opacity, but the problem is that the border and the text inside become also transparent. Example here.

我想要div一个透明的背景。
我尝试使用background-colorand来做到这一点opacity,但问题是边框和里面的文本也变得透明。例子在这里。

Is this possible to achieve this without using transparent PNG background image ?

这是否可以在不使用透明 PNG 背景图像的情况下实现?

回答by DHuntrods

If you just want the color of the background to be transparent and not the child content, use

如果您只希望背景颜色透明而不是子内容,请使用

background-color: rgba(0,0,0,.5); // Sets to 50% transparent

background-color: rgba(0,0,0,.5); // Sets to 50% transparent

See this page for more details - it's a css3 spec so won't show up in every browser:

有关更多详细信息,请参阅此页面 - 它是 css3 规范,因此不会出现在每个浏览器中:

http://www.css3.info/introduction-opacity-rgba/

http://www.css3.info/introduction-opacity-rgba/

回答by Gabriele Petrioli

Yes.

是的。

Set background-color: transparent;

background-color: transparent;

and do not use opacity, as that is what makes semi-transparent the whole div..

并且不要使用opacity,因为那是使整个 div 半透明的原因。

updated your example at http://jsfiddle.net/eU7By/1/

http://jsfiddle.net/eU7By/1/更新了您的示例

UPDATEafter comments

评论后更新

you can use rgba for the background-color as @DHuntrods mentions. IE needs some tweaking of'course.. http://leaverou.me/2009/02/bulletproof-cross-browser-rgba-backgrounds/

您可以使用 rgba 作为背景颜色,如@DHuntrods 所述。IE 需要一些调整 of'course.. http://leaverou.me/2009/02/bulletproof-cross-browser-rgba-backgrounds/

回答by Adrien Be

The most cross-browser solutionis to use the opacity property on an additional "absolutely positioned" child element (in a relatively or absolutely positioned parent): it only there to contain the colored transparent background.

最跨浏览器的解决方案是在附加的“绝对定位”子元素(在相对或绝对定位的父元素中)使用 opacity 属性:它只在那里包含彩色透明背景。

Then you can use the opacityproperty to make this element transparent. Since this element has no children, the opacity will not affect any other element.

然后您可以使用该opacity属性使该元素透明。由于此元素没有子元素,因此不透明度不会影响任何其他元素。

Opacity is an IE5+ property, just use (see http://css-tricks.com/snippets/css/cross-browser-opacity/):

不透明度是 IE5+ 的属性,只需使用(参见http://css-tricks.com/snippets/css/cross-browser-opacity/):

-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";    /* IE 8 */
filter: alpha(opacity=50);  /* IE 5-7 */
-moz-opacity: 0.5;          /* Netscape */
-khtml-opacity: 0.5;        /* Safari 1.x */
opacity: 0.5;               /* Good browsers */

see the jsFiddle example http://jsfiddle.net/DUjzX/1/

参见 jsFiddle 示例http://jsfiddle.net/DUjzX/1/

The whole code looks like:

整个代码看起来像:

The HTML:

HTML:

 <div class="my-cool-wrapper">
      <div class="text-and-images-on-top">
           <p>Here some content (text AND images) "on top of the transparent background"</p>
           <img src="http://i.imgur.com/LnnghmF.gif">
      </div>
      <div class="transparent-background">
      </div>
 </div>

The CSS:

CSS:

 .my-cool-wrapper {
      position: relative;
 }
 .my-cool-wrapper .text-and-images-on-top {
      padding: 10px 15px 19px 15px;
      z-index: 1;
      position: relative; /* needed to enable the z-index */
 }
 .my-cool-wrapper .transparent-background {
      position: absolute;
      top: 0;    
      width: 100%;
      height: 100%;
      -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";       /* IE 8 */
      filter: alpha(opacity=10);  /* IE 5-7 */
      -moz-opacity: 0.1;          /* Netscape */
      -khtml-opacity: 0.1;        /* Safari 1.x */
      opacity: 0.1;               /* Good browsers */
      background-color: blue;
 }

read more: Set opacity of background image without affecting child elements

阅读更多: 在不影响子元素的情况下设置背景图像的不透明度

Screenshots proofsIE7IE8IE9IE10IE11

截图样张IE7IE8IE9IE10IE11

ps: I did not add the screenshots for Chrome, Firefox & Safari since these are much "better" browsers... trust me, it works for them too.

ps:我没有为 Chrome、Firefox 和 Safari 添加屏幕截图,因为这些是“更好”的浏览器......相信我,它也适用于它们。

回答by Amalgovinus

I had to use a 30x30 transparent gif as a background.

我不得不使用 30x30 的透明 gif 作为背景。

background:url('absolute path here');