Jestem nowy w HTML i próbuję nauczyć się korzystać z formularzy.
Największym problemem, jaki mam do tej pory, jest wyrównanie formularzy. Oto przykład mojego obecnego pliku HTML:
<form>
First Name:<input type="text" name="first"><br />
Last Name:<input type="text" name="last"><br />
Email:<input type="text" name="email"><br />
</form>
Problem polega na tym, że pole po `` E-mailu '' różni się znacznie pod względem odstępów w porównaniu z imieniem i nazwiskiem. Jaki jest „właściwy” sposób, aby to zrobić, aby zasadniczo „ustawili się w składzie”?
Próbuję ćwiczyć dobrą formę i składnię ... wiele osób mogłoby to zrobić za pomocą CSS Nie jestem pewien, jak dotąd nauczyłem się tylko podstaw HTML.
Odpowiedzi:
Inny przykład, to używa CSS, po prostu umieściłem formularz w div z klasą kontenera. I określono, że zawarte w nim elementy wejściowe mają stanowić 100% szerokości kontenera i nie mają żadnych elementów po obu stronach.
źródło
Zaakceptowana odpowiedź (ustawienie wyraźnej szerokości w pikselach) utrudnia wprowadzanie zmian i przerywa, gdy użytkownicy używają innego rozmiaru czcionki. Z drugiej strony korzystanie z tabel CSS działa świetnie:
Oto JSFiddle: http://jsfiddle.net/DaS39/1/
A jeśli potrzebujesz etykiet wyrównanych do prawej, po prostu dodaj
text-align: right
do etykiet: http://jsfiddle.net/DaS39/EDYCJA: Jeszcze jedna krótka uwaga: tabele CSS pozwalają również bawić się kolumnami: na przykład, jeśli chcesz, aby pola wejściowe zajmowały jak najwięcej miejsca, możesz dodać do formularza
możesz chcieć dodać
white-space: nowrap
dolabels
w takim przypadku.źródło
Prostym rozwiązaniem dla Ciebie, jeśli jesteś nowy w HTML, jest użycie tabeli, aby wszystko wyrównać.
źródło
O wiele łatwiej jest mi zmienić sposób wyświetlania etykiet na inline-block i ustawić szerokość
źródło
Powinieneś użyć stołu. Ze względu na strukturę logiczną dane są tabelaryczne: dlatego chcesz, aby były wyrównane, ponieważ chcesz pokazać, że etykiety nie są powiązane wyłącznie z ich polami wejściowymi, ale także ze sobą nawzajem w strukturze dwuwymiarowej.
[zastanów się, co byś zrobił, gdybyś zamiast pól wejściowych miał do wyświetlenia wartości łańcuchowe lub liczbowe]
źródło
W tym celu wolę zachować poprawną semantykę HTML i używać prostego CSS, jak to tylko możliwe.
Coś takiego załatwiłoby sprawę:
Jednak jedna wada: może być konieczne wybranie odpowiedniej szerokości etykiety dla każdego formularza, a nie jest to łatwe, jeśli etykiety mogą być dynamiczne (na przykład etykiety I18N).
źródło
Jestem wielkim fanem używania list definicji.
Są łatwe do stylizacji za pomocą CSS i unikają piętna używania tabel do układu.
źródło
div
s (add
ma tylko lewy margines ~ 40 pikseli) i pozwala uniknąć jakichkolwiek pomyłek semantycznych. Poza tym żadne z nich nie ustawia etykiet / wejść w tym samym wierszu.za pomocą css
to daje coś takiego:
źródło
clear
aby uniknąć gromadzenia się formularzy, powiedzmy, mniejszych szerokościTradycyjną metodą jest użycie stołu.
Przykład:
Jednak wielu twierdzi, że tabele ograniczają i wolą CSS. Zaletą korzystania z CSS jest to, że możesz używać różnych elementów. Z div, uporządkowanej i nieuporządkowanej listy, można uzyskać ten sam układ.
W końcu będziesz chciał użyć tego, w czym czujesz się najlepiej.
Wskazówka: rozpoczęcie pracy z tabelami jest łatwe.
źródło
Cóż, jeśli chodzi o podstawy, możesz spróbować wyrównać je w tabeli. Jednak użycie tabeli jest złe dla układu, ponieważ tabela jest przeznaczona dla zawartości.
To, czego możesz użyć, to techniki pływające CSS.
Kod CSS
HTML
Szczegółowy artykuł, który napisałem, można znaleźć w odpowiedzi na pytanie o problem z floatem w IE7: problemy z floatem w IE7
źródło
ul
tagów.)Wiem, że na to już udzielono odpowiedzi, ale znalazłem nowy sposób ich ładnego dopasowania - z dodatkową korzyścią - patrz http://www.gargan.org/en/Web_Development/Form_Layout_with_CSS/
w zasadzie używasz elementu label dookoła wejścia i wyrównaj używając tego:
a następnie za pomocą css po prostu wyrównaj:
źródło
Odpowiedź Clémenta jest zdecydowanie najlepsza. Oto nieco poprawiona odpowiedź, pokazująca różne możliwe wyrównania, w tym przyciski wyrównane do lewej, środkowej i prawej:
Dodałem trochę dopełnienia po prawej stronie wszystkich etykiet (
padding-right:8px
), aby przykład był nieco mniej okropny, ale w prawdziwym projekcie należy to zrobić ostrożniej (dodanie dopełnienia do wszystkich innych elementów również byłoby dobrym pomysłem).źródło
css Kiedyś rozwiązałem ten problem, podobnie jak w Gjaa, ale lepiej wystylizowany
Oto mój kod HTML, używany specjalnie do prostego formularza rejestracyjnego bez kodu php
To bardzo proste i dopiero zaczynam, ale zadziałało całkiem nieźle
źródło
Wstaw znaczniki wejściowe wewnątrz nieuporządkowanej listy. Oto przykład.
Pracował dla mnie!
źródło
UL
po prostu odciąłby treść od marginesu, a niczego nie wyrównywała. Wstawienieinput
sLI
spowodowałoby po prostu dodanie przed nimi punktora (tak, byłyby wyrównane jako lista, a nie względem etykiet). Ponadto „Input2” przylgnęłoby do poprzedniegoinput
elementu, ponieważLI
nie są zamknięte (nie ma</li>
) i nie ma początku<li>
dla tej „etykiety”, więc zostanie potraktowane tak, jak powinno, więc wspólny tekst, połączony z poprzedni element. Na koniec kod zawiera błąd,<ul/>
powinno to być zamknięcie</ul>
.W CSS musisz zadeklarować zarówno etykietę, jak i dane wejściowe jako display: inline-block i podać szerokość zgodnie z własnymi wymaganiami. Mam nadzieję, że to ci pomoże. :)
źródło
Po prostu dodaj
Po prostu umieść wyrównanie w otwierającym tagu.
źródło
form
nie maalign
atrybutu (a nawet gdyby miał, zostałoby wycofane z użycia stylu / CSS). Ponadto tag zamykający jest nieprawidłowy, a powinien</form>
.style="text-align:center"
Wewnątrz można zdefiniowaćform
, co wyrównałoby całą zawartość formularza w centrum, ale nie o to chodziło w pierwotnym pytaniu. To nigdy nie wyrówna etykiet z ich polami wejściowymi (tak, testowałem na Firefoksie 75, dla pewności).