2012-04-20 10 views
15

ho il seguente layout per una casella di ricerca con:larghezza testo automatico di ingresso imbottitura 100% con altri elementi galleggianti

<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>​ 

(la sua molto semplificata per scopi che mostrano)

  • Il titolo in lo "scope" è un testo che può essere di lunghezza variabile

Quello che mi piace è avere l'elemento di testo di input per riempire tutto lo spazio disponibile (cioè lo spazio giallo), mantenendo il pulsante di ricerca a destra.

Full example with the CSS is in a fiddle

Quale sarebbe il modo più semplice per ottenere una soluzione di lavoro in IE7 +, FF, Safari, ecc ...?

Grazie!

+0

Non è JQuery un'opzione? – mattytommo

+0

Preferirei non usare jQuery qui, anche se non ci sono altre opzioni ... sì – jmserra

+2

Usa questo: http://stackoverflow.com/a/7190310/405015 – thirtydot

risposta

31

Ti piace questo?

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! sembra che funzioni! ma non sono sicuro di quale sia lo scopo dell'ultimo stile, il dimensionamento del boz per questo esempio, è necessario? Serbatoi molto – jmserra

+0

Non proprio necessario, era più di un uso "just-in-case", funzionerà senza. Assicurati che tutto si affianchi a tutti i browser :). – mattytommo

+0

Potresti avere almeno alzato la mia risposta se hai intenzione di "ripubblicarlo" in questo modo .. ಠ_ಠ – thirtydot

1

hey è possibile utilizzare le proprietà di messa a fuoco nel campo di input come come questo

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> 

Demo online http://jsfiddle.net/rohitazad/v7YTT/1/

+1

Hmm, questo non è quello di cui ho davvero bisogno, io vorrebbe che il campo di input riempia tutta la larghezza gialla rimanente disponibile, anche se non ha il fuoco – jmserra

1

Hai bisogno di qualcosa del genere:

#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

Il punto era di fare qualcosa di flessibile, una larghezza fissa non funzionerà in quanto lo spazio non sarà sempre di 500px e l'etichetta può cambiare dinamicamente – jmserra

Problemi correlati