Ответ 1
У вас могут быть как свойства block
, так и inline
для элемента, если вы отображаете его как... inline-block
!
Вот ваш код исправлен и работает:
-
span.bold:
label
s -
a
label
связан с его элементомform
с помощью атрибутовfor
/id
-
bar_top_block
используетсяid
. Должен бытьclass
-
нет необходимости использовать
float: left;
в качествеdisplay: inline-block;
-
поэтому нет необходимости в очищающем элементе
-
Элементы
.bar_top_block
также отображаются в строке, поэтому любое whitespace между ними отображается как пробел. Чтобы этого избежать, я добавил комментарий, который позволяет избежать пробелов, но все же позволяет читать HTML-код. Текст внутри "нет пробелов", поэтому разработчик будет знать, что этот комментарий существует по какой-то причине и его не следует удалять:) -
вы можете удалить
width
наbody
, он здесь только для примера -
вы можете играть с свойством
overflow
в контейнере -
поскольку IE7 и ниже не понимают значение
inline-block
для элементов блока, таких как div, вы должны использоватьdisplay: inline
и дать элементу hasLayout с, например,zoom: 1;
-
лучший способ настроить таргетинг на IE7 и ниже, и только эти браузеры имеют условный комментарий
-
Я добавил поддержку Fx2, но это просто по историческим причинам:)
.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>Qaru 3150509 - Felipe</title>
<style type="text/css">
body {
width: 300px;
}
#bar_top_container {
overflow: auto;
white-space: nowrap;
border: 1px solid red;
}
.bar_top_block {
display: -moz-inline-stack; /* Fx2, if you've to support this ooold browser. You should verify that you can still click in the elements, there is a known bug with Fx2 */
display: inline-block;
padding-left: 10px;
padding-right: 10px;
border-right: 1px solid #4965BB;
}
</style>
<!--[if lte IE 7]><style type="text/css">
.bar_top_block {
display: inline;
zoom: 1;
}
</style> <![endif]-->
</head>
<body>
<form method="post" action="#" id="bar_top_container">
<div class="bar_top_block">
<label for="select1">Obviously I am a label: </label>
<select id="select1"><option value="asdf">asdf</option></select>
</div><!-- no whitespace
--><div class="bar_top_block">
<label for="select2">I'm a label too and I need a for attribute: </label>
<select id="select2"><option value="blah">-- select action --</option></select>
</div>
</form>
</body>
</html>