前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue深度作用选择器

vue深度作用选择器

作者头像
阿超
发布2022-08-17 20:24:03
8030
发布2022-08-17 20:24:03
举报
文章被收录于专栏:快乐阿超快乐阿超

勤劳一日,可得一夜安眠;勤劳一生,可得幸福长眠。——达•芬奇(意大利)

我们首先在HX中创建vue项目

image-20210925194214061
image-20210925194214061

跟着我之前写的博客简单配置一下路由

今天简单聊聊vuecss的作用域

我们知道vue中的style标签带scoped属性时,它的CSS只作用于当前组件中的元素

例如我这里的HelloWorld组件

代码语言:javascript
复制
<template>
	<div class="hello">
		<div class="hello-ruben">
			<h1>{{ msg }}</h1>
			<p>
				For a guide and recipes on how to configure / customize this project,
				<br />
				check out the
				<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>
				.
			</p>
			<h3>Installed CLI Plugins</h3>
			<ul>
				<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
			</ul>
			<h3>Essential Links</h3>
			<ul>
				<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
				<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
				<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
				<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
				<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
			</ul>
			<h3>Ecosystem</h3>
			<ul>
				<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
				<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
				<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
				<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
				<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
			</ul>
		</div>
	</div>
</template>

<script>
export default {
	name: 'HelloWorld',
	props: {
		msg: String
	}
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
	margin: 40px 0 0;
}
ul {
	list-style-type: none;
	padding: 0;
}
li {
	display: inline-block;
	margin: 0 10px;
}
a {
	color: #42b983;
}
</style>

注意style标签是带了scoped属性的

如果我们在外面的页面上引用这个组件,可以看到css选择器被转换了

image-20210925205151097
image-20210925205151097

如果我们在外面页面上想改子组件里元素的样式

使用全局style标签(就是不带scoped属性的标签,会作用于所有页面)还好,但如果我们只想作用于当前页面或组件,使用了scoped属性

这时候可以看到我们除了根节点class生效,其他的都没有生效

image-20210925205651414
image-20210925205651414
image-20210925205821814
image-20210925205821814

如果我们想要让它生效,则可以使用 >>> 操作符

image-20210925210038926
image-20210925210038926

有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/ 操作符取而代之——这是一个 >>> 的别名,同样可以正常工作

例如:

image-20210925210206032
image-20210925210206032

当然大家注意到我这里还有个使用v-html渲染的标签

其中的富文本是一个带class的标签,我们在外面使用对应的class选择器失效了,此处我们也可以使用>>>操作符去让v-html渲染的标签里的元素样式得到准确的变更

image-20210925210633704
image-20210925210633704

这是vue-loader官方文档中学到的内容,我们在使用vue-cli创建项目时默认就安装了它

看到这里,对于vue中的css以后出现无法修改的问题,现在应该知道怎么处理了吧

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档