您现在的位置是:首页 > 文章详情

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

日期:2018-11-15点击:441

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

结语

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

原文链接:https://my.oschina.net/u/4018697/blog/2876677
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章