Float Left 100% height div - промежуток между div

Отметить

<%@ Page Language = "C#" AutoEventWireup = "true" CodeBehind = "test.aspx.cs" Inherits = "Zuhaib.test" %>
<!-- Put IE into quirks mode -->
<!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" xml:lang = "en">
<head runat = "server">
    <title></title>
    <link href = "css/general.css" rel = "stylesheet" type = "text/css" />
    <link href = "css/outbound.css" rel = "stylesheet" type = "text/css" />
</head>
<body>
    <form id = "form1" runat = "server" class = "wrapper">
    <asp:ScriptManager ID = "ScriptManager1" runat = "server">
    </asp:ScriptManager>
    <div id = "left">
    </div>
    <div id = "right">
    </div>  
    </form>
</body>
</html>

CSS

html, body
{
    margin:0;
    padding:0;
    border:0;
    overflow:hidden;
    width:100%;
    height:100%;
}
* html body 
{
    height:100%;
    width:100%;
}    
*{
    margin:0;
    padding:0;
}
.wrapper 
{
    position:fixed;
    top:0px;
    bottom:0px;
    left:0px;
    right:0px;
    height:100%;
    width:100%;
}
* html .wrapper 
{
    width:100%;
    height:100%;
}
#left{
    float:left;
    height:100%;
    width:100px;
    overflow:hidden;
    background-color:Blue;
}
* html #left{
    height:100%;
    width:100px;
}
#right{
    margin-left:100px;
    height:100%;
    background-color:Red;
}
* html #right{
    height:100%;
}

Результат в IE && FF
Результаты в IE и FF http://img139.imageshack.us/img139/9871/ie3pxgapnl4.jpg
Результат такой же как в IE 6, так и в 7. Как я могу убрать разрыв между div?

Удате
У меня есть два div со 100% высотой каждый. левый div - это плавающий div фиксированной ширины. Даже после задания правильного поля margin-left к правому div остается зазор (3 пикселя) между двумя div. Где, как в firefox, он отображается правильно.

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

Можно ли устранить этот пробел? Или есть лучший способ сделать двухколоночную разметку со 100% высотой с чистым css?

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

Randy Stegbauer 11.11.2008 16:32

Почему этот вопрос новичков всегда получает опровержение из первых рук… большинство вопросов вполне законные!

chakrit 11.11.2008 16:39

Это не вопрос для новичков. Вопрос довольно очевиден. Почему между плавающим div есть промежуток? разве ты не понимаешь html ?? Мистер Рэнди Стегбауэр, вам не следует смотреть это, если вы не можете понять проблему из заголовка и содержания. Или вы не хотите читать проблему.

Zuhaib 11.11.2008 16:46

@ Рэнди, сколько еще объяснений тебе нужно? ZuhaibZ предоставил полный исходный код, изображение результата и краткое описание проблемы и желаемого решения. Голосовать против - это жалко.

David Arno 11.11.2008 16:50

@Randy: Честно говоря, это вполне законный вопрос. Он задал свой вопрос на грамматически правильном английском, что больше, чем я могу сказать для некоторых шлаков на SO, и он предоставил дополнительную справочную информацию и образцы, которые беспокоят большинство людей.

Eoin Campbell 11.11.2008 16:51

Я бы проигнорировал комментарий Рандси, если бы это было возможно. Это очень хороший вопрос с хорошей информацией и изображениями.

Wodzu 19.11.2010 16:52
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
6
6
27 615
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Удалить комментарий вверху страницы Функция "Перевести IE в режим причуд"

Вы используете много «хаков». Под этим я подразумеваю селекторы CSS, которые начинаются с * html

Я не говорю, что это причина проблемы, но это не лучшая практика и подвержена ошибкам.

1) попробуйте использовать условные комментарии для браузера, в котором есть проблема, вместо использования этих хаков 2) попробуйте отредактировать свой вопрос, предоставив информацию о версии IE, с которой вы тестируете (я предполагаю, что это IE 6 или даже ниже).

Я тестировал IE 6 и 7, результаты такие же. Я использовал хак, чтобы получить 100% высоту для div.

Zuhaib 11.11.2008 17:00

* html не подвержен ошибкам. Это совершенно недопустимый CSS, который работает в IE 5-6, и является надежным способом нацеливания на IE6. Теперь, когда все знают, что он не нацелен на IE7, его использование не представляет опасности.

Mr. Shiny and New 安宇 11.11.2008 18:34
Ответ принят как подходящий

Как уже было сказано, ваш код полон хаков. Пожалуйста, удалите особенно ненужные определения. Если браузер не поддерживает таблицы стилей каскадный, он все равно не будет поддерживать CSS.

При этом почему бы не использовать position: absolute; для # right?

Как в

#right{
  position: absolute;
  left: 100px;
  padding-left: -100px;
  width: 100%;
  ...
}

абсолютное позиционирование определенно решит проблему. Похоже, для меня это единственное решение .. Спасибо

Zuhaib 11.11.2008 17:06

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

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

... плюс размер страницы изменится лучше.

da5id 18.11.2008 01:57

Фактическая проблема - это пробел между закрывающим тегом div и следующим открывающим тегом div. Если вы поместите их в одну строку без пробелов между ними или заполните пробел комментарием, пробел исчезнет.

<div id = "left">
</div><div id = "right">
</div> 

или же

  <div id = "left">
    </div><!-- IE doesn't ignore whitespace between divs
  --><div id = "right">
     </div> 

Другие вопросы по теме