X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Как отцентровать блок с неопределенной шириной
toorr2p
toorr2p
Topic Starter сообщение 11.12.2010, 0:25; Ответить: toorr2p
Сообщение #1


Всем привет!
Подскажите кто знает как решить такую задачу:

Имеется блок с фиксированной шириной 1004px, в котором блок с меню, задача центровать блок меню в родителе, тоесть ширина меню может увеличиватся или уменьшатся в зависимости от добавления или удаления пунктов меню.
Из-за этого для блока с меню я не могу сделать вот так margin:0 auto; как выйти из ситуации?
Спасибо!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_* Гость_0_*
сообщение 11.12.2010, 1:51; Ответить: Гость_0_*
Сообщение #2


Я иногда пользуюсь пещерным методом:
<center></center>

:)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
toorr2p
toorr2p
Topic Starter сообщение 11.12.2010, 2:09; Ответить: toorr2p
Сообщение #3


Да но у UL menu стоит float:left; иначе оно растягивается на всю ширину.

<div id="cont">
<div id="menu">
<div class="moduletable">
<ul class="menu">
<li></li>
...
</ul>
</div>
</div>
</div>


#cont {
    background: url("../images/grad.png") no-repeat scroll center bottom transparent;
    margin: 0 auto;
    width: 1004px;
}
#menu {
    background: url("../images/menu_back.png") no-repeat scroll center bottom transparent;
    height: 56px;
    margin: 335px auto 0;
    overflow: hidden;
}
#menu ul {
    background: url("../images/menu-ul.png") no-repeat scroll right bottom transparent;
    display: block;
    height: 56px;
}


Неужели только Javascript
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
panika
panika
сообщение 11.12.2010, 18:33; Ответить: panika
Сообщение #4


в чем собственно проблема и что что у ul стоит float:left он же позиционируеться относительно родителя коим являеться <div class="moduletable">

#menu ul {
    background: url("../images/menu-ul.png") no-repeat scroll right bottom transparent;
    display: block;
    height: 56px;
}


Это вообще ересь, ul и есть #menu, тогда уж так ul#menu

так как moduletable div он по умолчанию принимает 100% ширины родителя, поэтому если ul обтекается справа или слева нужно блочный элемент в котором он находиться уменьшить на ширину списка меню и не забывать кроссбразерность.

.moduletable {
    display:-moz-inline-stack;
    display:inline-block;
    zoom:1;
    *display:inline;
}


*display:inline; - почти не пользовался таким хаком для internet explorer - поэтому гарантии на счет него не даю

Если не сработает то можно другим способом
.moduletable {
    display:-moz-inline-stack;
    display:inline-block;
}

/*for internet explorer 6 \*/
* html .moduletable {
    zoom:1;
    display:inline;
}
/*\*/
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
toorr2p
toorr2p
Topic Starter сообщение 11.12.2010, 18:52; Ответить: toorr2p
Сообщение #5


Это вообще ересь, ul и есть #menu, тогда уж так ul#menu

Здесь вы не правы, посмотрите листинг HTML и внимательно посмотрите атрибуты у UL нет id, там класс и это разные вещи.

Сделал с вашим CSS получилось вот так:
#menu {
    background: url("../images/menu_back.png") no-repeat scroll center bottom transparent;
    height: 56px;
    margin: 335px auto 0;
    overflow: hidden;
}
#menu .moduletable{
    display:block;
    background:url(../images/menu-moduletable.png) left bottom no-repeat;
    height: 56px;
    
    display:-moz-inline-stack;
    display:inline-block;
    zoom:1;
    *display:inline;
}
#menu ul {
    background: url("../images/menu-ul.png") no-repeat scroll right bottom transparent;
    display: block;
    float: left;
    height: 56px;
}

Но блок так и не отцентровался.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
panika
panika
сообщение 11.12.2010, 19:15; Ответить: panika
Сообщение #6


А да, ошибся. Смотрел просто в спешке показалось id/

Кроме того нужно же центрировать .moduletable
#menu .moduletable{
    background:url(../images/menu-moduletable.png) left bottom no-repeat;
    height: 56px;
    margin:0px auto;
    display:-moz-inline-stack;
    display:inline-block;
    zoom:1;
    *display:inline;
}

добавил отступы слева и справа автоматически должно помочь.
можно еще добавить для обьекта #menu text-align:center; это эквивалентно align='center'
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
toorr2p
toorr2p
Topic Starter сообщение 11.12.2010, 23:29; Ответить: toorr2p
Сообщение #7


Все равно не выравниват даже так:

#menu {
    height: 56px;
    background: url(../images/menu_back.png) no-repeat bottom center;
    margin:335px auto 0 auto;
    overflow:hidden;
    width:100%;
}
#menu .moduletable{
    display:block;
    background:url(../images/menu-moduletable.png) left bottom no-repeat;
    height: 56px;
    margin:0 auto !important;
    float:none !important;
    clear:both !important;
    
    display:-moz-inline-stack;
    display:inline-block;
    zoom:1;
    *display:inline;
}
#menu ul{
    display:block;
    background:url(../images/menu-ul.png) right bottom no-repeat;
    height:56px;
    float:left;
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.12.2010, 23:41; Ответить: ZiTosS
Сообщение #8


Вячеслав, сделай скрин с подписями или дай тестовую страницу, так будем долго гадать на кофейной гуще :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
panika
panika
сообщение 11.12.2010, 23:42; Ответить: panika
Сообщение #9


#menu {
    height: 56px;
    background: url(../images/menu_back.png) no-repeat bottom center;
    margin:335px auto 0 auto;
    overflow:hidden;
    width:100%;
    text-align:center;
}
#menu .moduletable{
    display:block;
    background:url(../images/menu-moduletable.png) left bottom no-repeat;
    height: 56px;
    margin:0 auto !important;
    float:none !important;
    clear:both !important;
    
    display:-moz-inline-stack;
    display:inline-block;
    zoom:1;
    *display:inline;
}
#menu ul{
    display:block;
    background:url(../images/menu-ul.png) right bottom no-repeat;
    height:56px;
    float:left;
}


Так сделайте. Я тут сижу и не вкуриваю зачем вам для ul обтекание?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
toorr2p
toorr2p
Topic Starter сообщение 13.12.2010, 12:24; Ответить: toorr2p
Сообщение #10


Left для того что бы UL не растягивался во всю ширину, но даже если убрать left, все равно не отцентровывается - вот линк http://пающиетрусы.рф

P.S в данный момент центруется через JS вот так:

var marginLeft = ($conf('#cont').width()-$conf('#menu ul')[0].clientWidth)/2;
var Menu = $conf('#menu');
Menu[0].style.margin = '335px auto 0 '+marginLeft+'px';
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
19 uahomka 3171 Сегодня, 18:05
автор: Liudmila
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
149 adw-kupon.ru 19721 Сегодня, 17:41
автор: Liudmila
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
30 freeax 4912 Сегодня, 16:49
автор: Liudmila
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
13 Boymaster 1970 Сегодня, 15:06
автор: Boymaster
Горячая тема (нет новых ответов) Как бездомные хранят деньги?
81 metvekot 13663 31.3.2024, 12:44
автор: Boymaster


 



RSS Текстовая версия Сейчас: 20.4.2024, 19:01
Дизайн