2012-04-20 87 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