я экспериментировал с DIV и пытается создать составной элемент управления с помощьюВнутренний ДИВ плавающая к следующей строке
- Этикетка
- Текстовое поле
HTML
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.form-control {
background-color: yellow;
margin: 0;
padding: 0;
}
.form-control[data-layoutOrder=horizontal] div[data-section=title] {
display: inline-block;
background-color: red;
width: 50%;
margin: 0;
padding: 0;
}
.form-control div[data-section=data] {
background-color: green;
display: inline-block;
width: 50%;
margin: 0;
padding: 0;
}
<div class="form-control" data-layoutOrder="horizontal">
<div data-section="title">
<label for="firstName">First Name</label>
</div>
<div data-section="data">
<input type="text" placeholder="First Name" id="firstName">
</div>
</div>
Ожидается, что вывод вышеуказанного кода будет ярлыком, а вход будет смежным, но это не так. Текстовое поле обтекания div фактически плавает до следующей строки, хотя я установил ширину div div и текстового поля div до 50% с помощью CSS.
Я попытался установить отступы, маржинальная т.д., до 0, но ни один из них не работал. Что заставляет текстовое поле div плавать на следующую строку. Когда я изменил одну из ширины div на 49%, оба div были выровнены по одной строке. Я не понял, почему он так себя ведет?
Примечание: Я мог бы получить оба из них рядом друг с другом с использованием свойства float - float:left
для метки div & float:right
свойство для текстового поля div. Но я хочу знать, почему установка 50% -ной ширины не работала без поплавка. Мне действительно нужно использовать float или я что-то упускаю.
РЕДАКТИРОВАТЬ 1: я нашел другое решение, используя атрибут white-space
, как
.form-control {
background-color: yellow;
margin:0;
padding:0;
white-space:nowrap;
}
.form-control div[data-section=data] {
background-color : green;
display: inline-block;
width: 50%;
margin:0;
padding:0;
white-space:normal;
}
EDIT 2: Использование flex
стиля также желаемого эффекта. При поиске больше, я также натолкнулся на достижение такого же эффекта, используя стиль flex
. Обратите внимание, что он не поддерживается в IE 10 и ниже. См. caniuse.
.form-control {
background-color: yellow;
margin: 0;
padding: 0;
display: flex;
display: -webkit-flex;
}
.form-control[data-layoutOrder=horizontal] div[data-section=title] {
display: inline-block;
background-color: red;
width: 50%;
margin: 0;
padding: 0;
flex:1;
}
.form-control div[data-section=data] {
background-color: green;
display: inline-block;
width: 50%;
margin: 0;
padding: 0;
flex:1;
}
Я подозреваю, что это граница. Попробуйте установить границу: 0; и outline: 0; EDIT: Я заметил, что теперь у вас размер коробки, так что этого не должно быть –