vue使用原生js创建元素样式不生效问题及解决

 更新时间:2023年06月02日 10:34:27   作者:大白菜飞船  
这篇文章主要介绍了vue使用原生js创建元素样式不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue使用原生js创建元素样式不生效

在Vue项目中也会遇到需要动态创建DOM的情况,但是采用指定className的方式给创建的DOM元素指定样式不起作用,在调试界面能看到类名被解析,但是样式未加载

三天里尝试了N种方法,终于填了这个大坑,有需要的可以参考一下:

measureTooltipElement = document.createElement('div')
measureTooltipElement.className = "ol-tooltip ol-tooltip-measure"

样式:

.ol-tooltip {
  position: relative;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 4px;
  color: white;
  padding: 4px 14px 4px 8px;
  opacity: 0.7;
  white-space: nowrap;
  font-size: 12px;
}
.ol-tooltip-measure {
  opacity: 1;
  font-weight: bold;
}

但是在页面渲染时却不生效:

参考了网上众多方法,有以下几种可能:

1.Vue组件中样式Style中scoped导致样式局部生效,因为采用scoped每个类渲染后会有一个单独的data-v-xxxx编码格式,防止样式污染,去除即可。(这里测试无效)

2.使用样式穿透,跳过scoped,这样就不用去除scoped造成全局样式污染。Vue2使用/deep/ className,Vue3使用:deep(className),此外还有>>>(可以尝试一下,我这里没有效果)。

// Vue3
:deep(.ol-tooltip) {
  position: relative;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 4px;
  color: white;
  padding: 4px 14px 4px 8px;
  opacity: 0.7;
  white-space: nowrap;
  font-size: 12px;
}
:deep(.ol-tooltip-measure) {
  opacity: 1;
  font-weight: bold;
}
// Vue2
/deep/ .ol-tooltip {
  position: relative;
  background: rgba(0, 0, 0, 0.5);
  border-radius: 4px;
  color: white;
  padding: 4px 14px 4px 8px;
  opacity: 0.7;
  white-space: nowrap;
  font-size: 12px;
}
/deep/ .ol-tooltip-measure {
  opacity: 1;
  font-weight: bold;
}

3.可能是类的优先级,在子类前加上父类,这里时动态创建的类,所以使用了也没效果。

4.我解决的办法:重新创建一个CSS/SCSS样式文件,然后在Vue组件中引用该文件即可,将不生效的样式都放在该样式文件中,不需要再去除scoped和deep。

vue中创建的dom样式失效

原因:less,sass,scss 设置了scoped

关闭scoped即可解决

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue-loader和webpack项目配置及npm错误问题的解决

    vue-loader和webpack项目配置及npm错误问题的解决

    这篇文章主要介绍了vue-loader和webpack项目配置及npm错误问题的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Vue组件通信入门之Provide和Inject机制

    Vue组件通信入门之Provide和Inject机制

    这篇文章主要给大家介绍了关于Vue组件通信入门之Provide和Inject机制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue组件通信具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • vue实现单一筛选、删除筛选条件

    vue实现单一筛选、删除筛选条件

    这篇文章主要为大家详细介绍了vue实现单一筛选、删除筛选条件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • vue2.0中goods选购栏滚动算法的实现代码

    vue2.0中goods选购栏滚动算法的实现代码

    这篇文章主要介绍了vue2.0中goods选购栏滚动算法的实现代码,需要的朋友可以参考下
    2017-05-05
  • vue打包后,用后端接口报错304、404问题

    vue打包后,用后端接口报错304、404问题

    这篇文章主要介绍了vue打包后,用后端接口报错304、404问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Vue如何在CSS中使用data定义的数据浅析

    Vue如何在CSS中使用data定义的数据浅析

    这篇文章主要给大家介绍了关于Vue如何在CSS中使用data定义的数据的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下
    2022-05-05
  • 详解如何使用vue-cli脚手架搭建Vue.js项目

    详解如何使用vue-cli脚手架搭建Vue.js项目

    这篇文章主要介绍了详解如何使用vue-cli脚手架搭建Vue.js项目 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Vue如何获取数据列表展示

    Vue如何获取数据列表展示

    这篇文章主要为大家详细介绍了Vue如何获取数据列表展示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • vue项目启动端口更改的实现

    vue项目启动端口更改的实现

    在Vue前端项目中,可以通过修改配置文件来指定启动的端口号,本文就来介绍 一下vue项目启动端口更改的实现,感兴趣的可以了解一下
    2023-10-10
  • 解决element ui select下拉框不回显数据问题的解决

    解决element ui select下拉框不回显数据问题的解决

    这篇文章主要介绍了解决element ui select下拉框不回显数据问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02

最新评论