webkit 設置body背景色爲透明的方法


   在瀏覽器中需要將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;這樣一來所有頁面的背景都透明瞭。

當然這需要各個平臺的支持。

由於我也新手,也是無奈開始轉向這個,不妥的還請指出,以增長見識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章