2009-07-09 9 views
78

To prawdopodobnie podstawowe pytanie html/css ...Jak wyświetlić HTML <FORM> jako element śródliniowy?

Mam prosty formularz jednoprzyciskowy, który chciałbym wyświetlić w tekście wewnątrz akapitu.

<p>Read this sentence 
    <form style='display:inline;'> 
    <input style='display:inline;' 
      type='submit' 
      value='or push this button'/> 
    </form>. 
</p> 

Mimo że formularz ma atrybut style = display: inline, otrzymam linebreak przed formularzem. Czy istnieje sposób, aby się go pozbyć?

Czy elementy formularzy mogą pojawić się wewnątrz <p>?

+3

Dziękuję wszystkim za odpowiedzi i komentarze! – Evgeny

Odpowiedz

69

Przesuń znacznik formularz obrzeżach akapitu i ustawić marginesy/wyściółka do zera:

<form style="margin: 0; padding: 0;"> 
    <p> 
    Read this sentence 
    <input style="display: inline;" type="submit" value="or push this button" /> 
    </p> 
</form> 
+0

Twoja odpowiedź uratowała mi dzień. – DrinkJavaCodeJava

+2

Margines i dopełnienie w moim formularzu nie działa dla mnie, musiałem użyć wyświetlacza: wbudowany zamiast, a następnie margines/dopełnienie nie było konieczne. – angularsen

+2

display: inline zrobił to również dla mnie. Dlaczego nie dodać tego do stylu formularza w odpowiedzi. – Praesagus

50

<form> nie może wejść do wnętrza <p>, nie. Przeglądarka będzie nagle zamknąć elementu <p> gdy trafi otwarcie <form> tag jak to próbuje obsłużyć co uzna to unclosed ustęp elementem:

<p>Read this sentence 
</p><form style='display:inline;'> 
6

Według HTML spec zarówno <form> i <p> są elementy blokowe i im nie można zagnieżdżać. Może zastąpienie <p> z <span> będzie działać dla Ciebie?

EDYCJA: EDYT. Byłem szybki w swoim brzmieniu. Element <p> nie zezwala na zawartość bloku w obrębie - jak określono przez HTML spec for paragraphs.

+2

Niektóre elementy bloków mogą być zagnieżdżane (jak elementy div), ale niektóre są specjalne i nie powinny być zagnieżdżane. Znacznik akapitu może na przykład zawierać tylko elementy śródliniowe. –

18

Można spróbować ten kod:

<form action="#" method="get" id="login" style=" display:inline!important;"> 

    <label for='User'>User:</label> 
    <input type='text' name='User' id='User'> 

    <label for='password'>Password:</label><input type='password' name='password' id='password'> 
    <input type="submit" name="log" id="log" class="botton" value="Login" /> 

</form> 

Ważne jest, aby pamiętać, jest własnością styl css w tagu <form>.

display:inline!important;

+2

to jedyna odpowiedź, która działa! – Aris

0

Można osiągnąć to, co chcesz, jak sądzę, po prostu przez włączenie przycisku przedstawienia w akapicie:

 <pre> 
    <p>Read this sentence <input type='submit' value='or push this button'/></p> 
    </pre> 
0

Wystarczy użyć stylu float: left w ten sposób:

<p style="float: left"> Lorem Ipsum </p> 
<form style="float: left"> 
    <input type='submit'/> 
</form> 
<p style="float: left"> Lorem Ipsum </p> 
+3

Lepsze jest poprawianie znaczników, jak sugerowano w innych odpowiedziach niż triki typu "float". –

Powiązane problemy