Vue条件* CSS样式加载器

时间:2019-04-07 18:18:53

标签: node.js vue.js webpack

我的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>

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

1 个答案:

答案 0 :(得分: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>