自定义CSS无法覆盖Bootstrap CSS的技术问询
解决方案
要实现.navbar-nav容器内<a>标签hover时显示红色,且无需使用!important,只需提升自定义CSS选择器的权重即可。
原因分析
Bootstrap中控制导航链接hover样式的选择器是.nav-link.link-light:hover,其CSS权重为30(两个类选择器+一个伪类选择器)。你原有的选择器.navbar-nav a:hover权重仅为21(一个类选择器+一个元素选择器+一个伪类选择器),权重不足导致无法覆盖Bootstrap的默认样式。
修改后的核心CSS代码
将原有hover样式代码替换为:
.navbar-nav .nav-link:hover { color: red; }
该选择器权重为30(两个类选择器+一个伪类选择器),与Bootstrap的目标选择器权重持平,且由于自定义CSS在Bootstrap之后加载,会优先生效。
完整修改后的CSS片段
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } html { box-sizing: border-box; font-family: sans-serif; line-height: 1.15; } body { background-color: #F4D9D5; } .navbar-brand, .navbar-nav { font-size: 1.5rem; font-weight: 100; } .navbar-nav .nav-link:hover { color: red; }
内容的提问来源于stack exchange,提问作者Pradyut Vatsa
相关产品推荐
相关产品推荐

