#html #css
#HTML #css
Вопрос:
Если у меня есть <select>
список на моей HTML-странице:
<body>
<div id="side-bar">...</div>
<div id="list">
<select id="mylist" size="10"></select>
</div>
</body>
Как изменить CSS mylist, чтобы он располагался в середине <div id="list">
области? (Как по горизонтали, так и по вертикали)
Ответ №1:
Стиль #list {text-align:center; }
должен сделать это, хотя это будет горизонтально центрировать все в вашем div.
Чтобы центрировать только select
элемент по горизонтали, вы можете использовать #mylist { margin: 0px auto; }
. Ознакомьтесь http://bluerobot.com/web/css/center1.html для получения более подробной информации о том, как это работает.
Для центрирования по вертикали «самым простым» подходом было бы использовать HTML-таблицу со стилем ячеек, который содержит vertical-align:middle;
. Для подхода, не основанного на таблицах, вы можете использовать что-то вроде этогоhttp://www.jakpsatweb.cz/css/css-vertical-center-solution, но этот подход немного халтурный.
Если вы знаете (или можете установить) высоту вашего содержимого div
, то комбинация relative
и absolute
позиционирования вместе с содержащим div
for select
может вам подойти.
<html>
<head>
<style type="text/css">
div
{
border: 1px solid black; /* just so we can see the div */
}
#list
{
height: 400px;
position: relative;
}
#list div
{
position:absolute;
top: 100px;
text-align: center;
width: 100%;
}
</style>
</head>
<body>
<div id="list">
<div>
<select id="mylist" size="10"><option>option 1</option><option>option 2</option></select>
</div>
</div>
</body>
</html>
(Я тестировал это в IE9, FireFox 4 и Chrome 11)
Комментарии:
1. Привет, я изменил свой вопрос, я хотел бы поместить mylist в середину области div id = ‘список’. Как вы видели выше, у меня также есть область боковой панели на странице.
2. @Leem: Selects являются встроенными элементами, так что это все равно должно выполняться.
3. Чтобы предотвратить это, не могли бы вы создать отдельный div внутри #list, например #list_container, который имеет значение «выравнивание текста по левому краю; поле: 0 автоматически;» и заданную ширину. Это сделало бы список центрированным без центрирования текста.
4. ваш метод размещает список только по горизонтали, чтобы быть центром, а не по вертикали.
Ответ №2:
Вы могли бы попробовать #mylist {margin: 0 auto}
. Он центрирует только элемент select. Если вы хотите центрировать все содержимое внутри вашего div, то #list { text-align: center; }
должно получиться.
Редактировать:
Чтобы центрировать тег select как по вертикали, так и по горизонтали, вы можете поступить следующим образом:
<style type="text/css">
#list {
width: 200px;
height: 200px;
background: #fa2;
}
#mylist {
width: 100px;
line-height: 20px;
position: relative;
top: 50%;
left: 50%;
margin: -10px 0 0 -50px;
}
</style>
<div id="list">
<select id="mylist">
<option value="1">test</option>
</select>
</div>
Комментарии:
1. Привет, я попробовал #list { text-align: center; } , но ваш метод помещает список только по горизонтали в центр, а не по вертикали.
Ответ №3:
вы можете использовать вот так..
#mylist{margin-left auto; margin-right:auto;}
Комментарии:
1. Это только центрирует текст внутри списка
Ответ №4:
Я бы, вероятно, выбрал:
#list {
width: 100px;
height: 250px;
background: #ccc;
text-align: center;
display: table-cell;
vertical-align: middle
}
text-align: center
центрировать по горизонтали.display: table-cell; vertical-align: middle
для центрирования по вертикали.
Это будет работать в IE8 и всех современных браузерах.
Смотрите: http://jsfiddle.net/knvV2 /