Open
Bug 1400779
Opened 7 years ago
Updated 2 years ago
currentColor as border-color may leave visual artifacts around the border
Categories
(Core :: Web Painting, defect, P3)
Tracking
()
NEW
People
(Reporter: Ceremony, Unassigned)
References
Details
(Keywords: regression)
Attachments
(2 files)
User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Build ID: 20170914024831
Steps to reproduce:
Take any DOM element and apply the following styling (see currentColor.html):
background: black;
border: 5px solid currentColor;
color: white;
width: 100px;
height: 100px;
border-radius: 100%;
Actual results:
Around the white border, some of the black background will shine through.
Expected results:
The element should be visually identical to an element with the border-color explicitly set to white, without any of the background-color around the border.
Reporter | ||
Comment 1•7 years ago
|
||
Comment 2•7 years ago
|
||
happens only with border with radius (maybe we're using different bezier control points for background and border in some case...?)
moving to Core :: Layout for now (might be underlying graphics part tho)
Status: UNCONFIRMED → NEW
Component: Untriaged → Layout
Ever confirmed: true
Product: Firefox → Core
Comment 3•7 years ago
|
||
apparently it's from bug 1266621,
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=ac1c4519a19a49e45857d4355bea46b4e1a5fe04&tochange=022b1fcfe8337d5bccf0e341626ab0a4cb32533e
but I'm not sure whether that actually regressed or it discovered pre-existing issue, since it just modifies only the color, not the area.
xidorn, do you have any ideas?
Component: Layout → CSS Parsing and Computation
Flags: needinfo?(xidorn+moz)
Keywords: regression
See Also: → 1266621
Comment 4•7 years ago
|
||
So this is a pre-existing issue. Before we implement the new currentcolor support, there is another keyword for the currentcolor behavior these days, which is -moz-use-text-color. (Supporting of this was dropped at the same time in bug 1266621.)
If you change the style of #bad to
#bad {
border-color: currentColor;
border-color: -moz-use-text-color;
color: white;
}
this issue can be seen from earlier version, back to at least Firefox 5. So this is an old painting issue revealed by a style system change.
Looking at the code, I think the difference here is because of the check in IsOpaqueBorderEdge function [1] which returns false when foreground color involves, and consequently we use different code path to clip the content.
Similar issue can be seen on the #good if you change the style slightly to something like
#good {
border-color: white;
border-left-color: rgba(255,255,255,.95);
}
which kinda confirms my theory (related IsOpaqueBorderEdge) above.
[1] https://searchfox.org/mozilla-central/rev/1c13d5cf85f904afb8976c02a80daa252b893fca/layout/painting/nsCSSRendering.cpp#2053-2057
Component: CSS Parsing and Computation → Layout: Web Painting
Flags: needinfo?(xidorn+moz)
Updated•7 years ago
|
Priority: -- → P3
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•