2012-04-20 57 views
15

我有以下布局用于与搜索框:输入文本自动宽度填充100%的浮动其它元素

<div id="emulating_variable_width"> 
    <form id="srxForm" method="post"> 
    <div id="qsrxSearchbar">    
     <div id="scope"> Person Name </div> 
     <input type="text" id="theq" title="Search"> 
     <button id="btnSearch" type="button">Search</button> 
     </div> 
    </form>  
</div>​ 

(其非常简化用于示出的目的)

  • 的在标题'范围'是一个长度可变的文本

我想要的是让输入文本元素填充所有可用空间(即黄色空间),同时保留右侧的搜索按钮。

Full example with the CSS is in a fiddle

这将是完成一个解决方案在IE7 +,FF,Safari浏览器等工作的最简单的方法...?

谢谢!

+0

JQuery的是不是一种选择? – mattytommo 2012-04-20 11:03:44

+0

我不希望在这里使用jQuery,但如果没有其他选项...是啊 – jmserra 2012-04-20 11:06:32

+2

使用此:http://stackoverflow.com/a/7190310/405015 – thirtydot 2012-04-20 11:13:11

回答

31

喜欢这个?

DEMO:http://jsfiddle.net/v7YTT/19/

HTML:

<div id="emulating_variable_width"> 
    <form id="srxForm" method="post"> 
     <div id="qsrxSearchbar"> 
      <button id="btnSearch">Search</button>    
      <label id="scope"> Person Name </label> 
      <span><input type="text" id="theq" title="Search" /></span> 
     </div> 
    </form> 
</div>​ 

CSS:

#qsrxSearchbar 
{ 
    width: 500px; 
    height: 100px; 
    overflow: hidden; 
    background-color: yellow; 
} 

#qsrxSearchbar input 
{ 
    width: 100% 
} 

#qsrxSearchbar label 
{ 
    float: left 
} 

#qsrxSearchbar span 
{ 
    display: block; 
    overflow: hidden; 
    padding: 0 5px 
} 

#qsrxSearchbar button 
{ 
    float: right 
} 

#qsrxSearchbar input, .formLine button 
{ 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing: border-box 
} 

+0

Wohoho!看起来像工作!但我不确定最后一种风格的目的是什么,这个例子的boz-sizing是否有必要?坦克很多 – jmserra 2012-04-20 14:15:14

+0

没有必要,它更像是一种“即时”使用方式,它不会工作。确保所有浏览器中的所有内容都可以兼容:)。 – mattytommo 2012-04-20 14:43:56

+0

如果你打算像这样“转贴”,你至少可以得到我的回答。ಠ_ಠ – thirtydot 2012-04-20 14:59:49

1

嘿,你可以在输入字段使用焦点属性,这样

的CSS

#emulating_variable_width{ 
    width:500px; 

    height:100px; 
    background-color:yellow; 
} 
input { 
    width:auto; 
    /*width:100%;*/ 
    float:left; 
    width:100px; 
    font-size: 17px; 
} 
#scope{float:left;} 
button{float:left;} 

input:focus{ 
width:200px; 
} 

HTML

<div id="emulating_variable_width"> 
    <form id="srxForm" method="post"> 
     <div id="qsrxSearchbar">    
      <div id="scope"> Person Name </div> 
      <input type="text" id="theq" title="Search"> 
      <button id="btnSearch" type="button">Search</button> 
      </div> 
    </form>  
</div> 

现场演示http://jsfiddle.net/rohitazad/v7YTT/1/

+1

嗯,这不是我真正需要的,我想要使输入字段填充所有可用的剩余黄色宽度,即使它没有焦点 – jmserra 2012-04-20 11:09:01

1

您需要这样的产品:

#emulating_variable_width{ 
    width:500px; 

    height:100px; 
    background-color:yellow; 
} 

input { 
    width:320px; 
    /*width:100%;*/ 
    float:left; 
    font-size: 17px; 
} 
#scope{float:left;} 
button{float:left;} 
+2

关键是要做一些灵活的事情,固定宽度将不起作用,因为空间不会总是500px,并且标签可以动态变化 – jmserra 2012-04-20 14:32:48