1、问题场景

page1,page2都使用flexible移动端自适应的时候,有一个页面page2需要手动设置rem基准值,

//手动设置基准
html{ font-size: 120px !important;
}

但是在page2引用的self.less里面设置了基准,竟然没有生效

2、问题分析scoped属性

在引用self.less的时候,使用了属性scoped

vue中引入了scoped这个概念,设计思想就是让当前组件的样式不会修改到其他页面的样式,使用了data-v-hash的方式来使css有了他对应的模块的标识,通俗来说就是使用了scoped属性,template里面的html都会多一个data-v-hash的属性,css 选择器会根据data-v-hash来进行选择,当前的css文件只会对当前的页面生效。参考下图

那么问题来了,scoped只对当前组件里面的内容生效,会对组件里面的dom加data-v-hash属性,而不会对html,body等组件之外的dom添加,但是css里面的属性选择器都是data-v-hash属性的,参考下图,椭圆形里面是组件之外的,没有data-v-hash属性,所以加了scoped属性的css会对组件外无效。长方形里面的dom是组件里面的,data-v-hash跟css里面的data-v-hash是一致的会生效。

虽然css里面的body选择器也添加了data-v-hash,但是页面dom没有data-v-hash属性,所以css里面设置的body样式无效。

3、解决办法

针对必须设置属性scoped的组件,可以在page2.vue里面再单独写一个style,在页面里面单独写组件之外(html,body等)的样式,因为scoped不会对组件之外的dom增加data-v-hash属性

但是新问题来了,page2设置以后,影响了page1页面的布局,page1页面html的的font-size样式依然是120px,

当然会影响啊,page2也引用了page1的样式啊,但是page2设置了scoped,所以只有page2的html样式会影响page1,

解决办法就是再vue什么周期create里面,用js给html设置font-size

4、总结

遇到了这问题,终于搞明白了scoped染渲染规则,在添加了scoped属性的组件

  • 给组件(template)里面的dom节点,加了一共不重复属性的data-v-hash,来标志唯一性
  • 给组件里面引用的的样式文件,在每个选择器后面添加了一个等同于dom节点一样的data-v-hash字段,实现类似于作用域的问题,不影响全局
  • 如果组件里面还有组件,只会给最外层的组件里面dom,添加data-v-hash,不会影响组件内部引用的组件

vue scoped html样式无效相关推荐

  1. Vue的v-html样式无效问题

    ## 例如我在vue中添加了如下的v-html: 样式无效代码: <table class="table" v-html="table_data" wid ...

  2. scoped 不生效_解决vue scoped scss 无效的问题

    今天遇到scoped内部的scss设置无效,解决办法如下: /deep/ .position-el-steps { /deep/ .el-step.is-vertical { .el-step__de ...

  3. 解决ant design vue中的modal弹框样式修改无效问题 修改modal样式无效

    ant design vue中的modal弹框修改样式无效问题 ant中的弹框样式是修改不了的 原因在于弹框modal被挂载在最大的元素div外面了 所以需要将挂载在某个html元素上 在modal外 ...

  4. vue v-html 动态内容样式无效解决方法

    vue v-html 动态内容样式无效解决方法 参考文章: (1)vue v-html 动态内容样式无效解决方法 (2)https://www.cnblogs.com/mengfangui/p/122 ...

  5. (javascript)vue项目打包后,写的覆盖element的样式无效了。这是什么原因?

    问题: (javascript)vue项目打包后,写的覆盖element的样式无效了.这是什么原因?描述: 在开发模式模式下,写的覆盖样式都有效,打包后就无效,请问下是什么原因? main.js里的c ...

  6. 修改elementUI组件样式无效的多种解决方式

    前言:vue+elementUI项目开发中,经常遇到修改elementUI组件样式无效的问题, 原因:在vue组件中我们经常需要给style添加scoped来使得当前样式只作用于当前组件的节点.添加s ...

  7. 修改elementUI组件样式无效的问题研究

    问题背景:el-tabs的选项卡默认字体是14px,大了,想改成12px,结果在style里面加样式总是不生效. 解决:样式放到app.vue里面,样式就生效了 .panel-content .el- ...

  8. Vue 中英文 组件 样式 写法

    Vue 中英文 组件 样式 写法 Vue 项目国际化样式处理 一.全局(main.js)添加自定义指令: v-lang 会自动添加 语言对应的 class [中:zh,英:en] Vue.direct ...

  9. vue scoped关键字

    简单来说,vue会把vue组件中<style>里的样式,都汇总到一个样式文件中,但是不同组件中相同名字的样式就会冲突,在<style scoped>中加上scoped后,就会对 ...

最新文章

  1. 女装、退学、离职谷歌,他活成了别人不敢想的样子
  2. [译] 如何写一篇杀手级的软件工程师简历
  3. 单用户模式迁移home家目录
  4. 怎样做网络推广浅析网站被K之后,优化人员们要注意的方面是哪些?
  5. ECC椭圆曲线算法(4)签名验证过程
  6. DVD碟片输出与刻录简单流程
  7. Spring JdbcTemplate batchUpdate() 实例
  8. Linq标准查询运算及用法
  9. mysql1440秒未活动_phpMyAdmin登陆超时1440秒未活动请重新登录
  10. 执行计划有时不准确_高效学习计划的制定原则和分类执行方法
  11. 复杂的三元转化为if() eles()
  12. 六子冲棋,六子炮棋,二打一棋,箭棋,炮棋(java单机版)java人机对战
  13. 地图的文字注记的制作和优化
  14. 离线语音合成使用——科大讯飞or云知音or百度语音
  15. 我们穷极一生,究竟追寻的是什么?
  16. python删除第一行_python学习之删除DataFrame某一行/列内容
  17. php 固定表头,PHPExcel如何冻结(锁定)表头
  18. STM32 BOR/POR/PDR介绍
  19. 艺多不压身 -- 目录
  20. 使用Driftnet通过Wifi Pumpkin捕获移动图像

热门文章

  1. 学java用哪个翻译器好_英语翻译器软件哪个好?用这两款就对了
  2. JSON Editor 中文文档
  3. 狄克斯特拉算法——python实现
  4. Android四大组件和启动模式(面试总结)
  5. 了解 C++ 之 typename
  6. 微信html5图片裁切,微信小程序图片裁剪工具we-cropper
  7. WebGoat v8.1.0 下载安装(windows)
  8. 关于SAXReader 读取文件乱码问题
  9. java计算机毕业设计Web商铺租赁管理系统MyBatis+系统+LW文档+源码+调试部署
  10. crsctl命令详解