bounty还有4天到期。回答此问题可获得+50声望奖励。dylosaur正在寻找这个问题的更详细的答案:我想知道为什么标签的float属性会导致外部div被填充出来,而不是内部元素被填充进去
与我所拥有的:
h1 {
color: blue;
padding-left: .75em;
}
p {
padding-left: 1.50em;
}
div {
margin-bottom: 0.5em;
}
label {
float: left;
width: 16em;
text-align: right;
}
input {
margin-left: 1em;
}
.formDiv {
text-align: center;
}
#border {
border: .25em solid blue;
display: inline-block;
}
#calculate,
#clear {
margin-bottom: 1em;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="salesTax.css">
<title>Sales Tax Calculator</title>
</head>
<body>
<main>
<div id="border">
<h1>Sales Tax Calculator</h1>
<p>Enter Subtotal and Tax Rate and click "Calculate".</p>
<form>
<div class="formDiv">
<label for="subtotal">Subtotal:</label>
<input type="text" id="subtotal">
</div>
<div class="formDiv">
<label for="taxRate">Tax Rate:</label>
<input type="text" id="taxRate">
</div>
<div class="formDiv">
<label for="salesTax">Sales Tax:</label>
<input type="text" id="salesTax" disabled>
</div>
<div class="formDiv">
<label for="total">Total:</label>
<input type="text" id="total" disabled>
</div>
<div class="formDiv">
<input type="button" id="calculate" value="Calculate">
<input type="button" id="clear" value="Clear">
</div>
</form>
</div>
<script src="salesTax.js"></script>
</main>
</body>
</html>
据我所知,这里应用于标签的float: left
导致它们尽可能多地填充#formDiv
,以获得输入左侧的标签。因为我希望标签和输入更居中,所以我想我会对#border
应用padding,但所做的只是向外扩展它,而不是向内推动内部元素。
为什么会这样?有没有什么我可以做的,以防止没有删除任何提供的CSS?**(我唯一可以删除的部分CSS是#border
的CSS。其余部分是规范的一部分,但可以添加到。)
5条答案
按热度按时间gdx19jrr1#
在您的情况下,使用
<table>
可能是合适的:********************🙃
g0czyy6m2#
如果您可以通过
#border
选择器添加样式,那么您可以轻松地覆盖其他样式。可能的示例:
要测试呈现的片段
33qvvth13#
你正在使用一些非常老式的CSS,所以老式的
display: table
解决方案如下:如果你被允许编辑HTML,然后添加一些额外的标签:
e1xvtsh34#
填充不能“推入”已经处于最小宽度的内容。
display: inline-block
导致<div id="border">
不宽于其内容。因此,padding-right
增加了<div id="border">
的宽度。“推入”内部元件的唯一方法将是减小那些元件的宽度。
6ie5vjzr5#
如果我正确地理解了这个问题,然后加上:
到 Package 输入(按钮)的div应该会达到你想要的结果: