zoukankan      html  css  js  c++  java
  • 用Dart Sass 替换 Node Sass

    最近在看vue-element-admin项目文档的时候发现有个叫Dart Sass的东西,这东西可以替换之前我经常的Node Sass,曾几何我们在很痛苦的装Node Sass,现在我们是时候跟Node Sass说在再见了。具体内容请大家查看 Node Sass to Dart Sass

    升级教程

    yarn remove node-sass
    
    yarn add sass -D
    

    在上文提到的文档教程中提到:在替换完Node Sass后,需要用::v-deep代替/deep/>>> (注:如果在css中直接这么写是没用作用的) 来进行样式穿透。最重要原因是 vue 3.0 RFC中指定的写法,我们这么写之后可以尽量的最大程度减少升级到Vue3的复杂度。

    .a {
      >>> {
        .b {
          color: red;
        }
      }
    }
    
    /* 或者 */
    
    .a {
      /deep/ {
        .b {
          color: red;
        }
      }
    }
    
    /* 修改为 */
    .a {
      ::v-deep {
        .b {
          color: red;
        }
      }
    }
    

    不过我在读完 vue 3.0 RFC后发现,其实更推荐下面的写法

    /* DEPRECATED */
    ::v-deep .bar {}
    
    /* 用伪元素写法传入一个css选择器作为参数 */
    ::v-deep(.bar) {}
    
    /* 上边的写法会编译为下边的样子 */
    [v-data-xxxxxxx] .bar {}
    

    此外还有两种scope css写法:
    <style scoped> 代码快中使用 ::v-global(), 在这代码块中是全局范围

    ::v-global(.foo) {}
    
    /* 被编译为 */
    .foo {}
    

    专门修改slot插槽中元素的样式,你在子组件中修改插槽中样式是没用的,因为传入组件的插槽内容输入父组件,而Scoped styling是在编译时确定的,我们在子组件中可以这么写

    ::v-slotted(.foo) {}
    
    /* 编译为 */
    .foo[v-data-xxxxxxx-s] {}
    

    注意-s(感觉像是slot的缩写)后缀,这表明这个样式只针对于slot中的内容

    参考资料

  • 相关阅读:
    django中的FBV和CBV
    RESTful
    REST
    18.前端路由router-08权限控制
    17.前端路由router-07keep-alive
    16.前端路由router-06动态路由
    15.前端路由router-05嵌套路由
    14.前端路由router-04编程式导航
    13.前端路由router-03路由参数
    java基础总结
  • 原文地址:https://www.cnblogs.com/hanshuai/p/13443651.html
Copyright © 2011-2022 走看看