vue组件中的样式属性scoped实例详解

 更新时间:2018年10月30日 14:37:51   作者:一个慢  
vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素 。接下来通过本文给大家分享vue组件中的样式属性scoped实例详解,感兴趣的朋友跟随小编一起看看吧

Scoped CSS

Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范。

vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素

 它是通过使用PostCSS来改变以下内容实现的:

<style scoped>
.example {
 color: red;
}
</style>

<template>
 <div class="example">hi</div>
</template>

渲染结果:

<style>
.example[data-v-f3f3eg9] {
 color: red;
}
</style>

<template>
 <div class="example" data-v-f3f3eg9>hi</div>
</template>

混合使用全局属性和局部属性

<style>
/* global styles */
</style>

<style scoped>
/* local styles */
</style>

关于子组件的根元素

使用了scoped属性之后,父组件的style样式将不会渗透到子组件中,然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响,这么设计的目的是父组件可以对子组件根元素进行布局。
.vue模板中的样式是根据需要按需加载,访问一个页面该组件中的样式就会追加到head标签中,如果父子组件中都对某个子组件根节点元素进行了控制,则父组件里的样式会被后来的覆盖。

深选择器

如果想对设置了scoped的子组件里的元素进行控制可以使用'>>>'或者'deep'

<template>
 <div id="app">
  <gHeader></gHeader>
 </div>
</template>

<style lang="css" scoped>
 .gHeader /deep/ .name{ //第一种写法
  color:red;
 }
 .gHeader >>> .name{  //二种写法
  color:red;
 }
</style>

<div class="gHeader">
 <div class="name"></div>
</div>

一些预处理程序例如sass不能解析>>>属性,这种情况下可以用deep,它是>>>的别名,工作原理相同。

动态生成的内容

使用v-html动态创建的DOM内容,不受设置scoped的样式影响,但你依然可以使用深选择器进行控制

下面给大家补充下vue中使用v-html加载的富文本,css中定义样式不生效

如题,使用v-html加载一段富文本,富文本里包含图片,在手机上图片宽度可能会溢出

  <div v-html="htmlContent" class="rich"></div> 
  <style scope>
  .rich>>> img{ display:block; max-width: 100%}
  </style>

注意:这里的>>>需要使用css语法,写在less里会报错

总结

以上所述是小编给大家介绍的vue组件中的样式属性scoped实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 在vue中v-for循环遍历图片不显示错误的解决方案

    在vue中v-for循环遍历图片不显示错误的解决方案

    这篇文章主要介绍了在vue中v-for循环遍历图片不显示错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • vue父子组件的数据传递示例

    vue父子组件的数据传递示例

    这篇文章主要介绍了vue父子组件的数据传递示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • vue中的搜索关键字实例讲解

    vue中的搜索关键字实例讲解

    这篇文章主要介绍了vue中的搜索关键字实例讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue项目实现token无感刷新的示例代码

    Vue项目实现token无感刷新的示例代码

    最近在使用系统的过程中,业务人员反馈刚登录一会就提示token过期需要重新登录,所以本文为大家分享一个无感刷新的实现代码,需要的可以参考下
    2023-07-07
  • vue之Vue.use的使用场景及说明

    vue之Vue.use的使用场景及说明

    这篇文章主要介绍了vue之Vue.use的使用场景,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 详解vue-cli脚手架build目录中的dev-server.js配置文件

    详解vue-cli脚手架build目录中的dev-server.js配置文件

    这篇文章主要介绍了详解vue-cli脚手架build目录中的dev-server.js配置文件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • vue-autoui自匹配webapi的UI控件的实现

    vue-autoui自匹配webapi的UI控件的实现

    这篇文章主要介绍了vue-autoui自匹配webapi的UI控件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • vuex页面刷新导致数据丢失的解决方案

    vuex页面刷新导致数据丢失的解决方案

    这篇文章主要介绍了vuex页面刷新导致数据丢失的解决方案,帮助大家更好的使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • vue2单元测试环境搭建

    vue2单元测试环境搭建

    本篇文章给大家分享了vue2单元测试环境搭建的详细步骤,对此有需要的朋友参考学习下。
    2018-05-05
  • Vue集成阿里云做滑块验证的实践

    Vue集成阿里云做滑块验证的实践

    滑块验证是比较常见的人机鉴别的方法,本文主要介绍了Vue集成阿里云做滑块验证,具有一定的参考价值,感兴趣的可以了解一下
    2022-01-01

最新评论