首页 > 其他分享 >Vue 与 scoped

Vue 与 scoped

时间:2024-07-05 16:53:11浏览次数:13  
标签:Vue 样式 scoped 组件 example 属性

在 Vue 中,scoped 是一个用于 <style> 标签的特殊属性,它的作用是将样式限定在当前组件的范围内,避免样式污染其他组件。这对于大型项目尤其有用,因为它可以确保组件的样式是独立的,不会意外地影响到其他组件。

使用 scoped

在 Vue 组件中,你可以通过在 <style> 标签上添加 scoped 属性来实现样式的局部作用域。例如:

<template>
 <div class="example">
   <p>This is a scoped style example.</p>
 </div>
</template>

<script>
export default {
 name: 'ScopedExample'
}
</script>

<style scoped>
.example {
 color: blue;
}

p {
 font-size: 20px;
}
</style>

在这个示例中,.examplep 的样式只会应用于 ScopedExample 组件内部的元素,而不会影响到其他组件中的相同类名或标签名的元素。

工作原理

当你使用 scoped 属性时,Vue 会在编译过程中为每个组件生成一个唯一的属性(例如 data-v-xxxxxx),并将这个属性添加到组件的根元素和所有相关的 CSS 选择器中。这样可以确保样式只应用于当前组件的元素。

例如,上面的示例在编译后可能会变成这样:

<template>
 <div class="example" data-v-123456>
   <p data-v-123456>This is a scoped style example.</p>
 </div>
</template>

<style>
.example[data-v-123456] {
 color: blue;
}

p[data-v-123456] {
 font-size: 20px;
}
</style>

深度选择器

有时可能需要将样式应用到子组件的深层元素。在这种情况下,可以使用深度选择器 >>>/deep/。例如:

<template>
 <div class="parent">
   <ChildComponent />
 </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
 name: 'ParentComponent',
 components: {
   ChildComponent
}
}
</script>

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

或者:

<style scoped>
.parent /deep/ .child {
 color: red;
}
</style>

注意事项

  1. 动态生成的内容scoped 样式不会自动应用到通过 JavaScript 动态生成的内容中。如果你需要为动态生成的内容应用样式,确保这些内容包含正确的作用域属性。

  2. 第三方库:如果使用第三方库生成的 HTML 结构,可能需要手动添加作用域属性,或者使用全局样式。

  3. 性能:虽然 scoped 样式提供了很大的便利,但在大型项目中使用过多的 scoped 样式可能会影响性能,因为每个组件的样式都需要单独处理。

总结

scoped 属性是 Vue 提供的一种方便的方式,用于确保组件样式的独立性和模块化。

标签:Vue,样式,scoped,组件,example,属性
From: https://www.cnblogs.com/xxaxf/p/18286142

相关文章

  • Ant Design Vue文字溢出鼠标滑上显示tooltip。不溢出,鼠标滑上不显示tooltip,溢出显示to
    <templateslot="testContent"slot-scope="{record}"><a-tooltip@mouseenter="showToolTip"overlayClassName="customtooltip_class"......
  • VUE0002:pnpm无法加载,解除系统禁止运行脚本
    1,pnpm:无法加载文件C:\Users\xxxxx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。2,解决方案地址:https://blog.csdn.net/jwbabc/article/details/139505236vscode中执行pnpminstall的时候,直接报了上面的错误。解决: 然后输入:set-ExecutionPolicyRemoteSign......
  • Leaflet-vue 热力图 (设置热力图颜色)
    使用的热力图是heatmap.js因为是Leaflet,所以还要引入一个对应的插件leaflet-heatmap.js,这个插件就在heatmap目录下的plugins里面。代码如下:import"heatmap.js";importHeatmapOverlayfrom"@/utils/leaflet-heatmap.js";letcfg={radius:0.5,//半径maxOpacity......
  • vue3 父子组件双向绑定
    父组件ParentComponent.vue<!--ParentComponent.vue--><template><div>子组件输入的数据<p>ParentValue:{{parentValue}}</p>父输入框<inputv-model="parentValue"><CustomInputv-model="par......
  • vue-router
    vue-routervue-router是vue的一个插件库,专门用来实现SPA单页面应用对路由的理解1.什么是路由一个路由就是一组映射关系(key-value)key是路径,value可以是function或components2.路由的分类后端路由理解:value是function,用于处理客户端提交的请求工作过程:服务......
  • Vue中引入jQuery两种方式可在vue中引入jQuery
    第一种:普通html中使用jquery将jQuer的文件导入到项目中,然后直接使用<scriptsrc="jQuery.js"></script>即可。第二种:vue组件中使用jquery1、安装依赖cnpminstalljquery--save或者npminstalljquery--save;2、此处也有两种方式一、组件中直接使用jquery二、使用全局变量......
  • vue多个el-popover使用(打开不卡顿,可正常关闭)
    最近写vue遇到了点问题同页面多个el-popover打开卡顿问题、无法关闭问题解决方案,组件化封装el-popover组件模板定义<template><divclass="screen"><el-popover:placement="placement":width="screenWidth"trigger="c......
  • vue2和vue3自定义指令实现只读模式,禁止用户编辑
    解决代码表单组件大量disable的麻烦,实现只读。只需要在需要的地方加上v-read-only即可达到只读效果,快捷方便。实现思路父元素下添加一个遮罩层元素遮罩层元素的显示隐藏由参数决定要想简单快捷的实现,最好用的就是写一个遮罩层,通过遮罩来隔绝用户的操作。原始代码如下:<temp......
  • 基于Java+SpringBoot+Vue的学生宿舍管理系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • vue学习笔记6
    1.组件事件Parent.Vue中的代码<template><h3>Parent</h3><br/><Child@someEvent="getChildDataHandler"/><p>{{message}}</p></template><script>//1.引入组件impo......