这篇文章主要介绍“CSS样式冲突怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS样式冲突怎么解决”文章能帮助大家解决问题。
样式冲突解决方案
Scoped CSS与CSS Module是两大解决CSS中不存在模块化缺陷的有效手段,其中CSS Module通过将class名称做编码转换的方式来保证唯一性,从而避免样式冲突,比如
<h2 className={style.title}>
Hello World
</h2>
被转换为
<h2 class="_3zyde4l1yATCOkgn-DBWEL">
Hello World
</h2>
而相应的
.title {
color: red;
}
被转换为
._3zyde4l1yATCOkgn-DBWEL {
color: red;
}
由于转换过后发生同名的可能性实在是太小了,这样就保证了在开发阶段可以放心的使用各种样式名称,即便发生同名也不会造成冲突。
而Scoped CSS使用的是另一种解决方案 —— 在HTML标签上做文章,比如
<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>
这样,example的样式被限定在具有data-v-f3f3eg9属性的HTML标签上,也间接保证了唯一性,避免冲突。
本来到此好好的,不过官方文档接下来的一段话反而让我迷惑了
使用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。
看来还是得要做实验
准备
准备三个组件
Level1.vue
Level2.vue
Level3.vue
其中Level1.vue包含了Level2.vue,Level2.vue包含了Level3.vue
接着加上一些方便于辨析的样式
关于“CSS样式冲突怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。