Не могу понять, почему элемент div в котором находится стрелочка при ее отсутствии рвет верстку
Пример без стрелочки
.insert {
margin: 4px;
padding: 7px 10px 6px;
border: 0 none;
background: #ebebeb none repeat scroll 0 0;
}
.filed_input {
display: inline-block;
background: #ebebeb none repeat scroll 0 0;
height: 34px;
}
.arrow_label {
width: 30px;
height: 34px;
}
.arrow_label:before {}
.arrow_label.on:before {
content: '▲';
}
.container_field_input {
overflow: hidden;
}
.filed_input div {
display: inline-block;
}
<div class="filed_input">
<div class="input">
<input type="text" class="insert" onclick="toggleDrop(ge('_arraw_label'));" />
</div>
<div class="arrow_label" id="_arraw_label"></div>
</div>
<div class="filed_list"></div>
А если задаю стрелочку в псевдо элементе ::before то все норм
Пример со стрелочкой
.insert {
margin: 4px;
padding: 7px 10px 6px;
border: 0 none;
background: #ebebeb none repeat scroll 0 0;
}
.filed_input {
display: inline-block;
background: #ebebeb none repeat scroll 0 0;
height: 34px;
}
.arrow_label {
width: 30px;
height: 34px;
}
.arrow_label:before {
content: '▼';
}
.arrow_label.on:before {
content: '▲';
}
.container_field_input {
overflow: hidden;
}
.filed_input div {
display: inline-block;
}
<div class="filed_input">
<div class="input">
<input type="text" class="insert" onclick="toggleDrop(ge('_arraw_label'));" />
</div>
<div class="arrow_label" id="_arraw_label"></div>
</div>
<div class="filed_list"></div>
Посмотрел через firebug там почему то у arrow_label отступ, хотя я его не задавал.
Все потому, что у вас в блоке filed_input получается строчных 2 элемента, которые по умолчанию вертикально выровнены по baseline. Когда вы убираете значение content, т.е. стрелку из элемента ::before, высота этого элемента становится равной нулю, уровень baseline смешается и вы видите то, что видите.
Что делать:
.arrow_label:before {
content: "";
vertical-align: top;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей