我正在使用Viget的In-Field Labels插件在表单上,但即使标签和输入框具有相同的字体大小、行高、高度、填充以及一切,输入框和标签的文本也无法对齐。输入框的文本比标签文本低一个像素。
HTML:
<div class="fieldgroup">
<label for="name">Name</label>
<input type="text" id="name" name="name">
</div><!--/.fieldgroup-->
CSS(层叠样式表):
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font-family: Arial;
}
.fieldgroup {
position: relative;
}
input[type='text'],
label {
padding: 5px;
font-size: 16px;
line-height: 16px;
margin: 0;
height: 30px;
color: #fff;
display: block;
}
input[type='text'] {
border: none;
background: green;
}
这个插件将标签的
position
设置为absolute
,将top
和left
属性设置为0
。
这里有一个演示例子。我在这里缺失了什么?
toggleClass('notEmpty', !!input.val())
中第二个 ! 的作用是什么? - kmgdevINPUT
太宽,无法适应父元素,导致其下移至新行。当您在INPUT
上设置width: 100%;
时,它是100%+边框宽度+填充宽度。我尝试了一些解决方案(http://jsfiddle.net/thirdender/sX8Hq/1/, http://jsfiddle.net/thirdender/sX8Hq/2/),但后来发现`box-sizing: border-box;受IE8+支持(http://caniuse.com/#search=box-sizing)。如果您不需要支持IE7,则这是最快的解决方案:http://jsfiddle.net/thirdender/sX8Hq/3/此外,请确保
SPAN和
INPUT`元素之间没有空格。 - thirdender!!
基本上将input.val()
转换为布尔值 :-p!input.val()
将返回一个布尔值,但我们需要该值的反义,所以两个感叹号就可以了。!"" === true
,!!"" === false
。 - thirdender