Я использую postcss с vue 3 (vite). Вот моя конфигурация:
пакет.json
"postcss-preset-env": "^7.8.3",
postcss.config.js
const postcssPresetEnv = require("postcss-preset-env");
module.exports = {
plugins: [
postcssPresetEnv({
features: {
"nesting-rules": true,
"has-pseudo-class": true,
},
}),
],
};
Вложение работает, как и ожидалось, поэтому я думаю, что моя конфигурация верна.
has-pseudo-class
ничего не делает в Firefox 107
Я знаю, что это не работает, потому что следующий код создает фиолетовую рамку в Chromium (который изначально поддерживает :has
), но ничего не делает в Firefox 107:
.draggable:has(div) {
border: 1px solid purple !important;
}
Что я делаю не так? Я неправильно понял, что делает плагин или как его использовать?
🤔 А знаете ли вы, что...
JavaScript имеет множество встроенных объектов, таких как Array, Date и Math.
Firefox не поддерживает псевдокласс :has, поэтому он не будет его заполнять.
Состояние документов Mozilla CSS «Начиная с версии 103: эта функция находится за настройками layout.css.has-selector.enabled (должно быть установлено значение true). Чтобы изменить настройки в Firefox, посетите страницу about:config».
См. характеристики браузера здесь
Это не сработало, потому что мне нужно было импортировать и загрузить полифил браузера.
Чтобы решить эту проблему, я добавил следующий код в свой HTML-заголовок.
<script src = "https://unpkg.com/[email protected]/dist/browser-global.js"></script>
<script>cssHasPseudo(document, { hover: true })</script>
Обратите внимание, что вам нужно сопоставить полифилл браузера с версией postcss-preset-env
, которую вы используете.
Большое спасибо очень полезным людям из postcss discord chan за помощь в устранении этой неполадки.