Не могу центрировать div

У меня возникла проблема с настройкой меню для веб-сайта. Весь веб-сайт центрирован с полями: auto. По какой-то причине меню не центрируется, потому что это div, содержащий ссылки, кнопки. Каждая ссылка на кнопку имеет фоновое изображение. Это связано с тем, что изображения для кнопок имеют ширину 315 пикселей и включают накладываемые изображения. Например, когда пользователь удерживает это изображение, оно перемещается на 105 пикселей влево и показывает параметр наведения мыши. (Просмотреть код)

Это .html: (не обращайте внимания на идентификаторы кнопок, не хотелось менять: D, и да, я швед)

    <body>
    <!--Banner-->
    <img src="/header/picture.png" />
    <img src="/header/banner.png" />

    <!--Pre-loads the images for menu-->
    <img src="/header/start.png" style="display: none;" />
    <img src="/header/bestall.png" style="display: none;" />
    <img src="/header/priser.png" style="display: none;" />
    <img src="/header/omoss.png" style="display: none;" />
    <img src="/header/support.png" style="display: none;" />
    <img src="/header/filarkiv.png" style="display: none;" />

    <!--Menu-->
    <div id="menu">
    <a href="index.php" id="startknapp"></a>
    <a href="index.php" id="priserknapp"></a>
    <a href="index.php" id="bestallknapp"></a>
    <a href="index.php" id="omossknapp"></a>
    <a href="index.php" id="supportknapp"></a>
    <a href="index.php" id="filarkivknapp"></a>
    <img src="/header/box.png" id="box" />
    </div>

    <div id="content">
    <p>Hi!</p>
    <p>This is one paragraph</p>
    <p>And this is another.</p>
    </div>
    </body>

И вот как я настроил кнопки в css для меню:

    /*Startknappen*/
    #startknapp
    {
        position: absolute;
        left: 0px;
        width: 105px;
        height: 35px;
        text-decoration: none;
        background-image:url(start.png);
    }

    #startknapp:hover 
    {
        background-position: -105px 0; 
    }

    #startknapp:active 
    {
        text-decoration: none;
    }

    /*Priserknappen*/
    #priserknapp
    {
        position: absolute;
        left: 105px;
        width: 105px;
        height: 35px;
        text-decoration: none;
        background-image:url(priser.png);
    }

    #priserknapp:hover 
    {
        background-position: -105px 0;
    }

    #priserknapp:active 
    {
        text-decoration: none;
    }

    ... and so on for the other buttons...

Вот некоторые из .css:

    #html, body 
    {
        top: 0px;
        right: 0px;
        bottom: 0px;
        left: 0px;
        width: 800px;
        height: 800px;
        margin: auto;
    }

    #menu
    {
        height: 35px;
        width: 800px;
    }

    #content
    {
        position: absolute;
        width: 800px;
        background-color: ;
    }

Проблема теперь в том, что, как написано выше, меню не будет центрироваться. Однако, когда я делаю position: absolute; для #menu он центрируется. Единственная проблема в том, что содержимое затем перекрывает меню, а я этого не хочу. Я хочу, чтобы содержимое начиналось с 0 пикселей после нижней части меню. Вот несколько изображений того, как это выглядит:

Не центрируется: http://imageshack.us/photo/my-images/15/leftra.png

Позиция: Абсолютная: http://imageshack.us/photo/my-images/443/centerh.png

Надеюсь, кто-то может помочь мне сделать это правильно. Заранее спасибо :)


person Simon Fontana Oscarsson    schedule 12.07.2012    source источник
comment
На первый взгляд ‹div id=menu› не был близок, это может повлиять на него.   -  person Sean    schedule 12.07.2012
comment
Можете ли вы показать работающую демонстрацию или скрипту?   -  person Praveen Kumar Purushothaman    schedule 12.07.2012
comment
Я забыл закрывающий div и body при создании темы здесь. Исправлено сейчас. Все еще есть та же проблема.   -  person Simon Fontana Oscarsson    schedule 12.07.2012
comment
Я загружу страницу в качестве демо, когда вернусь домой через полчаса. Извините, надо было подумать об этом, прежде чем писать.   -  person Simon Fontana Oscarsson    schedule 12.07.2012


Ответы (2)


не был закрыт, я не знаю, не закрыли ли вы тег body или просто вырезали его из своей копии.

Кроме того, стиль для #menu должен включать «position:relative», если вы устанавливаете элементы меню с абсолютной позицией, таким образом, они будут расположены относительно контейнера меню, а не тела страницы.

Кроме того, я не уверен, что будет делать этот код:

#html, body 
    {
        top: 0px;
        right: 0px;
        bottom: 0px;
        left: 0px;
        width: 800px;
        height: 800px;
        margin: auto;
    }

Вы пытаетесь расположить его по центру с шириной, но затем говорите, что он должен растягиваться до каждого угла с частью, которая говорит «сверху: 0; справа: 0 и т. д.»

Было бы намного лучше иметь такую ​​обертку:

HTML:

<div id="wrapper">
    All content in here
</div>

CSS:

#wrapper { margin: 0 auto; width: 800px; }

Редактировать: Тоже только что заметил, приятно видеть, что кто-то еще использует Ubuntu ;)

Редактировать2: было бы намного лучше, если бы вы позиционировали элементы навигации с плавающей запятой вместо "position: absolute" для получения дополнительной информации см. здесь

Дополнительную информацию о позиционировании, которая может вам также понадобиться, см. здесь

person Sean    schedule 12.07.2012
comment
Извините, если это не ответ на ваш вопрос, трудно попытаться исправить это, иногда не глядя на работающую модель. - person Sean; 12.07.2012
comment
Я забыл закрывающий div и body при создании темы здесь. Исправлено сейчас. Все еще есть та же проблема. - person Simon Fontana Oscarsson; 12.07.2012
comment
Вы пробовали CSS/HTML, который я предложил? Это помогло? - person Sean; 12.07.2012
comment
Я также смотрю на остальную часть вашего ответа, просто давая вам знать, чтобы вы не думали, что я не такой: P - person Simon Fontana Oscarsson; 12.07.2012
comment
Спасибо! Позиция: родственник решил мою проблему. Большое спасибо :) Я также приму во внимание остальную часть вашего поста для будущего кодирования. - person Simon Fontana Oscarsson; 13.07.2012

Как сказал Шон Данвуди, вам нужно добавить позицию: относительно div.menu. При использовании position: absolute элементы позиционируются до последнего элемента, которому присваивается свойство position. Поскольку вы не позиционировали ни один из ваших элементов div, кроме пунктов меню, они перемещаются вверх по иерархии элементов div и позиционируют себя относительно тега body. Добавляя position: относительно div.menu, вы указываете div.menu, где он должен быть (т. .меню)

person Celeste Horgan    schedule 12.07.2012
comment
Спасибо за объяснение! Это решило мою проблему. Спасибо! :) - person Simon Fontana Oscarsson; 13.07.2012