CSS: при использовании float: left, чтобы удерживать мой контент привязанным к моему меню с левой стороны, меню исчезает в IE - PullRequest
1 голос
/ 03 февраля 2009

У меня есть меню ссылок слева, а содержимое в середине. Если содержимое длиннее ссылок, оно будет обтекать их ниже, а не оставаться аккуратно справа.

Добавление float:left в мой content div исправляет это, за исключением IE, в котором меню (и нижний колонтитул) полностью исчезают.

Мне нужно либо исправить проблему с помощью float:left, либо найти другой способ сохранить весь мой контент справа от меню.

Вот урезанная версия HTML и CSS кода, который показывает проблему в действии. Замените #content { float:left; } на #content {}, чтобы увидеть исходную проблему с переносом.

content {margin:200px;} ПОЧТИ решает эту проблему - но ранее обернутые линии теперь примерно на 3 пикселя левее, чем над ними, опять же только в IE.

HTML:

<HTML><HEAD>
<TITLE>Index</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
</HEAD>
<BODY>
    <DIV id="main">
        <DIV id="nav">
            <A href="link1.html">Link 1</A>
            <A href="link2.html">Link 2</A>
        </DIV>
        <DIV id="content">
            Content<br>
            goes<br>
            here<br>
            and<br>
            sometimes<br>
            wraps<br>
            under<br>
            links
        </DIV>
        <DIV id="footer">
            Footer<BR>
        </DIV>
    </DIV>
</BODY>
</HTML>

CSS:

* {
    padding: 0;
    margin: 0;
    text-decoration:none;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    color: #fff;
}

img { border:0px; } 
body { background-color:#454547; padding: 4px; }
#main { position: relative; top: 20px; }
#nav {
    position: relative;
    left: 0px;
    width: 200px;
    float: left;
    font-weight: bold;
    padding: .25em;
    line-height: 1.25em;
    font-size: 1em;
}
#nav a { display: block; height: 35px; padding: 3px; color:#FFFFFF; }
#nav a:hover { background-color:#CCCCCC; color:#333; }
#footer { width: 100%; clear: both; margin: 0px 0px 10px 0px; padding: 10px; font-size:10px; }
#content { float:left; }

Ответы [ 2 ]

2 голосов
/ 03 февраля 2009

найдите другой способ сохранить все мое содержимое справа от меню.

#content { margin-left: 200px; }

Рассмотрите возможность добавления типа документа в стандартном режиме, чтобы уменьшить причуду IE.

1 голос
/ 03 февраля 2009

хорошо, если вас не устраивает мой предыдущий ответ, я пройдусь по нему шаг за шагом ...

есть очень много вещей, которые вы можете сделать неправильно с HTML / CSS, но есть также несколько вещей, которые вы можете сделать правильно, и если вы сделаете их правильно, вам придется гораздо меньше беспокоиться о том, что вы делаете неправильно. поэтому лучше выучить несколько вещей, которые вы можете сделать правильно, и поэтому я сказал вам прочитать другие вопросы / ответы.

Я мог бы попросить вас убрать строку "position: относительный" в вашем #main div, и вы обнаружите, что проблема исчезла ... но я бы не стал, потому что вы не улучшите свой CSS в целом.

сначала всего, используйте DOCTYPES. по возможности, используйте строгое так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

если вы считаете, что не можете применять строгие правила, используйте переходный режим, но имейте в виду, что вы уже снова откроете спектр возможных проблем.

секунда : не применять поля к тегам div, которые содержат ваш контент. instaed создайте тег div вокруг тега содержимого и примените поля! Вы можете использовать прокладки на контейнере, но без полей.

третий : используйте стек перезагрузок в начале таблицы стилей, доступно довольно много, хороший набор (поставляется с пакетом yui от yahoo), который я использую для многих сайтов со строгим xhtml следующим образом:

@charset "utf-8";
/*
 Copyright (c) 2008, Yahoo! Inc. All rights reserved.
 Code licensed under the BSD License:
 http://developer.yahoo.net/yui/license.txt
 version: 2.6.0
 Adapted by Markus Hausammann
 */
/* reset rules */ * {
    font-size: 100.01%;
    overflow: hidden
}

html, body
{
    color: #313131;
    background-color: #ffffff;
    font-family: Geneva, Arial, Verdana, Helvetica, sans-serif;
    line-height: 1.2em;
}

body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td {
    margin: 0;
    padding: 0;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

fieldset, img {
    border: 0;
}

address, caption, cite, code, dfn, em, strong, th, var {
    font-style: normal;
    font-weight: normal;
}

li {
    list-style: none;
}

caption, th {
    text-align: left;
}

h1, h2, h3, h4, h5, h6 {
    font-size: 100%;
    font-weight: normal;
}

q:before, q:after {
    content: '';
}

abbr, acronym {
    border: 0;
    font-variant: normal;
}

/* to preserve line-height and selector appearance */
sup {
    vertical-align: text-top;
}

sub {
    vertical-align: text-bottom;
}

input, textarea, select {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
}

/*because legend doesn't inherit in IE */
legend {
    color: #000;
}

del, ins {
    text-decoration: none;
}

/* clearing methods */
/* clearfix method for clearing floats */ .clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

/* essential for Safari browser !! */ .clearfix {
    display: block;
}

/* removes ugly mozilla dotted link borders */
a:active
{
  outline: none;
}

четвертый : не перемещайте более одного делителя в одном направлении, чтобы избежать некоторых проблем с IE. если вам нужно больше двух div-ов, создайте div-оболочки. так, например, для макета с тремя столбцами вы должны плавать первый столбец влево, а затем div-обертку с плавающей точкой: справа, содержащий второй столбец с плавающей запятой влево (внутри оболочки) и третий столбец с плавающей запятой внутри оболочки ... и т. д. easy но очень управляемый!


прежний ответ:

задайте ширину (maxwidth соответственно) для всех элементов div, перемещайте меню влево и содержимое справа. все проблемы решены. работает и для ширины в процентах.

OR

присвойте вашему главному div встроенный атрибут, а вашему меню div - фиксированную ширину.

OR

использовать сетки (например, http://developer.yahoo.com/yui/grids/ или http://www.blueprintcss.org/)

OR

Прочтите любые другие посты на эту тему в stackoverflow (см. Справа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...