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

vue组件中的style标签标有scoped属性时代表style里的css样式只适用于当前组件元素 。接下来经过本文给你们分享vue组件中的样式属性scoped实例详解css

**Scoped CSS**html

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

vue组件中的style标签标有scoped属性时代表style里的css样式只适用于当前组件元素
 它是经过使用PostCSS来改变如下内容实现的:vue

<style scoped>  
.example {  
 color: red;  
}  
</style>  
   
<template>  
 <div class="example">hi</div>  
</template>

渲染结果:sass

<style>  
.example\[data-v-f3f3eg9\] {  
 color: red;  
}  
</style>  
   
<template>  
 <div class="example" data-v-f3f3eg9>hi</div>  
</template>

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

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

关于子组件的根元素less

使用了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里会报错

结语

感谢您的观看,若有不足之处,欢迎批评指正。

相关文章
相关标签/搜索