PostCSS 的嵌套语法用于 :hover 和 :focus

Posted

技术标签:

【中文标题】PostCSS 的嵌套语法用于 :hover 和 :focus【英文标题】:Nested syntax with PostCSS for :hover and :focus 【发布时间】:2020-12-12 11:26:26 【问题描述】:

我正在使用 TailwindCSS 和 PostCSS,我有这个 css 代码:

.btn 
  @apply py-1;
  @apply px-4;
  @apply border;
  @apply rounded;


.btn:hover 
  @apply bg-white text-black;


.btn:focus 
  @apply bg-black text-white;

PostCSS 中是否有本地方式(或使用插件)来编写如下代码?

.btn 
  @apply py-1;
  @apply px-4;
  @apply border;
  @apply rounded;

  &:hover 
    @apply bg-white text-black;
  
  
  &:focus 
    @apply bg-black text-white;
  

【问题讨论】:

搜索如何使用 postcss 和 sass 类似npmjs.com/package/postcss-sass 我没有使用 SASS! 是的,但是你需要添加一个插件 toptal.com/front-end/postcss-sass-new-play-date 这是一篇关于此的文章,可能会有所帮助 【参考方案1】:

使用postcss-preset-env。

第一次安装,npm install postcss-preset-env --save-dev

然后在您的postcss.config.js 文件中启用nesting-rules

module.exports = 
  plugins: [
    "tailwindcss",
    [
      "postcss-preset-env",
      
        stage: 3,
        features: 
          "nesting-rules": true,
        ,
      ,
    ],
  ],
;

在这里你可以找到可以启用的list of features ID

【讨论】:

【参考方案2】:

您也可以使用postcss-nested 插件。

在你的package.json:


  "dependencies": 
    "postcss": "^8.2.9",
    "tailwindcss": "^2.0.4",
    "postcss-nested": "^5.0.5"
  

在你的postcss.config.js:

module.exports = 
  plugins: [
    require('postcss-nested'),
    require('tailwindcss'),
  ]

【讨论】:

【参考方案3】:

也可以,遵循对象符号Reference

module.exports = 
    plugins: 
        'postcss-import': ,
        tailwindcss: ,
        autoprefixer: ,
        'postcss-preset-env':  stage: 2 ,
    ,

【讨论】:

以上是关于PostCSS 的嵌套语法用于 :hover 和 :focus的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 require() 的情况下使用带有 postcss.config.js 的 Tailwind 嵌套声明

jQuery中hover事件和click事件嵌套问题

如何结合gulp使用postcss

CSS 边框和 :hover 动态伪类

CSS :hover伪类选择器

深入浅出的webpack构建工具---PostCss