web-dev-qa-db-fra.com

Texte d'entrée Largeur automatique Remplir 100% avec d'autres éléments flottants

j'ai la mise en page suivante pour une boîte de recherche avec:

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

(c'est très simplifié pour montrer des objectifs)

  • Le titre dans la "portée" est un texte qui peut être variable de longueur

Ce que je voudrais, c'est avoir l'élément de texte d'entrée pour remplir tous les espaces disponibles (c'est-à-dire l'espace jaune) tout en conservant le bouton de recherche à droite.

exemple complet avec le CSS est dans un violon

Ce qui serait le moyen le plus simple d'accomplir une solution travaillant dans IE7 +, FF, Safari, etc ...?

Merci!

16
jmserra

Comme ça?

Démo: 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
}

En tant que

33
mattytommo

Vous avez besoin de quelque chose comme ça:

#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;}
1
Hardik Mishra

hé, vous pouvez utiliser les propriétés de mise au point dans le champ de saisie comme celle-ci

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>

Démo en direct http://jsfiddle.net/rohitazad/v7ytt/1/

1
Rohit Azad