【问题标题】:Vue conditional * css style loaderVue 条件 * css 样式加载器
【发布时间】:2019-08-28 22:37:48
【问题描述】:

我的 vue 应用在网页和触控设备上的电子应用之间共享。在这个触摸设备上,我想包含额外的样式。所以在我的 App.vue 中有:

<script>
  var is_electron = process.hasOwnProperty("versions") && process.versions.hasOwnProperty("electron")
  var is_embedded = is_electron && require("electron").remote.process.argv.includes("-e")
</script>
<style>
* {
  transition-property: none !important;
  transform: none !important;
  animation: none !important;
  cursor: none !important;
}
</style>

如何有条件地包含这种 * 样式?

【问题讨论】:

    标签: node.js vue.js webpack


    【解决方案1】:

    如果特定于平台的样式很少,我建议使用一些帮助类。您甚至可以通过在这些选择器之一中限定 css 来设置子组件的样式。

    <template>
      <main :class="classes">
        <!-- Hello world -->
      </main>
    </template>
    
    <script>
      var isElectron = process.hasOwnProperty("versions") && process.versions.hasOwnProperty("electron")
      var isEmbedded = isElectron && require("electron").remote.process.argv.includes("-e")
    
      export defualt {
        name: 'App',
    
        computed: {
          classes () {
            return {
              electron: isElectron,
              embedded: isEmbedded
            }
          }
        }
      }
    </script>
    
    <style>
    .electron:not(.embedded) * {
      border: 1px solid blue;
    }
    
    .embedded:not(.electron) * {
      /* What kind of sorcery is this? */
    }
    
    .electron.embedded * {
      border: 1px dotted red;
    }
    
    main:not(.electron):not(.embedded) * {
      border: 1px dashed green;
    }
    </style>
    

    【讨论】:

    • 为什么在计算中而不是在数据中?
    • 在这种情况下,它可以在数据初始化函数中工作。但是,我发现在我的应用程序中,类不时发生变化。数据初始化功能也变得挤满了彼此并不真正相关的不同事物。一个计算属性在最坏的情况下添加了一个函数调用和一个对不变变量的观察者。在这种情况下,我更喜欢计算属性名称的清晰性,而不是将其添加到数据属性中。
    猜你喜欢
    • 2017-08-03
    • 2016-03-06
    • 2016-02-23
    • 1970-01-01
    • 2018-03-19
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多