Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 0f15e39

Browse files
clshortfusemmalerba
authored andcommitted
fix(button): fix rendering issue with borders and webkit browsers (#9449)
Webkit has a rendering bug with child elements whos parent uses a rounded corner. In this case, this is a ripple on a rounded button. To circumvent this issue, we applied a 1x1 PNG image mask on the ripple element. The image mask is causing issues with Chrome rendering opaque under certain conditions. An image mask is only needed for Safari 8, which is no longer supported. Instead we will just Safari and Chrome to use a compositing layer by forcing an empty Z-axis translation. * Inherit border radius from buttons * Remove image mask CSS * Use translateZ to force webkit to create a compositing layer Fixes #9154, #10086 References: https://bugs.webkit.org/show_bug.cgi?id=30475
1 parent 0d276f3 commit 0f15e39

File tree

1 file changed

+5
-17
lines changed

1 file changed

+5
-17
lines changed

src/components/button/button.scss

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,6 @@ button.md-button::-moz-focus-inner {
115115
padding: $baseline-grid;
116116
width: $icon-button-width;
117117
border-radius: $button-icon-border-radius;
118-
.md-ripple-container {
119-
border-radius: $button-icon-border-radius;
120-
background-clip: padding-box;
121-
overflow: hidden;
122-
// The following hack causes Safari/Chrome to respect overflow hidden for ripples
123-
-webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC');
124-
}
125118
}
126119

127120
&.md-fab {
@@ -145,13 +138,6 @@ button.md-button::-moz-focus-inner {
145138

146139
transition: $swift-ease-in;
147140
transition-property: background-color, box-shadow, transform;
148-
.md-ripple-container {
149-
border-radius: $button-fab-border-radius;
150-
background-clip: padding-box;
151-
overflow: hidden;
152-
// The following hack causes Safari/Chrome to respect overflow hidden for ripples
153-
-webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC');
154-
}
155141

156142
&.md-mini {
157143
line-height: $button-fab-mini-line-height;
@@ -177,11 +163,13 @@ button.md-button::-moz-focus-inner {
177163
}
178164

179165
.md-ripple-container {
180-
border-radius: $button-border-radius;
166+
border-radius: inherit;
181167
background-clip: padding-box;
182168
overflow: hidden;
183-
// The following hack causes Safari/Chrome to respect overflow hidden for ripples
184-
-webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC');
169+
170+
// Workaround for rounded corner overflow bug
171+
// Force Safari and Chrome to use a compositing layer
172+
-webkit-transform:translateZ(0);
185173
}
186174
}
187175

0 commit comments

Comments
 (0)