webkit 设置body背景色为透明的方法

本文探讨了解决Webkit浏览器内核下body元素透明显示的问题。通过调整RenderBoxModelObject::paintFillLayerExtended函数中的baseColor属性实现背景透明,同时保持页面上的其他元素不透明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


   在浏览器中需要将body透明,而body上面的控件或者字等不透明,寻找了很久。现在终于找到了,记录下来备用,原因在于webkit浏览器的内核在判断body是否有背景色的时候,如果alpha为0.会将其背景改为baseclor,就不再透明了。


在RenderBoxModelObject.cpp文件中有函数 :

voidRenderBoxModelObject::paintFillLayerExtended()中有如下注释:

// If we have an alpha and we are paintingthe root element, go ahead and blend with the base background color. 

如果我们画的是根元素,就不管他的背景这些,直接用basecolor代替他的背景色。

since iframes/frames with no background inthe child document should show the parent's background.

没有背景的元素,使用父元素的背景代替。

Color baseColor =view()->frameView()->baseBackgroundColor();

可以直接修改这个baseColor,如果修改为baseColor = Color::transparent;这样一来所有页面的背景都透明了。

当然这需要各个平台的支持。

由于我也新手,也是无奈开始转向这个,不妥的还请指出,以增长见识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值