【问题标题】:How to make text input w/button autosize within responsive div如何在响应式 div 中使用按钮自动调整文本输入
【发布时间】:2014-12-21 05:36:48
【问题描述】:

我正在使用一个已经响应良好且运行良好的网站。我正在尝试在右侧添加一个带有按钮的文本输入字段,并希望文本输入自动调整大小并且按钮保持固定大小。

一般的 HTML/CSS 是:

<style>
  #container { width: 100%; }
  #text { float: left; }
  #btn { float: left; overflow: hidden; }
</style>

<div id="container">
  <div id="text"><input type="text" /></div>
  <div id="btn"><input type="submit" /></div>
</div>

视觉效果:

+---------------- container (autosize) --------------+
| +------------------------------------------------+ |
| |        text (autosize)        |       btn      | |
| +------------------------------------------------+ |
+----------------------------------------------------+

期望的行为:

容器 div 将根据显示宽度自动调整大小 - 这已经得到处理。 btn div 的大小将精确到按钮的宽度——这也已经完成了。

我希望文本输入 div 自动调整大小,文本输入为文本 div 的 100%。

这可能吗?我想我已经提供了足够的信息,但很乐意提供所需的任何其他细节。我已经为此工作了几个小时,在这一点上感到很沮丧。

编辑

我可能没有足够清楚地解释所需的行为。

#container 宽度根据显示宽度而变化。这已经完美地发生了。它可以是 960px 宽度一直到 320px 宽度。

#btn 不是固定宽度。它将一直定位到#container 的右边距。

#text 的宽度需要自动调整以占据#container 的左边距和#btn 的右边距之间的整个宽度。

【问题讨论】:

  • 按钮的宽度是固定的还是未知的?
  • 试试这个jsfiddle.net/5Hrsc
  • salman:按钮宽度未知。
  • Rohit Azad:文本字段需要自动调整为 #text div 的 100%。我尝试添加#text { width: 100%; },但没有这样做。

标签: css css-float


【解决方案1】:

我会为此使用旧学校的桌子。以下内容应为您提供一个起点:

a) 添加一个作为表格行的包装 div:

<div id="container">
    <div id="temp">
        <div id="text"><input type="text" /></div>
        <div id="btn"><input type="submit" /></div>
    </div>
</div>

b) 将 div 设置为显示为 tabletable-rowtable-cell

#container {
    display: table;
    width: 100%;
}
#temp {
    display: table-row;
}
#text, #btn {
    display: table-cell;
}

c) 设置第一个单元格的宽度为100%;这使得单元格尽可能宽,同时保持其他单元格尽可能窄:

#text {
    width: 100%;
}

d) 也将输入框设置为100%

#text input {
    width: 100%;
}

e) 改进。

Demo with ids replaced with classes

【讨论】:

    【解决方案2】:

    试试这个

    css

    <style>
      #container { width: 100%; }
      #text { float: left; width:70%;}
      #btn { float: left; overflow: hidden; width:30%; }
      .res
      {
          width:100%;
    
      }
    </style>
    

    html代码

    <div id="container">
    
        <div id="text"><input type="text" class="res"/></div>
        <div id="btn"><input type="submit" class="res" /></div>
    
    </div>
    

    【讨论】:

    • 在移动设备(较小的显示屏)上,该按钮将无法正确显示。我不认为我可以在按钮上指定宽度。
    • #container 宽度达到 960 像素。在这种情况下,#text 和 #btn 之间有 560px 的间隙。我真的不认为我可以设置按钮的宽度,并且#text 需要自动调整为#container 宽度减去#btn 宽度之间的差异。 #text 和 #btn 之间应该没有间隙。
    • 您不希望#text 和#btn a 之间有间隙吗?
    • 对。该按钮浮动到右侧。只有#text 宽度应该改变。
    • Bopathi,我真的很感谢你的勤奋。谢谢你。只是按钮宽度不能改变,否则它将与网站的其余按钮不匹配。如果页面显示宽度为 960 像素并且 #btn 设置为 30%,则按钮将接近 300 像素宽,这看起来很可怕。同样,如果显示宽度下降到 320px 并且#btn 为 30%,则它不会足够宽。我试过弄乱#btn 的宽度,但它需要单独放置,否则看起来不太好。
    【解决方案3】:

    习惯了

    HTML

    <div id="container">
       <div id="btn"><input type="submit" /></div>
        <div id="text"><input type="text" /></div>
    
    </div>
    

    CSS

    #container {  }
      #btn { float: right; }
    #text{
    
        background:green;
        margin-right:100px;
    }
    

    Demo

    【讨论】:

    • 文本输入不会自动调整大小以填充#text div
    • 在你的小提琴中,文本输入下降到按钮下方,形成 2 个水平行,而不是全部在一个水平行上。
    • 另外,#text {margin-right: 100px;} 假定按钮的固定宽度为 100 像素。按钮没有固定宽度。我需要按钮浮动,其右边距一直到#container 的右边,左边距一直到#text 的右边。大声笑,希望我说的是对的!
    猜你喜欢
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2020-01-02
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    相关资源
    最近更新 更多