Css 宽度:自动用于<;输入>;领域
新手CSS问题。我认为Css 宽度:自动用于<;输入>;领域,css,Css,新手CSS问题。我认为width:auto对于display:block元素意味着“填充可用空间”。但是对于元素,情况似乎并非如此。例如: 一个的宽度是从它的size属性生成的。默认的大小是驱动自动宽度的因素 您可以尝试width:100%,如下面的示例所示 不填充宽度: <form action='' method='post' style='width:200px;background:khaki'> <input style='width:auto' />
width:auto
对于display:block
元素意味着“填充可用空间”。但是对于
元素,情况似乎并非如此。例如:
一个
的宽度是从它的size
属性生成的。默认的大小
是驱动自动宽度的因素
您可以尝试width:100%
,如下面的示例所示
不填充宽度:
<form action='' method='post' style='width:200px;background:khaki'>
<input style='width:auto' />
</form>
填充宽度:
<form action='' method='post' style='width:200px;background:khaki'>
<input style='width:100%' />
</form>
尺寸越小,宽度越小:
<form action='' method='post' style='width:200px;background:khaki'>
<input size='5' />
</form>
更新
这是几分钟后我能做的最好的。在FF、Chrome和Safari中,它是1px,而在IE中则是完美的(问题是#^&*IE应用边框的方式与其他人不同,因此它并不一致。)
如另一个答案中所述,由于输入的“大小”属性生成的宽度不能设置为“自动”或任何类似属性,因此“宽度:自动”不起作用
有一些变通方法可以使它与长方体模型配合得很好,但据我所知没有什么了不起的
首先,您可以使用百分比设置字段中的填充,确保宽度加起来为100%,例如:
input {
width: 98%;
padding: 1%;
}
您可以尝试的另一种方法是使用绝对定位,将“左”和“右”设置为0。使用此标记:
<fieldset>
<input type="text" />
</fieldset>
此绝对定位将导致输入水平填充父字段集,而不考虑输入的填充或边距。然而,这样做的一个巨大缺点是,您现在必须处理字段集的高度,除非您设置它,否则字段集的高度将为0。如果您的输入都是相同的高度,这将对您有效,只需将字段集的高度设置为输入的高度
除此之外,还有一些JS解决方案,但我不喜欢在JS中应用基本样式。我能想到的唯一选择是使用
宽度:100%
。如果您希望在输入字段上也有一个填充,而不仅仅是在其周围放置一个容器标签
,请将格式移到该标签,同时也指定标签的填充。输入字段是刚性的。“宽度:auto的确切含义有定义吗?CSS
规范对我来说似乎很模糊,但可能我错过了相关部分。”
实际上,没有人回答原海报问题的上述部分
答案如下:
只要“宽度”的值为“自动”,元素就可以具有水平方向
边距、填充和边框不超过其容器的宽度
另一方面,如果指定宽度:100%,则元素的总宽度为
宽度为其包含块的100%加上任何水平边距,
填充和边框。。。这可能是你想要的,但很可能不是
为了形象化差异,我举了一个例子:
这可能不是您想要的,但我的解决方法是将autowidth样式应用于包装器div,然后将您的输入设置为100%。答案1-“response”给出了一个很好的答案/链接。简而言之,“auto”是默认值,因此它就像删除元素宽度中的任何更改一样
答案2-改用
宽度:100%
。它将填充父容器的100%,在本例中为“表单”。因为输入的宽度
由它的大小
属性控制,这就是我根据其内容初始化输入的方式:
<input type="text" class="form-list-item-name" [size]="myInput.value.length" #myInput>
谢谢。宽度:100%不是一回事。如果有边距或边框,则会溢出父框。您可以显式设置这些边距或边框以调整所需方式,例如border:2px inset 35; eee;边距:-2px
。虽然我自己还没有测试过,但还是有一些类似的东西。谢谢史蒂夫。您还应该看看还有哪些有趣的想法。Epic解决方案通过输入字段上的css实现宽度一致,+1您可以使用将输入框大小属性设置为border box来阻止边框与容器重叠。可能重复@Phrogz是的,这是重复的。我找了,但没找到。Thx.很好的答案/链接,我建议用第三个例子“框大小:边框框”…这不是输入,因为自动是默认值,我不知道它有什么用处,尽管这个#角度特定的答案不是对OP问题的有效答案(我也没有投票),我来到这个主题就是为了找到这个特别的想法。VueJs也非常适合:
fieldset {
position: relative;
}
input {
position: absolute;
left: 0;
right: 0;
}
<input type="text" class="form-list-item-name" [size]="myInput.value.length" #myInput>