問題描述:
在上面這個標籤裡面,無論怎麼設置樣式,包括添加各种深度选择器(::v-deep , /deep/ , :deep())、!important,都沒有生效。
设置important都不行的时候,就应该考虑不是权限不够的问题,而是获取不到对应元素的问题。但是行內樣式可以设置成功,在使用組件庫時,行內樣式又無法設置子元素的樣式,比如使用了iview组件库的modal组件。
<Modal
class-name="wms-modal-wrapper modal-setting-approvers"
:width="580"
>
</Modal>
下面就是modal的html
原因:
因為modal組件沒有挂载在app元素中,而vue組件的概念、週期、樣式什麼的,都是建立在app元素上。導致設置的樣式,根本無法生效。
解決辦法:
設置全局樣式,在app.less文件中設置,這裡設置就不用加 :deep()選擇器了
.ivu-modal-wrap .ivu-modal .ivu-modal-content {
border-radius: 2px;
}
延伸
遇到类似这种设置样式无效的情况(并且是使用!important的情况),如果非常确定获取元素没错,那可能该元素是在app元素之外,解决的办法就是脱离app样式的控制,比如将样式写在app.less,或者通过link引入都可以。
说明:上面提到的app元素,就是使用vue框架时,会把所有元素都挂载在一个id为app的div标签里面
<div id="app"></div>