Мне было интересно, почему ответ ниже получил отрицательные голоса первым. Я нашел свой ответ о form-group
вместо класса form-control
. Класс form-control
добавляет множество правил CSS.
Вы должны попытаться контролировать вывод своей формы в первую очередь: https://stackoverflow.com/a/8474452/1596547
Если вы не можете, вы можете попробовать то же самое, что и ниже. Примените те же правила к вашим входам вместо form-control
, например:
input {
display: block;
width: 100%;
height: 34px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.428571429;
color: #555555;
vertical-align: middle;
background-color: #ffffff;
border: 1px solid #cccccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
}
input:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
Меньше
С LESS> 1.4 вы можете использовать :extend()
, см.: https://stackoverflow.com/a/15573240/1596547. Вы можете использовать это для вышеперечисленного, добавив правило к своим меньшим файлам:
input {
&:extend(.form-control all);
}
Также см.: Почему выдает Grunt/Recess ошибку, а Lessc нет при компиляции Bootstrap 3 RC1?
form-group
— это контейнер-div вокруг ваших конструкций input/label, он добавляет только margin-bottom: 15px;
. Вы можете создавать свои формы без него. По этой причине это не требуется.
С помощью css вы можете сделать некоторые обходные пути. Я не думаю, что вы всегда можете избежать Javascript. Я не знаю HTML-структуру ваших форм Django. Я использовал образец формы из http://getbootstrap.com/css/#forms и удалил form-control
контейнеров. Затем я «исправляю» различия. ПРИМЕЧАНИЕ. Я также добавляю тег <br>
перед кнопкой отправки.
См.: http://bootply.com/73370
1) form-group
добавляет margin-bottom: 15px;
, чтобы исправить это, я добавляю это поле к входным тегам:
input {
margin-bottom: 15px; }
Это работает для флажка (и радио). Bootstrap CSS определяет input[type="radio"], input[type="checkbox"] {
line-height: normal;
margin: 4px 0 0;
}
, который имеет приоритет (из-за специфики CSS, см.: http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/ ) CSS для ввода выше.
Таким образом, окончательное правило будет таким:
input, input[type="checkbox"] {
margin-bottom: 15px;
}
2) метка чекбокса тоже отличается. ПРИМЕЧАНИЕ. Флажок не имеет окружающего form-control
, вместо него используется класс checkbox
. Правила css для текста метки: .radio label, .checkbox label {
cursor: pointer;
display: inline;
font-weight: normal;
margin-bottom: 0;
}
В этом случае вы не можете использовать только CSS (метка является родительской для флажка ввода, и в CSS нет родительского селектора, см.: Есть ли родительский селектор CSS?). С помощью jQuery вы можете выбрать метку и добавить класс:
$('input[type="checkbox"]').parent("label").addClass('checkboxlabel');
Теперь добавьте этот класс в свой CSS с теми же правилами, что и .checkbox label
:
.checkboxlabel
{
cursor: pointer;
display: inline;
font-weight: normal;
margin-bottom: 0;
}
Теперь обе формы выглядят в основном одинаково, я думаю:
Также читайте: Django Forms и Bootstrap — классы CSS и ‹divs›
person
Bass Jobsen
schedule
10.08.2013
Form.__init__
Django, делегироватьsuper
, затем повторитьself.fields
, обновив каждыйwidget.attrs.get('class', '')
, чтобы включитьform-control
, если виджет былTextInput
,Select
, илиTextarea
. Если вы сделаете то же самое, убедитесь, что вы добавили классform-control
, а не просто установили его (чтобы вы не удаляли существующие классы, добавленные в виджет формы. - person orokusaki   schedule 06.12.2013django-widget-tweaks
также является приемлемым решением. - person Nathan Osman   schedule 28.02.2014