Bootstrap为锚点添加了非常好的默认样式,但是它使得<a>
标记很难用于蓝色文本之外的其他内容。说,我希望文本是黑色的。一种方法是将class="my_class"
添加到锚标记,然后添加a.my_class{color:black}
规则。
但是我很快就会意识到bootstrap还为:hover
添加了样式。所以,我也必须改变它。
它还会更改outline
,text-decoration
,:focus
等
当然,我可以阅读未经编辑的bootstrap.css版本,并尝试了解我必须覆盖的所有情况,以确保它保持黑色。
但我觉得必须有一些更简单的方法 - 我期待添加class="link-unstyled"
之类的东西?
答案 0 :(得分:28)
即使是晚会,但对于普通文本链接(p
等内部)的解决方案更短:
.link-unstyled, .link-unstyled:link, .link-unstyled:hover {
color: inherit;
text-decoration: inherit;
}
我的测试表明,使用 :link
时,所有悬停或点击后的特殊样式都会被删除。
编辑22.11.2015 :某些用例仍需要:hover
,例如在以下代码段中。更新了上面的CSS。
.link-unstyled, .link-unstyled:link, .link-unstyled:hover {
color: inherit;
text-decoration: inherit;
}
.bg-menu:hover {
background-color: #0079C1;
color: #FFFFFF;
}
.clickable {
cursor: pointer;
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div class="row" style="width:400px;">
<ul class="list-unstyled col-md-4">
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test1-1</a>
</li>
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test1-2</a>
</li>
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test1-3</a>
</li>
</ul>
<ul class="list-unstyled col-md-4">
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test2-1</a>
</li>
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test2-2</a>
</li>
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test2-3</a>
</li>
</ul>
<ul class="list-unstyled col-md-4">
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test3-1</a>
</li>
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test3-2</a>
</li>
<li class="bg-menu clickable"><a href="#" class="link-unstyled">test3-3</a>
</li>
</ul>
</div>
&#13;
答案 1 :(得分:9)
以下是一个实例:http://jsfiddle.net/S9JXC/12/ 您可以设置单个元素或一组元素的样式。在这种情况下,它们会覆盖bootstrap.css定义的样式,这些样式在这些样式之前加载并优先使用。
bootstrap.css定义的样式
a {
color: #428BCA;
text-decoration: none;
}
a:hover, a:focus {
color: #2A6496;
text-decoration: underline;
}
自定义样式
.style-1 {
color: red;
}
.style-1:hover,
.style:focus {
color: darkred;
}
.style-2 a {
color: #9F5F9F;
text-decoration: underline;
}
.style-2 a:hover,
.style-2 a:focus {
color: #871F78;
}
<a href="#">Link</a><br>
<a href="#" class="style-1">Link with a different style</a>
<div class="style-2">
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
答案 2 :(得分:6)
遇到这个问题虽然Jeroen的答案非常全面,但也很长。
如果我希望这个标签具有正常的标签文字颜色,我只需要两个新的CSS规则。
a.unlink {
color: inherit;
}
a.unlink:hover {
color: inherit;
}
如果你看一下我的片段,就可以看出差异。
a.unlink {
color: inherit;
}
a.unlink:hover {
color: inherit;
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<span class="label label-primary"><a class="unlink" href="#">Good looking tag</a></span> <-- This looks good
<br />
<span class="label label-primary"><a href="#">Bad looking tag</a></span> <-- This looks bad
&#13;
答案 3 :(得分:4)
我迟到了,但是仍然希望提供另一个答案来直接解决问题中的一些问题,并提供我自己的解决方案FWIW。
我期待添加
class="link-unstyled"
或其他内容?
我也是。显然它不存在。
当然我可以阅读bootstrap.css的未经授权的版本[...]但是我认为必须有一些更简单的方法。
不要太害怕:twitter-bootstrap源是可以理解的。看看the appropriate lines in scaffolding.less,看起来像这样:
// Links
a {
color: @link-color;
text-decoration: none;
&:hover,
&:focus {
color: @link-hover-color;
text-decoration: underline;
}
&:focus {
.tab-focus();
}
}
事实上,Bootstrap源令我感到惊讶:正如你所提到的,至少还有:visited
,但Bootstrap忽略了这一点。答案就在this SO question:
由于Bootstrap是为应用程序构建的,因此它不支持[
:visited
]
有道理。无论如何,我想我们只需要覆盖Bootstrap集的样式,添加其他伪选择器。但是,正如你在对另一个答案的评论中所说:
作为开发人员,我怎么知道我必须“unstyle”?
事实上,您需要覆盖的事项列表很短,MDN summarizes in the :hover article:
为了设置适当的链接样式,您需要将:hover规则放在:link和:visited规则之后但在:active之前,由LVHA订单定义:: link - :visited - :hover - :活性
这就是你的问题的答案:你从MDN知道(或者如果你必须:从W3规范,这当然是'更具权威') - 或者你知道从你创建的这个Stack Overflow线程: - 。)
如果您愿意,您仍然可以为您的网站设置:active
。这让我想到......
这实际上是您在问题中提到的解决方案:使用特定的类来设置正确的伪类的样式。
Sass版本:
$unstyledAColor: #333;
$unstyledAColorHover: #000;
$unstyledAColorInverse: #969696;
$unstyledAColorInverseHover: #FFF;
.a-unstyled {
color: $unstyledAColor;
&:link { color: $unstyledAColor; }
&:visited { color: $unstyledAColor; }
&:hover { color: $unstyledAColorHover; }
&:active { color: $unstyledAColor; }
}
.navbar-inverse .a-unstyled {
color: $unstyledAColorInverse;
&:link { color: $unstyledAColorInverse; }
&:visited { color: $unstyledAColorInverse; }
&:hover { color: $unstyledAColorInverseHover; }
&:active { color: $unstyledAColorInverse; }
}
CSS版本:
.a-unstyled { color: #333; }
.a-unstyled:link { color: #333; }
.a-unstyled:visited { color: #333; }
.a-unstyled:hover { color: #000; }
.a-unstyled:active { color: #333; }
.navbar-inverse .a-unstyled { color: #969696; }
.navbar-inverse .a-unstyled:link { color: #969696; }
.navbar-inverse .a-unstyled:visited { color: #969696; }
.navbar-inverse .a-unstyled:hover { color: #FFF; }
.navbar-inverse .a-unstyled:active { color: #969696; }
答案 4 :(得分:4)
Reset color .text-reset
和Text Decoration .text-decoration-none
是实现这一目标的Bootstrap 4选项。
答案 5 :(得分:1)
我找到了Bootstrap 3的一个版本,只是删除了访问的属性:Bootstrap "link-unstyled" Helper Class
.a-unstyled {
&,
&:link,
&:visited,
&:hover,
&:active,
&:active:hover {
color: inherit;
text-decoration: none;
/*font-style: inherit;
background-color: transparent;
font-size: inherit;
font-variant: inherit;
font-weight: inherit;
line-height: inherit;
font-family: inherit;
border-radius: inherit;
border: inherit;
outline: inherit;
box-shadow: inherit;
padding: inherit;
vertical-align: inherit;*/
}
}
这包括@Ohad Schneider的评论的继承建议。