使用“数据:”的 CSS 透明背景图像

Posted

技术标签:

【中文标题】使用“数据:”的 CSS 透明背景图像【英文标题】:CSS transparent background image using "data:" 【发布时间】:2011-08-01 01:50:27 【问题描述】:

我在一些网站上看到您可以使用“数据”关键字在 CSS 中包含图像:

.stuff 
  background: transparent url(data:image/gif;base64,SOMEWEIRDCODEHERE) repeat center top;

奇怪的代码看起来像一个 base64 编码的字符串,如:

R0lGODlhMwAxAIAAAAAAAP/// yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGX ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd LbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wn k2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw==

看起来很酷:D

我想知道如何包含这样的透明 1x1 像素 GIF?有谁知道这种图像的数据代码?

对小且非常常见的图像执行此操作是否是个好主意?所有浏览器都支持吗?

【问题讨论】:

除非有什么我不知道的,否则没有理由使用间隔 gif 作为 CSS 背景图像。 嗨,本。我正在尝试使此处的行号无法选择:jsfiddle.net/rVwqR 只是防止通过 CSS 进行这样的选择;无需背景图片:***.com/questions/826782/… 谢谢,但在歌剧中不起作用 另见smallest filesize for transparent single pixel image 【参考方案1】:

那叫The data URI scheme

使用 Data URI Kitchen 将几乎所有内容转换为数据 uri。关联: http://software.hixie.ch/utilities/cgi/data/data

【讨论】:

@Alex:是的,那是因为图像是透明的,不是吗?无论哪种方式,一旦转换,请复制地址栏中的 url。应该以data开头。 @Alex:如果您想使用 Base64,请确保在我上面链接的页面上 选中 Base64(如果未选中,它通常比通常提供的更短);) 谢谢。它仍然很大,但我删除了 Photoshop 添加的元数据,现在它很小。但我只能在 FF 和 chrome 中禁用此图像下的选择。 Opera 仍然可以选择 :x【参考方案2】:
data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

这样做没有错,您节省了 HTTP 往返行程。唯一的缺点是它在旧版本的 IE 中不起作用(我相信 IE8 开始支持它)

【讨论】:

【参考方案3】:

这是一个像素的透明 GIF

background-image: url( data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== );

【讨论】:

【参考方案4】:

根据您需要支持的浏览器,您最好使用rgba()。我知道这个问题有点老了。

body 
  background-color: rgba( 0, 0, 0, .5 ); 

【讨论】:

【参考方案5】:

数据 URI 的最新浏览器支持详细信息:

http://caniuse.com/#feat=datauri

【讨论】:

以上是关于使用“数据:”的 CSS 透明背景图像的主要内容,如果未能解决你的问题,请参考以下文章

css 背景图像透明度使用CSS

在 CSS 中制作透明文本并在文本形状内拟合背景图像

使用 CSS3 悬停时的背景图像不透明度过渡

css 为图像背景添加背景颜色透明度

不透明度为 0.5 的 CSS 背景图像

css 背景图像不透明度/叠加