【问题标题】:Why isn't my stylesheet overwritting bootstrap's?为什么我的样式表没有覆盖引导程序?
【发布时间】:2016-12-26 15:23:06
【问题描述】:

我读了数百万的时间,如果您在自己的 CSS 样式表中定义引导类,您将覆盖它们,因此您创建的元素将具有您想要的预定义样式。

虽然这对于页面的一半是正确的,但我使用 form-control 类的输入按钮不起作用,我无法弄清楚原因,因为其他人都遇到了这个问题。

这是我的问题:

var searcher = document.getElementById('buscador');

searcher.addEventListener("click", function()
{
	var master = searcher.parentNode;
	searcher.removeChild(searcher.childNodes[0]);
	searcher.style.animationName = "expandismo";
	searcher.style.animationDuration = "1s";
	setTimeout(function(){
		master.removeChild(searcher);
		var barraSearch = document.createElement('input');
		barraSearch.setAttribute('type', 'text');
		barraSearch.setAttribute('id', 'barraSearch');
		barraSearch.setAttribute('class', 'form-control');
		barraSearch.setAttribute('placeholder', 'Buscar...');
		var spanCheto = document.createElement('span');
		var botonCheto = document.createElement('button');
		var secondSpan = document.createElement('span');
		spanCheto.setAttribute('class', 'input-group-btn');
		botonCheto.setAttribute('class', 'btn btn-default');
		secondSpan.setAttribute('class', 'glyphicon glyphicon-search');
		secondSpan.setAttribute('aria-hidden', 'true');
		botonCheto.appendChild(secondSpan);
		spanCheto.appendChild(botonCheto);



		master.appendChild(barraSearch);
		barraSearch.focus();

	}, 1000);
	
}, false);
.container-fluid
{
	text-align: center;
}
#toplane
{

	color: white;
	background-image:  url(citybackground.jpg);
	background-size: 100% 100%;
	min-height: 400px;
}
#botlane
{

}
#headone
{
	margin-top: 130px;
	color: black;
	text-shadow: 0px 0px 12px white, 0px 0px 8px white, 0px 0px 3px white, 0px 0px 5px white;
	font-family: "Times New Roman", Times, monospace;
	font-size: 60px;
}
#buscador
{
	color: #595959;
	width: 40px;
	height: 40px;
	border-radius: 18px;
	background-color: lightgrey;
	cursor: text;
}
#buscador:hover
{
	background-color: lightgrey;
	opacity: 1;
}
#buscador:active
{
	background-color: white;
}
.input-group
{
	width: 100%;
	text-align: center;
}
.form-control
{
	width: 70%;
	border-radius: 18px;
	background-color: lightgrey;
	height: 40px;
	padding-left: 10px;
	font-size: 20px;
	color: black;
}
.form-control:focus
{
	box-shadow: 0px 0px 5px #66d9ff;
	box-shadow: 0px 0px 10px #66d9ff;
	box-shadow: 0px 0px 8px #66d9ff;
	box-shadow: 0px 0px 12px #66d9ff;
}
@keyframes expandismo
{
	from{width: 40px}
	to{width: 70%}
}
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Price Surfer FAQ</title>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
		<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

	<!-- Optional theme -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css">

	<!-- Latest compiled and minified JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
	<link rel="stylesheet" type="text/css" href="wean1.css">
	
</head>
<body>
<div class="container-fluid" id="toplane">
	<h1 id="headone">PRICE SURFER FAQ</h1>
	<div class="input-group">
		<button id="buscador"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button>
	</div>
</div>
<div class="container-fluid" id="botlane">
	
</div>
<script type="text/javascript" src="wean1.js"></script>
</body>
</html>

【问题讨论】:

  • 浏览器 CSS 检查器旨在向您展示这类事情。
  • 添加一切!重要的。它覆盖了它
  • @UnknownDeveloper 这是一个可怕的建议!!
  • 考虑 CSS 的特殊性。您发布的 HTML 中没有 form-control
  • @ZimSystem 是 JavaScript 代码添加的类。

标签: javascript html css twitter-bootstrap


【解决方案1】:
.container-fluid .input-group .form-control{
   /* yous css*/
}

这是因为引导程序获得了带有两个类的 .form-control,而这种类型的选择 .input-group .form-control.form-control 更强

.input-group .form-control{

}

使用这个website 来计算哪个选择器更强。

查看此屏幕截图,第一个选择器有 3 个点,而第二个选择器只有两个点,所以无论您将第一个选择器放在哪里都比第二个强。每个 id 有 100 分,class 有 10 分,tags 有 1 分

【讨论】:

  • 在 .form.control 遇到问题时会修改所有这些
  • @Yacomini 它只会修改 .form-control 因为这就是你所指向的。如果它适用于所有类,它们将用逗号分隔。
  • @DrewKennedy 哦,对不起,我错过了那部分,我的错。我试试看
  • @DrewKennedy 我曾经在我的输入中有一个 id 的样式,但它也被忽略了,我猜这很奇怪。
  • 我不确定,但是 id 选择器比 class 选择器强,所以即使使用 id 也应该可以工作
【解决方案2】:

您应该在未选择的属性中添加 !important。 喜欢:

.form-control
{
    width: 70%!important;
    border-radius: 18px!important;
    background-color: lightgrey!important;
    height: 40px;
    padding-left: 10px;
    font-size: 20px;
    color: black;
}

【讨论】:

  • 几乎总有比!important更好的解决方案。
  • !important 是最邪恶的东西,应该避免。编写更好的 CSS 会覆盖样式。
  • !important 不强烈推荐,而且它忽略了我所有的修改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2020-05-12
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多