【问题标题】:Remove dropdown arrow on vuetify data table header?删除 vuetify 数据表标题上的下拉箭头?
【发布时间】:2019-03-20 16:48:24
【问题描述】:

我正在努力删除列名称“名称”、“基准”、“创建者”旁边的下拉箭头... 下拉箭头在 i-Tag 中呈现,如果我通过 Chrome 编辑 html 并添加“显示:无”,它将被删除...

但是我无法通过代码中的 css 访问 i 标签或类 v-icon。可能是因为它不是在渲染过程之前创建的。

还有其他方法可以去掉下拉箭头吗?

提前致谢!

我的表格的 Html,称为“文件列表”:

【问题讨论】:

  • 如果您不介意排序,请将sortable: false 添加到您的headers 项目中:headers: [ { text: 'ID', value: 'Id', sortable: false }, . . . ]
  • 好主意,谢谢!那删除了箭头。但我介意排序:(
  • 请参阅this answer 以了解您无法定位它的原因以及如何实际定位它。
  • 只有在@J.Wu 使用 scoped 样式时才正确
  • @NatiMask 奇怪的是他们正在使用范围样式,因为 OP 说 however I am unable to access the i tag or the class v-icon via css in the code. Probably because it is not created before the rendering process.,这向我表明他们知道如何通过 CSS 实际定位它,但有些东西不起作用。即使他们没有使用范围样式,也会涵盖其他内容,例如特异性。这应该足以正确定位任何元素。如果有什么不清楚或没有涵盖,欢迎反馈(那里)。

标签: html vue.js datatable sass vuetify.js


【解决方案1】:

首先,我很确定您可以使用 css 访问此 <i> 图标标签,因为某些元素将被动态创建并不会阻止它受到 css 的影响。

根据specificity 的规则,您的 css 可能会因为 Vuetify css 而被覆盖。我建议首先将class 属性添加到<v-data-table>,以允许您为标签指定css,如下所示:

.my-datatable-class .datatable thead th.column.sortable i {
    display: none;
}

如果您使用的是作用域样式,则会有所不同,这以及有关 css 特异性的更多信息已涵盖here,感谢@Traxo

另一种选择是自己实现数据表的整个标题部分,Vuetify 允许使用 scoped-slots 来实现这一点,如何做到这一点的例子在examples,看对于 Slot: items and headers 并且在模板代码中你可以看到 <v-icon small>arrow_upward</v-icon> 的东西,只需实现省略它的标题,然后你就不用css了,在你的@中添加类似的东西987654329@:

<template slot="headers" slot-scope="props">
  <tr>
    <th
      v-for="header in props.headers"
      :key="header.text"
      :class="['column sortable', pagination.descending ? 'desc' : 'asc', header.value === pagination.sortBy ? 'active' : '']"
      @click="changeSort(header.value)"
    >
      {{ header.text }}
    </th>
  </tr>
</template>

【讨论】:

  • 没有“覆盖”这样的词。它被“覆盖”了。
  • @GeneC 谢谢。固定。
【解决方案2】:

对必要的列使用可排序选项 false

前-:

headers: [{ text: 'Name', value: 'name', sortable: false },
          { text: 'Date', value: 'date', sortable: false }]

【讨论】:

    【解决方案3】:

    隐藏排序图标的最佳方法是通过header-props。例如:

    <v-data-table
      :headers="headers"
      :items="items"
      :header-props="{ sortIcon: null }"
    >
    

    【讨论】:

      【解决方案4】:

      不需要编写任何自定义 CSS。可以使用提供的 vuetify 属性

      排序图标

      将 sort-icon 的值提供为 false 就足够了。它将隐藏所有列的排序图标,我认为这是您所需要的。

      <v-data-table
          :headers="headers"
          :items="items"
          :sort-icon="false"
        >
      

      【讨论】:

      • 此方法已被删除。现在你应该使用header-props,如我的回答所示:stackoverflow.com/a/62027761/1196465
      • @DavidGay 在我测试过的版本中,它工作正常。它是“bootstrap”:“4.4.1”,“bootstrap-vue”:“2.9.0”。感谢您指出。
      • 别担心,我想你可能已经糊涂了:这个问题是关于 Vuetify (vuetifyjs.com),而不是 BootstrapVue,它是一个不同的组件框架 (bootstrap-vue.org)。
      • 哦,我的错。我的回答来自 vuetify。但错误地我的评论来自 bootstrap-vue。我与两者一起工作,并在评论中错误地交换了它们。 :D 对于 vuetify,我指的是 1.5.x,它似乎在 vuetify 2 中被删除。
      猜你喜欢
      • 2017-08-11
      • 2022-10-02
      • 2020-01-22
      • 2021-12-06
      • 1970-01-01
      • 2020-11-25
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多