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

作者: a333661d6d6e | 来源:发表于2018-11-15 17:58 被阅读4次

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;
//欢迎加入全栈开发交流圈一起学习交流:864305860
//面向1-3年前端人员
//帮助突破技术瓶颈,提升思维能力
 }
</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组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素 。接下来通过本...

  • [每天进步一点点~] vue笔记(一)css样式中深度作用选择器

    在style标签中添加一个scoped属性,可以使css样式只作用于加了scoped属性的vue组件。例如 A.v...

  • 笔记

    Vue Scoped CSS覆盖组件的样式 如果在 style 标签设置 scoped 属性,则它的样式只应用到当...

  • deep selector深度作用选择器

    前言:Vue的组件中,可以在 标签上添加scoped属性,实现组件样式的私有化,不会对全局造成样式污染。 scop...

  • vue 高级技巧

    1.css 局部样式 vue 中style样式添加scoped属性表示它的样式只作用于当前组件,样式私有化。 但是...

  • Element-UI 相关文章收藏

    【Vue】 element ui 引入第三方图标vue组件样式添加scoped属性之后,无法被父组件修改。或者无法...

  • vue样式穿透

    前言 vue的style中设置scoped属性后,组件实现样式私有化。但是该组件又使用的其他组件库时(vant,e...

  • vue中scoped的原理

    vue组件中的scoped是很常用的属性,用于将组件的样式私有化,防止样式污染全局,那它又是如何实现的? 先来看一...

  • iview组件样式改动未生效

    原因:vue的scoped属性,CSS样式就只能作用于当前的组件,组件之间的样式不互相污染,但是引用的三方库,样式...

  • Vue中的scoped属性

    概述 在vue组件中,在style标签上添加scoped属性,以表示它的样式作用于当下的模块,很好的实现了样式私有...

网友评论

    本文标题:vue组件中的样式属性scoped实例

    本文链接:https://www.haomeiwen.com/subject/vivyfqtx.html