vue组件中修改组件外元素样式的两种解决方案

 更新时间:2023年05月30日 15:54:20   作者:蓓蕾心晴  
这篇文章主要介绍了vue组件中修改组件外元素样式,本文给大家分享两种解决方案帮助大家解决这样的问题,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

在实际开发中,由于项目一开始设计的一些不合理性,会在组件中通过

html[media=pad]{
     .xxx{
     /* 组件样式 */
     }
}

以上方式修改某些组件的样式,这样会涉及到从 html 层级选择,由于我 style 标签是这样写的

<style lang="less" scoped></style>

所以导致组件内部无法修改或选中组件外部元素,则无法修改外部元素的样式。

解决方案:

两种:

第一种:

直接新开一个全局的 style 标签

<style lang="less"></style>

在这里写全局的样式

第二种:

使用 :global

<style scoped>
:global(.red) {
  color: red;
}
</style>

参考官方文档:https://cn.vuejs.org/api/sfc-css-features.html#scoped-css

vue动态改变组件外部元素样式

主要还是通过原生的js来控制。

vue的主要开发对象是组件。组件内部控制大家都轻车熟路,但组件外部呢?比如说改变组件外部元素样式。

这种问题我前不久遇到过一个。就是有个页面,承载了地图。但页面外部,是导航条啦,面包屑啦,标签条啦,顶部占据了一大块位置。you know,现在宽屏幕,垂直方向尺寸小的可怜,作为地图,肯定是占据面积越大越好啊,现在顶部一大堆乱七八糟。关键是,这些东东是框架提供的,也没有提供什么属性进行设置。怎么办?

主要是通过原生的js来控制。vue虽然作为一个开发框架,制订了自己的一些语法规则,但原生的js它仍然支持。比如document.getElementById(),这种语句在组件方法里运行一点问题没有。这些语句放在页面进入时触发:

export default {
  components: {
    Map
  },
  beforeRouteEnter (to, form, next) { // 进入本页面时隐藏面包屑
    let bread = document.getElementsByClassName('main-layout-tag-nav-wrapper')
    if (bread.length > 0) bread[0].style.display = 'none'
    next()
  },
  beforeRouteLeave (to, form, next) { // 离开本页面时恢复面包屑
    let bread = document.getElementsByClassName('main-layout-tag-nav-wrapper')
    if (bread.length > 0) bread[0].style.display = ''
    next()
  }
}

到此这篇关于vue组件中修改组件外元素样式的文章就介绍到这了,更多相关vue修改组件外元素样式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue codemirror实现在线代码编译器效果

    vue codemirror实现在线代码编译器效果

    这篇文章主要介绍了vue-codemirror实现在线代码编译器 ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Element UI中table单元格合并的解决过程

    Element UI中table单元格合并的解决过程

    element ui中的table表格数据是动态生成的,最近遇到个需求,要求我们对单元格进行合并,所以下面这篇文章主要给大家介绍了关于Element UI中table单元格合并的解决过程,需要的朋友可以参考下
    2022-08-08
  • 详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)

    详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)

    这篇文章主要介绍了详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • vue使用keep-alive后从部分页面进入不缓存示例详解

    vue使用keep-alive后从部分页面进入不缓存示例详解

    这篇文章主要给大家介绍了关于vue使用keep-alive后从部分页面进入不缓存的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下
    2023-03-03
  • Vue 样式绑定的实现方法

    Vue 样式绑定的实现方法

    学习 Vue 的时候觉得样式绑定很简单,但是使用的时候总是容易搞晕自己。这篇文章主要介绍了Vue 样式绑定的实现方法,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • vue实现价格日历效果

    vue实现价格日历效果

    这篇文章主要为大家详细介绍了vue实现价格日历效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 详解vue-validator(vue验证器)

    详解vue-validator(vue验证器)

    本篇文章主要介绍了vue-validator(vue验证器),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • vue实现样式之间的切换及vue动态样式的实现方法

    vue实现样式之间的切换及vue动态样式的实现方法

    这篇文章主要介绍了vue中如何实现样式之间的切换及vue动态样式的实现方法,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2017-12-12
  • vue el-upload 上传文件格式校验方法

    vue el-upload 上传文件格式校验方法

    这篇文章主要介绍了vue el-upload 上传文件格式校验方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • vue中引用swiper轮播插件的教程详解

    vue中引用swiper轮播插件的教程详解

    这篇文章主要介绍了vue中引用swiper轮播插件的方法,在需要使用swiper的组件里引入swiper,swiper的初始化放在mounted里。具体实例代码大家跟随脚本之家小编一起看看吧
    2018-08-08

最新评论