如何在vue组件中改掉公共样式html标签下的这个属性,或者重写,但是不影响公共样式文件,
在子组件中的style部分,重写样式试过吗
我看是改html和body的,如果是单页页面,全局也就一个html和body。这不是自相矛盾了。
如果是多个页面, 那自然隔离开了,没啥影响
如果不是这html和body的改变,那可以用scope 隔离开
在 Vue 中,可以使用局部类名来重写公共样式,而不影响公共样式文件。具体实现方法是在组件的样式中使用局部类名,并在组件的 template 中引用这个局部类名。
例如,在组件的样式中定义一个局部类名,如:
.local-class {
color: red;
}
然后在组件的 template 中使用这个籀部类名,如:
<template>
<div class="global-class local-class">
<!-- content -->
</div>
</template>
这样,这个组件就可以使用公共样式的 global-class 类名,同时又能使用自己定义的 local-class 类名来重写样式,而不会影响其他组件使用的公共样式。
另外,也可以使用 scoped 属性来限定组件的样式只在当前组件中生效
<style scoped>
.local-class {
color: red;
}
</style>
这样在当前组件中所有的样式都是 scoped 的,不会影响其他组件。
谢邀!!!望采纳!!
只要加上 <style scoped>
这样 css 就只会作用在当前组件内了,详细文档见 vue-loader:https://vue-loader.vuejs.org/guide/scoped-css.html#mixing-local-and-global-styles
<style>
/* global styles */
</style>
<style scoped>
/* local styles */
</style>
使用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。
在该组件中肯定会影响到公共的样式,但是在别的组件中就不会影响,不知道你想做什么
改成这样试试看,去掉scope字段
<style>
overflow: visible !important;
</style>
你把mian.scss的注释去掉,子组件的style 加上scoped,试试看
style样式正常有 层级顺序,公共先调用,组件最好在公共调用之后单独写,这样组件的样式不会继承公共
直接在组件下面需要样式的标签上写一段style
overflow: visible !important;
看了一下,大家给的解答都很多,但是我觉得都不管用,原因是:
1.首先在main.scss中在html里加上这个代码
html {
--overflow: hidden;
overflow: var(--overflow);
你的其他样式写这里....
}
2.然后在你想单独修改样式的页面的created生命周期中(由于是html根标签,无需等待挂载dom完毕,直接上),加入以下代码:
const html = document.querySelector('html')
html && html.style.setProperty('--overflow', 'visible')
3.最后一步很关键,将--overflow变量赋值回默认值,要使用mixins,vue3没有mixins,可以自己新建一个setup文件,挨个引入也是一样的
// mixins里面同样在created生命周期中设置,将变量赋值回来
created() {
const html = document.querySelector('html')
html && html.style.setProperty('--overflow', 'hidden')
}
因为vue会先执行mixins里的生命周期再执行页面的,使用利用这个特性,完美修改。就是前期要是没有使用mixins,会觉得比较麻烦。
望采纳!!!点击回答右侧采纳即可!!
可以使用以下几种方法,我给你列举一下
使用 style 标签和 scoped 属性,可以给当前组件的样式添加局部作用域。这样可以避免影响其它组件的样式。
<template>
<div>
<p>Hello World</p>
</div>
</template>
<style scoped>
p {
color: red;
}
</style>
使用 CSS 中的类优先级,将组件中的样式添加到公共样式后面。
<template>
<div class="my-component">
<p>Hello World</p>
</div>
</template>
<style>
.my-component p {
color: red;
}
</style>
使用 !important 属性,强制覆盖公共样式。
<template>
<div>
<p>Hello World</p>
</div>
</template>
<style>
p {
color: red !important;
}
</style>