2010-11-30 3 views
4

Ich möchte ein Symbol auf der linken Seite und einen Eingabetext auf der rechten Seite setzen, der den gesamten verbleibenden Platz einnimmt.Wie kann ich ein Symbol und einen Eingabetext auf dieselbe Zeile setzen?

---------------------------------------------------- 
| [ico] ---------------------------------------- | 
|  | input type="text"     | | 
|  ---------------------------------------- | 
---------------------------------------------------- 

Wenn ich beide mit display: inline-block eingestellt und setzen die Breite des Eingang 100% es die Linie springt, weil 100% ist nicht die space - icosize Berücksichtigung ...

Ich möchte erweitern die Eingabe in den verbleibenden verfügbaren Platz (Ich interessiere mich nicht für die vertikale Ausrichtung). Gibt es eine Möglichkeit, dieses Verhalten zu erreichen, ohne Tabellen zu verwenden?

An example of the problem on jsFiddle.

Antwort

-1

Versuchen Sie align = "absmiddle" im Symbol zu benutzen?

<img src="img.jpg" align="absmiddle"> 
+0

Was die vertikale Ausrichtung des Symbols zu tun hat mit der Eingabe freien Platz einnimmt? – BrunoLM

0

Ich denke, die Antwort vertical-align: middle ist aber sehen Understanding vertical-align, or "How (Not) To Vertically Center Content"

+1

Das Problem AFAICT ist nicht vertikale Zentrierung; es bringt die beiden Elemente dazu, horizontal nebeneinander zu sitzen, während das zweite Element erweitert wird, um den verfügbaren Platz zu füllen. –

+0

mmm, wenn das, was Sie wollen, ist für die ico in der gleichen Zeile wie die Eingabe, aber für die Eingabe, um den Rest des Raumes zu füllen dh so breit wie möglich –

+0

Was die vertikale Ausrichtung hat mit der Eingabe besetzt Freiraum? – BrunoLM

0

display: table-cell Versuchen.

+0

Wo soll ich es hinstellen? Funktioniert es auf IE7 +? – BrunoLM

+0

Sie legen es an der gleichen Stelle, an der Sie den 'display: inline-block' hatten. Sie sind auf sich allein gestellt, um verschiedene Browser zu testen, aber es ist definitiv Standard-CSS. –

+0

Hmm, ich spielte mit jsFiddle herum und es scheint nicht so zu funktionieren, wie ich es erwartet hatte. :( –

2

float:left; für das Symbol. See, http://jsfiddle.net/sUYBS/11/

+0

Warum die Abstimmung unten? Der Schwimmer löst tatsächlich Ihr Problem, nicht wahr? –

+0

+1 für die Einfachheit. Plus das ist viel kompatibler als die angenommene Antwort. –

+0

Außer dass es nicht funktioniert. – BrunoLM

2

Try this ...

<div style="display: table;"> 
<div style="display: table-row; width:100%;"> 
    <div style="display: table-cell;"> 
    <img src="img.png" width="16" height="11" alt="img"/> 
    </div> 
    <div style="display: table-cell; width:100%;"> 
    <input type="text" style="width:100%;"/> 
    </div> 
</div> 
</div> 
+0

Doesn ' Ich arbeite auf IE7, aber es funktioniert auf IE8 + und auf Browsern. Das ist, was ich gesucht habe. Danke. – BrunoLM

+0

Wenn Sie eine Anzeige verwenden: Tabelle, eine Anzeige: Tabellenzeile und eine Anzeige: Tabellenzelle, warum in der Hölle nicht ein

? Ist es nach 2000 eine Sünde, Tische zu benutzen? –

+0

@Augusto: haha, ich dachte, es wäre möglich, es ohne Tische zu schaffen. Aber es scheint, dass es nicht möglich ist. Ich werde Tische benutzen. Ich war nur neugierig, ob es einen einfacheren Weg dazu gibt. – BrunoLM

Verwandte Themen