为什么 Gatsby 删除 duplicate/fallback css 属性
Why is Gatsby removing duplicate/fallback css properties
为什么 Gatsby 删除 duplicate/fallback css 属性?以及如何在使用全局样式表时防止这种行为。
我正在使用 gatsbyjs 构建一个静态站点。我已经编写了一个全局样式表 (layout.css),并将其附加到布局组件。
在那个全局样式表中我有这个样式:
.wrapper.style3 {
background-color: red;
background-image: -moz-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
background-image: -webkit-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
background-image: -ms-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
background-image: linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
color: #fff;
}
然后每当我使用 gatsby develop
或提供由 gatsby build
构建的文件时
生成的样式生成 ignores/deletes background-image
属性.
的所有后备值
生成的样式是
.wrapper.style3 {
background-color: red;
background-image: linear-gradient(top,transparent,rgba(0,0,0,.15)),url("../images/bg01.png");
color: #fff
}
如果我删除最后一个 background-image
属性,那么新的最后一个 background-image
属性 将用于生成的 css。这让我相信 gatsby 正在删除 css 属性。
为什么要这样做以及如何防止后备 属性 值从生成的样式表中删除?我想要跨浏览器兼容性的回退值。
我没有使用任何插件。
Gatsby CLI version: 4.13.0
Gatsby version: 4.13.0
Nodejs: v16.15.0
这是一个 webpack-related 问题,而不是 Gatsby 本身 。我认为你可以解决这个 by using PostCSS 以创建语法和功能并将其扩展到现代 browser-friendly CSS 所以你只需要添加你的规则和 PostCSS 将处理 cross-browser 和后备兼容性(如果有的话,您可以像现在一样添加自己的兼容性)。
通过以下方式安装:
npm install postcss gatsby-plugin-postcss
要将它与 CSS 模块一起使用,您需要在 gatsby-config.js
中添加以下内容:
plugins: [
{
resolve: `gatsby-plugin-postcss`,
options: {
postCssPlugins: [require(`postcss-preset-env`)({ stage: 0 })],
},
},
],
如果你想包含 autoprefixer
可以通过添加额外的 PostCSS 插件来完成:
plugins: [
{
resolve: `gatsby-plugin-postcss`,
options: {
postCssPlugins: [
require(`postcss-preset-env`)({ stage: 0 }),
require('autoprefixer'),
],
},
},
];
修改自:Gatsby plugin settings for gatsby-plugin-postcss + autoprefixer + browserslist
为什么 Gatsby 删除 duplicate/fallback css 属性?以及如何在使用全局样式表时防止这种行为。
我正在使用 gatsbyjs 构建一个静态站点。我已经编写了一个全局样式表 (layout.css),并将其附加到布局组件。
在那个全局样式表中我有这个样式:
.wrapper.style3 {
background-color: red;
background-image: -moz-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
background-image: -webkit-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
background-image: -ms-linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
background-image: linear-gradient(top, rgba(0,0,0,0), rgba(0,0,0,0.15)), url("../images/bg01.png");
color: #fff;
}
然后每当我使用 gatsby develop
或提供由 gatsby build
构建的文件时
生成的样式生成 ignores/deletes background-image
属性.
生成的样式是
.wrapper.style3 {
background-color: red;
background-image: linear-gradient(top,transparent,rgba(0,0,0,.15)),url("../images/bg01.png");
color: #fff
}
如果我删除最后一个 background-image
属性,那么新的最后一个 background-image
属性 将用于生成的 css。这让我相信 gatsby 正在删除 css 属性。
为什么要这样做以及如何防止后备 属性 值从生成的样式表中删除?我想要跨浏览器兼容性的回退值。
我没有使用任何插件。
Gatsby CLI version: 4.13.0
Gatsby version: 4.13.0
Nodejs: v16.15.0
这是一个 webpack-related 问题,而不是 Gatsby 本身 。我认为你可以解决这个 by using PostCSS 以创建语法和功能并将其扩展到现代 browser-friendly CSS 所以你只需要添加你的规则和 PostCSS 将处理 cross-browser 和后备兼容性(如果有的话,您可以像现在一样添加自己的兼容性)。
通过以下方式安装:
npm install postcss gatsby-plugin-postcss
要将它与 CSS 模块一起使用,您需要在 gatsby-config.js
中添加以下内容:
plugins: [
{
resolve: `gatsby-plugin-postcss`,
options: {
postCssPlugins: [require(`postcss-preset-env`)({ stage: 0 })],
},
},
],
如果你想包含 autoprefixer
可以通过添加额外的 PostCSS 插件来完成:
plugins: [
{
resolve: `gatsby-plugin-postcss`,
options: {
postCssPlugins: [
require(`postcss-preset-env`)({ stage: 0 }),
require('autoprefixer'),
],
},
},
];
修改自:Gatsby plugin settings for gatsby-plugin-postcss + autoprefixer + browserslist