小编the*_*noh的帖子

css:悬停不在chrome中用于延迟动态添加的类

我有以下代码,它只是创建一个div,当它悬停时,应该将其背景颜色更改为红色:

setTimeout(function() {
  document.getElementById('example-id').className = 'example-class';
}, 1);
Run Code Online (Sandbox Code Playgroud)
.example-class:hover {
  background: red;
}
Run Code Online (Sandbox Code Playgroud)
<body>
  <div id="example-id">example text</div>
</body>
Run Code Online (Sandbox Code Playgroud)

这个代码似乎适用于我测试过的所有浏览器,但谷歌浏览器除外.具体来说,我使用以下操作系统和浏览器对其进行了测试:

  • Windows 10 Home:版本1703
    • Chrome:62.0.3202.94
    • Firefox:57.0
    • Firefox ESR:52.5.0
    • 边缘:40.15063.674.0
    • IE11:11.726.15063.0
  • OS X El Capitan:版本10.11.6
    • Safari:版本11.0.1

但是,如果我删除了该setTimeout函数的使用,以便立即将该类添加到div中,那么代码将在所有浏览器中按预期工作.

那为什么会这样呢?这是谷歌浏览器中的一个错误,或某些规范中的含糊不清,还是别的什么?

html javascript css google-chrome css-selectors

8
推荐指数
1
解决办法
948
查看次数

如何使用 props 和 slot 的默认值扩展 Vue 组件?

bootstrap-vue在我的应用程序中使用,并且我有很多表,它们都具有相同的样板代码。以下是该样板的示例:

<b-table
  :items="someItemList"
  :busy="someItemList === null"
  :empty-text="$t('notFound')"
  :empty-filtered-text="$t('notFound')"
  no-sort-reset
  show-empty
  striped
  hover
>
  <div slot="table-busy" class="text-center my-3">
    <b-spinner class="align-middle"/>
  </div>
</b-table>
Run Code Online (Sandbox Code Playgroud)

我当然想把这个样板分解成某种通用模块,比如自定义组件,这样我的新表的起点看起来更像这样:

<my-awesome-table :items="someItemList">
</my-awesome-table>
Run Code Online (Sandbox Code Playgroud)

最终,我想表现得像my-awesome-table一个普通的b-table,但是所有这些样板都已经设置好了,我仍然可以根据需要设置额外的道具和插槽。

但是,我想不出一种方法来完成这项工作。我试过了:

  • 制作一个包装组件,但后来我很难公开底层的所有功能 b-table
  • 扩展b-table组件,但是我很难设置 prop 和 slot 值,因为我已经在我的样板模板中设置了它们

如何创建允许我为道具和插槽设置默认值的自定义组件?

vue.js vuejs2

8
推荐指数
1
解决办法
4403
查看次数

标签 统计

css ×1

css-selectors ×1

google-chrome ×1

html ×1

javascript ×1

vue.js ×1

vuejs2 ×1