使用类时,HTML5字段之间的边距不准确
在以下版本的简单表单中,字段之间的边距将根据需要显示 该表单显示了3行字段: 第1行包含名字字段和标签 第2行包含姓氏字段和标签 第3行是感兴趣的行,包含两个字段City和ZIP,根据需要正确显示它们之间的间隙 我已经为标签显示了绿色边框,为字段显示了蓝色边框,以便调试 相关的CSS是:使用类时,HTML5字段之间的边距不准确,html,css,Html,Css,在以下版本的简单表单中,字段之间的边距将根据需要显示 该表单显示了3行字段: 第1行包含名字字段和标签 第2行包含姓氏字段和标签 第3行是感兴趣的行,包含两个字段City和ZIP,根据需要正确显示它们之间的间隙 我已经为标签显示了绿色边框,为字段显示了蓝色边框,以便调试 相关的CSS是: #city { width: 58%; margin-right: 2%; } #ZIP { width: 40%; } 这里的百分比是58,2代表城市领域的右边距,40,加起来是100%。因此
#city {
width: 58%;
margin-right: 2%;
}
#ZIP {
width: 40%;
}
这里的百分比是58,2代表城市领域的右边距,40,加起来是100%。因此,这两个字段适合该行。如上所述,这可以根据需要正确工作
然而,在相同的形式中,我创建了一个类,而不是在字段的CSS中指定右边距。布局立即中断。城市和拉链的两个字段不再适合排成一行。然后,ZIP字段被容纳在下一行中。为了确保这两个字段排成一行,我必须调整百分比,如下所示。但是,ZIP字段的右边缘与其他行中最后一个字段的右边缘不对齐
相关CSS如下所示:
.lastfld {
margin-right: 0;
}
#city {
width: 58%;
}
#ZIP {
width: 38%;
}
<div class="row">
<div class="col-lbl">
<label>City / ZIP</label>
</div>
<div class="col-flds">
<input type="text"
id="city" name="city"
placeholder="City">
<input type="text"
class="lastfld"
id="ZIP" name="ZIP"
placeholder="ZIP">
</div>
</div>
请注意,现在百分比2、58和38加起来仅为98%,在ZIP字段之后留下了一个空白
相关标记如下:
.lastfld {
margin-right: 0;
}
#city {
width: 58%;
}
#ZIP {
width: 38%;
}
<div class="row">
<div class="col-lbl">
<label>City / ZIP</label>
</div>
<div class="col-flds">
<input type="text"
id="city" name="city"
placeholder="City">
<input type="text"
class="lastfld"
id="ZIP" name="ZIP"
placeholder="ZIP">
</div>
</div>
请在全页视图中观看
个人资料-3
名字
姓
城市/邮编
使用浮动,你会得到你想要的结果,我已经做到了,请检查它 城市{ 宽度:58%; 保证金权利:2%; 浮动:左; } lastfld先生{ 右边距:0; } 城市{ 宽度:58%; } 拉链{ 宽度:38%; 浮动:对; } 城市/邮编
下面的代码在这里获得正确的优先级
input[type="text"], select, textarea {
display: inline-block;
float: left;
border: 1px solid #ccc;
margin-right: 2%;
padding: 12px 20px;
}
双向
使用选择器指定,这是一种完美的方法
input[type="text"].lastfld {
margin-right: 0px
}
或者使用重要的。
但是使用!不建议使用“重要”选项
.lastfld {
margin-right: 0 !important;
}
我认为选择器输入[type=text],select,textarea比.lastfld类具有更高的特异性,因此右边距:2%最终覆盖右边距:0
要修复它,您可以通过合并选择器赋予它更高的特异性:
input[type="text"].lastfld {margin-right: 0;}
另一种方法是添加´!对你的css属性很重要;这将自动赋予它最高的特异性,但我强烈建议你不要走这条路。以我的经验,使用!重要人物在大多数时候都会咬你的背
* {
框大小:边框框;
}
身体{
宽度:100%;
最大宽度:1200px;
保证金:0自动;
填充:0;
背景色:白色;
}
h1{
文本对齐:居中;
颜色:海军蓝;
}
.frm{
/*边框:1px纯绿色*/
宽度:700px;
保证金:0自动;
边界半径:4px;
填充:20px0;
背景色:f2f2f2;/*浅灰色*/
}
.行{
/*边框:1px红色虚线*/
宽度:100%;
利润率:18px0;
}
/*清除列后的浮动*/
.行::之后{
显示:表格;
明确:两者皆有;
内容:;
}
L.上校{
显示:内联块;
/*浮动:左*/
边框:1px点绿色;
宽度:100%;
填充:12px;
}
F.上校{
显示:内联块;
浮动:左;
边框:1px点蓝色;
宽度:100%;
}
输入[类型=文本],
选择
文本区{
显示:内联块;
浮动:左;
边框:1px实心ccc;/*浅灰色*/
右边距:2%;/*默认右边距*/
填充:12px 20px;
}
文本区{
高度:200px;
调整大小:无;
}
输入[type=text].lastfld{右边距:0;}
输入[类型=文本]:焦点,
选择:焦点,
文本区域:焦点{
边框:2个实心555;
}
fname,
名字{
宽度:100%;
}
城市{
宽度:58%;
}
拉链{
宽度:40%;
}
个人资料-3
名字
姓
城市/邮编
就在他心里。这是个问题
输入[type=text]的特异性为0011,而
.lastfld的规格为0010
0011否决0010,因此输入[type=text]将胜出.lastfld
你能做些什么?
使小的特异性更高:将.lastfld更改为输入[type=text]:last child 0010>0021
使大的特定性变小:将输入[type=text]更改为[type=text]0011>0010
使用样式属性:style=margin right:0,其专用性为1000
否决!重要的是,这可以看作是增加了10000的特殊性,但这不是官方术语
我会选择1或2
3可以接受,但不推荐,4完全不推荐。例如,如果您需要对无法更改且使用样式属性的HTML代码进行样式设置,则仅将其作为最后一根稻草
1.
或
2.
您可以在此处计算和比较您的特异性:
好发现!我没注意到这一点。很好的解释。而且绝对正确。我应该想到这一点。下次,我会更小心的。谢谢。这对我来说是个奇怪的案子。如果你问我哪一个选择器具有更高的特异性,我会说。lastfld。据我所知,类选择器比元素选择器更具体,我怀疑添加[type=text]会增加它的特殊性。@SSteven我在这里测试过这个:如果你取消注释注释了注释的css部分,你会看到两个输入都变成蓝色。这意味着.test比input更具体,但input[type=text]比.test更具体。很高兴知道,我会记住的。重要的是一个不好的建议。特异性的存在是有原因的。让你的选择器更具体,否则你会不可避免地想要覆盖它!重要的是,但唯一的方法是用另一个!在更高的特异性上很重要。接下来,你知道,一切都很重要。你完全正确。我试图双向解释。但是重要的应该是最后的选择。