我有一个简单的问题-文本输入元素指定了2个CSS属性,请参阅下面的代码:
<input type="text" style="resize:horizontal; width:200px" />
当只指定resize
属性时,input
可以调整为任意宽度。但是,如果指定了width
,则input
元素的大小只能调整为宽于200px
,而不能更短。
有没有一种方法可以让我指定默认宽度,同时让输入元素可以调整到任何宽度?比width
属性设置的宽或短?
感谢您的任何帮助提前!
编辑-澄清:我需要输入元素可自由调整大小-任何宽度-超过200px
和小于200px
编辑2 -如果可能的话,我最好是寻找纯CSS解决方案。
4条答案
按热度按时间4ngedf3f1#
这是非常接近可行的。您需要将
size="1"
设置为<input>
上的一个属性,以将大小调整为非常小。调整大小由input:active
控制,它用width: auto;
覆盖基类。input:focus
防止它在您按Tab键键入时收缩。潜在问题:
input:focus
强制将<input>
调整为特定的min-size
,该min-size
可能大于调整后的大小。您可以min-width: 100%
将其作为一个“特性”而不是一个问题,从而为用户提供更多的输入空间。如果<input>
有焦点,调整大小仍然受到min-width
的限制,但调整大小通常是在焦点后完成的(而且,主要用于使东西更大)。演示:http://jsfiddle.net/ThinkingStiff/jNnCW/
HTML(根据您的要求内嵌样式):
xam8gpfp2#
Here is an example使用div和flexbox & contenteditable=true代替input。只有CSS + HTML。我发现如果不需要标签“form”,它会很有用。
wswtfjt73#
我在网上读到的所有东西(见下文)都表明,
resize
属性只适用于没有设置overflow: visible
的块级元素和textarea
元素。从技术上讲,它甚至不适用于input
元素(两者都不适用,即使设置为display: block
,我也无法让resize
被Firefox识别)。链接:https://developer.mozilla.org/en/CSS/resize和http://www.css3.info/preview/resize/以及http://www.w3.org/TR/css3-ui/#resize
hgqdbh6s4#
让
input
自由调整大小的简单方法是将其设置为具有width: 100%
,然后将其放置在具有min-width
的inline-block
容器中(min-width
设置input
的默认宽度)。调整容器大小以调整input
的大小。参见:http://jsfiddle.net/Wexcode/TvZAr/