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-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能

    vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能

    这篇文章主要介绍了vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2018-03-03
  • vue3 自定义指令详情

    vue3 自定义指令详情

    这篇文章主要介绍了 vue3 自定义指令详情,自定义指令分为全局和局部两种类型,大家并不陌生。今天我们就讲讲在 vue3 中,自定义指令定义、使用以及钩子函数都有哪些变化?,需要的朋友可以参考一下
    2021-11-11
  • 关于vue data中的this指向问题

    关于vue data中的this指向问题

    这篇文章主要介绍了关于vue data中的this指向问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Vue取消Axios发出的请求

    Vue取消Axios发出的请求

    axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。首先需要知道:axios不是一种新的技术。axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范
    2022-09-09
  • Luckysheet 在vue中离线使用及引入报错的解决方案(推荐)

    Luckysheet 在vue中离线使用及引入报错的解决方案(推荐)

    这篇文章主要介绍了Luckysheet 在vue中离线使用方法及引入报错的解决方案,将dist离线包在项目创建个文件夹放着,然后根据放置的位置在 index.html里面引入,下面通过案例给大家介绍我的项目里面放置的位置,需要的朋友可以参考下
    2022-10-10
  • Vue3中实现微信扫码登录的步骤和代码示例

    Vue3中实现微信扫码登录的步骤和代码示例

    在 Vue 3 中实现微信扫码登录,涉及到前端生成二维码、监听微信回调以及与后端的交互,本文给大家介绍了一个详细的实现步骤和代码示例,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • vue-element-admin后台生成动态路由及菜单方法详解

    vue-element-admin后台生成动态路由及菜单方法详解

    vue-element-admin后台管理系统模板框架 是vue结合element-ui一体的管理系统框架,下面这篇文章主要给大家介绍了关于vue-element-admin后台生成动态路由及菜单的相关资料,需要的朋友可以参考下
    2023-09-09
  • 详解Vue实战指南之依赖注入(provide/inject)

    详解Vue实战指南之依赖注入(provide/inject)

    这篇文章主要介绍了详解Vue实战指南之依赖注入(provide/inject),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • vue实现播放后端flask发送的mp3文件

    vue实现播放后端flask发送的mp3文件

    这篇文章主要为大家详细介绍了vue如何实现播放后端flask发送的mp3文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • 浅析Proxy如何实现Vue响应式

    浅析Proxy如何实现Vue响应式

    这篇文章主要是来和大家探讨一下,Vue的响应式系统仅仅是一个Proxy吗,本文将围绕此问题探索一下Proxy是如何实现Vue响应式的,感兴趣的小伙伴可以了解一下
    2023-08-08

最新评论