Używam Bootstrap dla mojej JSP
strony.
Chcę używać <fieldset>
i <legend>
dla mojej formy. To jest mój kod.
<fieldset class="scheduler-border">
<legend class="scheduler-border">Start Time</legend>
<div class="control-group">
<label class="control-label input-label" for="startTime">Start :</label>
<div class="controls bootstrap-timepicker">
<input type="text" class="datetime" id="startTime" name="startTime" placeholder="Start Time" />
<i class="icon-time"></i>
</div>
</div>
</fieldset>
CSS jest
fieldset.scheduler-border {
border: 1px groove #ddd !important;
padding: 0 1.4em 1.4em 1.4em !important;
margin: 0 0 1.5em 0 !important;
-webkit-box-shadow: 0px 0px 0px 0px #000;
box-shadow: 0px 0px 0px 0px #000;
}
legend.scheduler-border {
font-size: 1.2em !important;
font-weight: bold !important;
text-align: left !important;
}
Otrzymuję takie wyniki
Chcę uzyskać wyniki w następujący sposób
Próbowałem dodać
border:none;
width:100px;
do legend.scheduler-border
w CSS. Otrzymuję oczekiwany wynik. Problem w tym, że chciałbym dodać kolejne <fieldset>
dla innych pól. W tym przypadku problemem jest szerokość tekstu w legendzie, ponieważ jest ona dłuższa niż 100px
.
Więc co mam zrobić, aby uzyskać wyniki takie, jak wspomniałem? (Bez uderzania w tekst legendy)
html
css
forms
twitter-bootstrap
Shiju K Babu
źródło
źródło
Odpowiedzi:
Dzieje się tak, ponieważ Bootstrap domyślnie ustawia szerokość
legend
elementu na 100%. Możesz to naprawić, zmieniając swojelegend.scheduler-border
na:Przykład JSFiddle .
Musisz również upewnić się, że twój niestandardowy arkusz stylów jest dodawany po Bootstrap, aby zapobiec nadpisaniu przez Bootstrap twojego stylu - chociaż twoje style tutaj powinny mieć większą specyficzność.
Możesz również chcieć
margin-bottom:0;
coś do niego dodać , aby zmniejszyć odstęp między legendą a separatorem.źródło
margin-bottom: 20px;
nalegend
, co spowodowało wypchnięcie go powyżej granicy pola, zamiast umieszczać go na linii. Ustawieniemargin-bottom: 0;
niestandardowegolegend.scheduler-border
naprawiono tak łatwo.W bootstrap 4 znacznie łatwiej jest mieć ramkę na zestawie pól, która łączy się z legendą. Nie potrzebujesz do tego niestandardowego css, można to zrobić w ten sposób:
który wygląda tak:
źródło
Miałem ten problem i rozwiązałem w ten sposób:
źródło
Miałem inne podejście, użyłem panelu bootstrap, aby pokazać, że jest trochę bardziej bogaty. Tylko po to, aby komuś pomóc i poprawić odpowiedź.
To da poniższy wygląd.
Uwaga: musimy zmienić style, aby użyć innego rozmiaru nagłówka.
źródło
Chciałem tylko w skrócie podsumować wszystkie prawidłowe odpowiedzi powyżej. Ponieważ musiałem spędzić dużo czasu, aby dowiedzieć się, która odpowiedź rozwiązuje problem i co dzieje się za kulisami.
Wydaje się, że istnieją dwa problemy związane z ustawieniem pola z ładowaniem początkowym:
bootstrap
Wyznacza szerokość dolegend
100%. Dlatego nakłada się na górną granicę plikufieldset
.bottom border
dlalegend
.Więc wszystko, co musimy naprawić, to ustawić szerokość legendy na automatyczną w następujący sposób:
źródło