Ant Design Vue地址:https://www.antdv.com/docs/vu...

刚接触Ant Design Vue的童鞋们可能会有这样的问题,不就是批改默认的组件款式吗,为什么一会失效,一会又不失效。心愿看完这个文章,会给你一些播种\~

一、想要批改组件的默认款式,首先你须要晓得组件是渲染在哪里的

这个组件是渲染在以后页面外部,还是脱离vue根节点独自渲染?(根节点默认id="app")

这个问题的答案很容易失去,关上文章顶部的antdv官网文档,任意选中组件,F12关上调试,察看Elements,例如:

1、不难看出,button是渲染在以后页面外部的,包裹在"#app"的容器里。这样的组件还有很多,比方input、radio等等。再看上面这张图:

2、dropdown组件则是一部分渲染在#app内,一部分渲染在"#app"的里面且与"#app"同级。这样的组件也有很多,比方select、drawer、modal等等
3、dropdown等,咱们发现它们的共同点:这些组件都是“触发型”组件,都是由用户hover、click等手动激活后,进行了动静渲染的

确定了这一点之后有什么用呢?

第二类组件,class类名设置的仅仅是#app外部元素,而渲染在#app之外的那局部节点,须要独自设置类名,比方 tooltip,咱们设置overlayClassName="overlay-class"来测试:



咱们发现类名曾经设置好了。这一条解决了 没有对应到本人的父级类会造成的款式不失效 的问题
不同组件设置的属性名称不完全相同,应用时去查阅文档就能够了

二、类名scoped的限度

你是否会有这样的纳闷,为什么有的须要设置 >>> 或者 /deep/ 来重写深层款式,有的却不须要?

开发时,咱们会依据须要设置每个页面、组件css 的 scoped属性,家喻户晓,这个属性是为了限度css只被以后vue文件所应用,那它是如何实现这个限度的呢?

咱们任意关上一个scoped的页面,关上调试

咱们能够发现,这个页面的简直所有节点,都有了一个独特的“标识”

咱们在elements中关上对应scoped的css文件:

.override {  padding: 100px 100px 200px 100px;}/* 按钮 */.test-button {  background: pink;  border: 0;}.ant-btn-primary {  background: #ccc;  border: 0;}/* 面包屑 */.container >>> .ant-breadcrumb-separator {  margin: 10px;}.container /deep/ .ant-breadcrumb-separator {  margin: 30px;}

发现css也被编译成了具备标识的!

重要的是,设置在/deep/ 和 >>> 前面的类,在编译之后,是没有这个标识的!
发现了这一点之后,咱们不须要去管是什么页面,用的什么组件,只须要关上Elements面板,察看你要写的节点class,有没有这个“标识”。如果有的话,失常写css,类名就会被编译成有“标识”的;如果没有的话,须要设置在/deep/、>>>之后,编译后就会拿掉这个标识

以上两点,第一点解决了没有父级类的问题,第二点解决了scoped造成的没有对应到父级类的问题.心愿对你有所帮忙

若以上两点依然没有解决你的问题,欢送留言,咱们一起摸索更多