Нужна помощь в получении DIV внутри DIV, чтобы растянуть на ширину содержимого в Firefox - PullRequest
1 голос
/ 01 октября 2009

Я использую макет, похожий на макет из Dynamic Drive здесь: http://www.dynamicdrive.com/style/layouts/item/css-right-frame-layout/

Основная область содержимого (белая) имеет переполнение, установленное на авто. Я дал innerTube внутри этой основной области содержимого границы. Однако, если содержимое в этом innerTube больше ширины основной области содержимого, горизонтальная полоса прокрутки будет отображаться, как и ожидалось, но в Firefox это содержимое будет «перекрывать» границу и исчезать с экрана (можно получить, прокручивая горизонтально) , Другими словами, правая граница остается на месте, а содержимое просто переходит к ее описанию и исчезает за правым столбцом.

В IE он ведет себя именно так, как я хочу - контент отодвигает границы за пределы экрана, чтобы быть видимым только после прокрутки там.

Полагаю, проще всего вставить сюда исходный код. Если вы скопируете его в пустой файл, вы поймете, что я имею в виду. Я только что использовал одно действительно длинное слово, чтобы повторить то, что происходит, если вместо этого есть широкое изображение.

Заранее спасибо всем, кто может мне помочь.

<!--Force IE6 into quirks mode with this comment tag-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">

body{
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
height: 100%; 
max-height: 100%; 
}

#framecontent{
position: absolute;
top: 0;
bottom: 0; 
right: 0;
width: 200px; /*Width of frame div*/
height: 100%;
overflow: hidden; /*Disable scrollbars. Set to "scroll" to enable*/
background: #cccccc;
color: white;
}

#maincontent{
position: fixed;
top: 0;
left: 0;
right: 200px; /*Set right value to WidthOfFrameDiv*/
bottom: 0;
overflow: auto; 
background: #fff;
}

.innertube{
margin: 15px; /*Margins for inner DIV inside each DIV (to provide padding)*/
}
.innertubeWithBorder {
margin: 15px;
border: solid 1px #666666;
}

* html body{ /*IE6 hack*/
padding: 0 200px 0 0; /*Set value to (0 WidthOfFrameDiv 0 0)*/
}

* html #maincontent{ /*IE6 hack*/
height: 100%; 
width: 100%; 
}

</style>

</head>

<body>

<div id="framecontent">
<div class="innertube">

<h1>CSS Right Frame Layout</h1>
<h3>Sample text here</h3>

</div>
</div>


<div id="maincontent">
<div class="innertubeWithBorder">

<h1>Dynamic Drive CSS Library</h1>
<p>AReallyLongWordWhichIsSimilarToHavingAnImageWithWidthGreaterThanTheWidthOfThisDivToShowOverFlowProblemWithBorderSoIfYouResizeThisWindowNarrowerYouWillSeeWhatIMeanWorksFineInIEButNotFirefox</p>
<p>So I want that border over there ------> to dissappear behind the right hand column like it does in IE, and be visible once you use the scrollbar below and scroll to the right</p>
<p style="text-align: center">Credits: <a href="http://www.dynamicdrive.com/style/">Dynamic Drive CSS Library</a></p>

</div>
</div>


</body>
</html>

Ответы [ 2 ]

0 голосов
/ 02 октября 2009

Разобрался. Установите также исправление innerTubeWithBorder и используйте тот же хак IE CSS, чтобы сделать его 100% высоты и ширины, затем установите переполнение IT на auto. Чтобы получить отступ, я использовал padding: 5px в mainContent для IE, и установил верх, низ, вправо и влево на 5px для FF.

Спасибо всем, кто задумался.

0 голосов
/ 01 октября 2009

Есть две вещи, которые вы можете попробовать.

  1. <wbr> - Этот тег не делает разрыв в тексте, но он сообщает браузеру, что если текст должен быть разбит, он должен быть разбит здесь. Вы можете использовать функцию Javascript substr (http://www.quirksmode.org/js/strings.html#substr), чтобы разделить текст на части, добавить тег <wbr> и снова объединить текст.
  2. width: auto Этот параметр менее предпочтителен, поскольку он может нарушить ваш макет и сделать его менее идеальным. Однако, если это установлено для вашего div, он будет гарантировать, что div всегда достаточно большой, чтобы содержать его внутреннее содержимое.

Надеюсь, это поможет!

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