Safari: `all: unset;` добавляет большое количество правил CSS - PullRequest
0 голосов
/ 19 июня 2019

У меня есть очень простой HTML, который отлично работает в Chrome, но в Safari - нет. По словам веб-инспектора, мой промежуток должен показывать зеленый текст. Однако он отображается как черный.

what it looks like

Как видите, имя "Джон" показано черным. Однако, по словам веб-инспектора, он должен быть зеленого цвета.

web inspector

Поработав, я обнаружил, что проблема заключается в моем использовании all: unset;. По какой-то причине при использовании all: unset; в одном из родительских элементов для <span> вычисленные правила CSS начинаются с:

box-sizing: border-box;
color: rgb(9, 112, 19);
display: inline;
font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
height: auto;
line-height: 25px;
pointer-events: auto;
width: auto;

до

-webkit-border-horizontal-spacing: 0px;
-webkit-border-vertical-spacing: 0px;
-webkit-box-direction: normal;
-webkit-cursor-visibility: auto;
-webkit-font-kerning: auto;
-webkit-font-smoothing: auto;
-webkit-hyphenate-character: auto;
-webkit-hyphenate-limit-after: auto;
-webkit-hyphenate-limit-before: auto;
-webkit-hyphenate-limit-lines: no-limit;
-webkit-hyphens: manual;
-webkit-line-align: none;
-webkit-line-box-contain: block inline replaced;
-webkit-line-grid: none;
-webkit-line-snap: none;
-webkit-locale: en-US;
-webkit-nbsp-mode: normal;
-webkit-print-color-adjust: economy;
-webkit-rtl-ordering: logical;
-webkit-text-combine: none;
-webkit-text-decoration-line: none;
-webkit-text-decorations-in-effect: none;
-webkit-text-emphasis-color: rgb(0, 0, 0);
-webkit-text-emphasis-position: over right;
-webkit-text-emphasis-style: none;
-webkit-text-fill-color: rgb(0, 0, 0);
-webkit-text-orientation: mixed;
-webkit-text-security: none;
-webkit-text-size-adjust: auto;
-webkit-text-stroke-color: rgb(0, 0, 0);
-webkit-text-stroke-width: 0px;
-webkit-user-modify: read-only;
-webkit-user-select: text;
border-collapse: separate;
box-sizing: border-box;
caption-side: top;
clip-rule: nonzero;
color: rgb(9, 112, 19);
color-interpolation: sRGB;
color-interpolation-filters: linearRGB;
color-rendering: auto;
cursor: auto;
display: inline;
empty-cells: show;
fill: rgb(0, 0, 0);
fill-opacity: 1;
fill-rule: nonzero;
font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;
font-optical-sizing: auto;
font-size: 13px;
font-style: normal;
font-synthesis: style weight small-caps;
font-variant-numeric: normal;
font-weight: normal;
glyph-orientation-horizontal: 0deg;
glyph-orientation-vertical: auto;
hanging-punctuation: none;
height: auto;
image-rendering: auto;
kerning: 0;
letter-spacing: normal;
line-height: 25px;
list-style-image: none;
list-style-position: outside;
list-style-type: disc;
marker-end: none;
marker-mid: none;
marker-start: none;
orphans: auto;
overflow-wrap: normal;
pointer-events: auto;
resize: none;
shape-rendering: auto;
stroke: none;
stroke-dasharray: none;
stroke-dashoffset: 0px;
stroke-linecap: butt;
stroke-linejoin: miter;
stroke-miterlimit: 4;
stroke-opacity: 1;
stroke-width: 1px;
tab-size: 8;
text-align: start;
text-anchor: start;
text-decoration: none;
text-indent: 0px;
text-rendering: auto;
text-shadow: none;
text-transform: none;
visibility: visible;
white-space: normal;
widows: auto;
width: auto;
word-break: normal;
word-spacing: 0px;
word-wrap: normal;
writing-mode: horizontal-tb;

Это нежелательно, поскольку намерение использовать all: unset; - УДАЛИТЬ все существующие правила CSS для элемента. Причина в том, что это накладывается поверх существующего веб-сайта и, как таковое, может наследовать правила CSS от базового веб-сайта. Я использую all: unset;, чтобы избежать использования CSS-правил соответствующих веб-сайтов.

Если я просто добавлю -webkit-text-fill-color: #097013; к своим правилам CSS, это будет работать так, как задумано. Но я не понимаю, почему добавление all: unset; добавляет так много правил CSS, когда их намерено удалить.

1 Ответ

0 голосов
/ 19 июня 2019

Изучив, как работает свойство unset для правила all, можно предположить, что это неверно. Согласно W3 :

unset - Изменяет все свойства, примененные к элементу или родительскому элементу, на их родительское значение, если они наследуются, или на их начальное значение, если нет

...