vue.js - 视觉 : What is the cleanest way to select a component via CSS?

标签 vue.js vue-component

我有一个 bar 组件。它是这样使用的:

<template>
  <div>
    <!-- stuff -->
    <bar></bar>
    <!-- stuff -->
    <!-- stuff -->
    <!-- stuff -->
    <bar></bar>
    <!-- stuff -->
    <bar></bar>
    <!-- stuff -->  
  </div>
</template>

<style lang="scss" scoped>
  @media (max-width: 1300px) {
    // this selector doesn't work, but it would be nice if it did
    bar {
      display: none;
    }
  }
</style>

我想在屏幕为 1300 像素或更窄时隐藏栏元素。如果有一个 bar 元素选择器就好了,就像有 ph1 元素选择器一样。但是,似乎没有,我必须添加 class="bar" 才能选择它们。

我的问题是是否有更简洁的方法来选择 bar 元素。

bar 组件中添加 CSS 代码并不好,因为当在其他组件中使用 bar 时,我不根本不想隐藏它们。

最佳答案

上课似乎是最好的方式。如果您希望它对组件通用,则将其放在组件的根元素上;如果您希望它特定于该用途,则仅将其放在组件标签上。

此外,您没有理由不能将自定义标记用作组件的根元素;只要标签没有映射到组件,它就会留在 DOM 中,您可以使用它来选择 CSS。不过,我不推荐这样做,因为我认为这个用例不是引入新标签的好理由。

如果您的组件模板看起来像这样,例如:

<template>
  <bar-container>
    Hi there
  </bar-container>
</template>

而你没有 bar-container组件已定义,您将能够使用 CSS 来选择 bar-container ,这将是每个 bar 的容器元素成分。但它同样易于使用 <div class="bar-container">相反。

关于vue.js - 视觉 : What is the cleanest way to select a component via CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287567/

相关文章:

html - Vue单文件组件绑定(bind)data-v-xxxxxxxx到生成的元素

javascript - 如何从 Vuetify v-data-table 中获取过滤后的数组?

javascript - Vue 和 Nuxt Js : why Cannot create property 'display' on string 'bottom:30px;right:30px;' ?

laravel - 如何使用 laravel-mix 将 bootstrap-vue 加载到 Laravel 5 中?

typescript - 未定义 Nuxt 自定义插件导出

javascript - mounted() 仅在组件 Vue.js 上运行一次

laravel - 如何在 vuejs 中使用多选?

vue.js - VueJS 称自己为渐进式框架是什么意思?

javascript - 如何从 javascript 文件(而不是 vue 组件)获取 vuex 状态

javascript - 在 Vue 组件中将逻辑从指令转移到方法