Material-Design-Lite, Override styleguide property without !important

≡放荡痞女 提交于 2019-12-11 23:53:00

问题


I'm playing with Material-Design-Lite and I want to override a style but it won't work. Let say that I woudl like to change the padding on mdl-navigation__link which is actually 16px 40px to 0px.

I have overrided the property on my custom style sheet but without success. However some other styles are applied :

.my-navigation .mdl-navigation__link {
  padding: 0px;
  border: 1px solid red;
}

The border is applied but not the padding. And into teh web develope tools I see that my padding property is ignored (strikethrough) du to a styleguide.css that I never include !

I suppose that styleguide.css is included by the javascript file. So the only trick to apply my custom padding is to mark it as !important.

Is it a cleaner way to override styleguide.css properties ?

Edit : Here is the codepen : http://codepen.io/anon/pen/ZGjYqo


回答1:


You just need to increase the specificity of your selectors. Check the specificity of what MDL provides. .mdl-layout__drawer .mdl-navigation .mdl-navigation__link. This is a 3-class specificity, so about 30. You are doing a two class selector, so roughly 20 specificity. Whether yours comes after or not, the high specificity wins.

Some good resources on specificity:

  • Smashing Magazine
  • MDN
  • CSS tricks



回答2:


Try doubling up the classes. Even if they are the same class the specificity will be greater than it was when selecting only one.

Perfect for allowing overrides without resorting to !important

for example:

.mdl-navigation__link.mdl-navigation__link {
  padding: 0px;
  border: 1px solid red;
}

More tricks like this for lower specificity at css-tricks

And my favorite guide on CSS Specificity



来源:https://stackoverflow.com/questions/31447555/material-design-lite-override-styleguide-property-without-important

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!