Почему существуют префиксы поставщиков в CSS3?

Я мог бы понять, используя их для экспериментальных вещей, которые не являются официальными (т.е. не в спецификации CSS3), чтобы предотвратить коллизии имен, но зачем нужна префиксы при затенении и т.д.

Не должны ли каждый поставщик реализовывать эффекты так же, как в спецификациях CSS3?

EDIT: будут ли префиксы уходить после завершения CSS3? Мне просто интересно узнать, почему некоторые функции имеют префиксы, а некоторые нет, когда эффект кажется одинаковым во всех основных браузерах.

Ответ 1

Этот был задан до, но короткий ответ заключается в том, что CSS3 не является готовым продуктом. CSS 2.1 не был опубликован до 2011 года, и только несколько модулей CSS3 даже достигли уровня официальной рекомендации, поэтому преждевременно говорить о спецификации CSS3, которая универсально реализована. К счастью, современные разработчики браузеров помогают продвигать вперед и помогают разработать стандарт, который следует за практикой в ​​реальном мире. По мере приближения к общим стандартам префиксы отбрасываются.

Ответ 2

Спецификации CSS, как известно, занимают возрасты, чтобы достичь этапа рекомендации кандидата, который является этапом, на котором они считаются готовыми к реализации. И даже тогда CR может вернуться к WD, если проблемы обнаружены на этапе внедрения и тестирования (это была такая проблема с CSS2, что в итоге она стала CSS2.1).

Поскольку индустрия требует быстрых разработок в области технологий, вендорам приходится стараться внедрять стандарты задолго до их достижения. Эти реализации часто считаются экспериментальными и неконфиденциальными, что возвращает нас к тому, что вы сказали о том, что они используются для экспериментальных функций.

Будут ли префиксы уходить после завершения CSS3?

Первоначально префиксы ушли после того, как модуль и его реализации были завершены (сам CSS3 никогда не завершается, потому что он всегда растет). В наши дни предпринимаются меры по устранению использования префиксов для разработки технологий почти полностью, поскольку они были неправильно использованы как поставщиками, так и авторами и вызывают непредвиденные, но серьезные проблемы совместимости; см. Chromium/Blink и это сообщение в блоге CSSWG.