В один из моих других вопросов решение по устранению проблемы с рендерингом состояло в использовании значения rgba(255, 255, 255, 255)
вместо transparent.
Мы протестировали с помощью rgba(0, 0, 0, 0)
и это все еще исправляло проблему, а это означает, что определение transparent
вызывает ошибку. Однако, глядя на Спецификация W3C CSS3 (и ссылка MDN) для transparent
показывает, что rgba(0, 0, 0, 0)
и transparent
должны быть равны:
прозрачный
Полностью прозрачный. Это ключевое слово можно считать сокращение для прозрачного черного, rgba (0,0,0,0), которое вычислено значение.
Итак, что дает? Почему два, казалось бы, одинаковые значения дают разные результаты? Я просмотрел форматирование RGBA и искал похожие вопросы (безрезультатно). Каждый вопрос/ответ, в котором упоминается преобразование из transparent
в rgba(0,0,0,0)
, всегда содержит слова "должен" или "соответствовать" (например, здесь). Какова фактическая разница и почему она так сильно меняет результат?
N.B: Это происходит в большинстве, если не во всех, версиях Internet Explorer. Мы также знаем, что это происходит в некоторых версиях Firefox. Однако Chrome и Safari не отображают это поведение, заставляя нас полагать, что для этого есть какой-то патч в -webkit
.
Чтобы представить это как ошибку, нам нужно воспроизвести проблему, используя минимальное количество кода. Итак, перенесенный из моего другого вопроса, вот сравнение использования transparent
vs rgba(0,0,0,0)
, и что происходит, когда мы используем оба.
Прозрачный
@keyframes spin{
0% {transform:rotateZ(0deg);}
50% {transform:rotateZ(360deg);border-radius:60%;}
100%{transform:rotateZ(720deg);}
}
.spinme{
display:inline-block;
position:relative;
left:0;
top:0;
margin:0.2rem;
width:0.8rem;
height:0.8rem;
border:0.2rem solid black;
border-radius:0%;
outline: 1px solid transparent;
transform:rotateZ(0deg);
animation: spin infinite 4s;
}
<div class="spinme"></div>