2010-08-09 5 views
1

Я не знаю, как выполнить следующее в html, я бы предпочел, чтобы решение было строго html + css, javascript/jquery используется на сайте, но я не знаю, t предпочитаю, чтобы мой макет зависел от javascript.html + css динамическая ширина с переполнением

Раздел A - это список неопределенной ширины, он заполняется данными из базы данных, поэтому он может быть от ширины 9em-15em. В разделе B также есть текст, который переполняется. Я хочу, чтобы A заняла необходимую ширину, чтобы отобразить ее содержимое, а затем я хочу, чтобы раздел B занимал остальную часть ширины.

Возможно ли это, если да, то каким образом? Знаете ли вы каких-либо хороших книг, которые могут дать мне хорошую основу для HTML + CSS

--------------------------------------------- 
|   |^|        |^| 
|   | |        | | 
|   | |        | | 
|   | |        | | 
| A  | |    B    | | 
|   | |        | | 
|   | |        | | 
|   | |        | | 
|   | |        | | 
|   | |        | | 
|   |v|        |v| 
---------------------------------------------- 

Это то, что я в настоящее время, но если раздел B переполняется, то это заставляет список «А» сжиматься, делая дивы перейти к двум линиям, что неприемлемо.

<div id="SectionA" style="float:left"> 
<div>Just TEst data</div> 
<div>Just data</div> 
... 
<div>Just data</div> 
</div> 
<div id="SectionB" style="float:left"> 
    <!-- A bunch of content here --> 
</div> 

ответ

0
<div id="SectionA" style="float:left;width:auto;max-width:NUMBERpx"> 
<div>Just TEst data</div> 
<div>Just data</div> 
... 
<div>Just data</div> 
</div> 
<div id="SectionB" style="float:left;width:auto;max-width:NUMBERpx"> 
    <!-- A bunch of content here --> 
</div> 

Может быть, это может работать

-1

Я хотел бы использовать некоторые CSS для

.a {

поплавком: слева;

b будет писать вокруг.

Не контролируйте ширину вообще, и она автоматически устанавливает себя вправо по ширине для информации, которую вы возвращаете с вашего дБ.

Контроль высоты, чтобы вы могли убедиться, что b не пробирается вниз.

2

Посмотрите на это с другой стороны:

<div id="SectionB"> 
<div id="SectionA"> 
    <div>Just TEst data</div> 
    <div>Just data</div> 
    ... 
    <div>Just data</div> 
</div> 
<!-- A bunch of content here --> 
</div> 

div#SectionA {max-width:15em; float:left;} 

div#SectionB {width:100%;} 

это должно работать отлично

+0

В этом решении, если содержимое B достаточно велико, чтобы столбцы B были длиннее столбца A ...содержимое B будет проходить под содержимым A. OP может рассмотреть возможность поиска в Интернете для «раскладок с несколькими столбцами». –

0
<style> 
#sectiona{ 
float:left; 
overflow:auto} 
#sectiona>div{ 
white-space:no-wrap} 

</style> 

<div id="sectiona" style="float:left"> 
<div>Just TEst data</div> 
<div>Just data</div> 
... 
<div>Just data</div> 
</div> 
<div id="sectionb" style="float:left"> 
    <!-- A bunch of content here --> 
</div> 

Я думаю, что должно работать.

Ваша схема показывает, что столбцы имеют равную высоту. Этого трудно достичь, используя только css

0

Исправьте меня, если я ошибаюсь, но ваша схема, кажется, требует независимых полос прокрутки для каждого раздела, сродни кадрам предыдущего поколения HTML. Если это так, вам понадобится родительский контейнер div для обоих разделов с фиксированной высотой и установите высоту обоих секций на 100%.

<style> 
#frameset { 
    background-color: lightBlue; 
    position: absolute; /* this is my way of emulating frameset */ 
    bottom: 0; /* you can specify height instead if you're */ 
    top: 0; /* not using absolute positioning */ 
    left: 0; right: 0; 
} 
#menu, width { 
    width: auto; 
    height: 100%; 
} 
#menu { 
    background-color: bisque; 
    max-width: 15em; 
    float: left; 
    overflow-y: scroll; /* feel free to change to auto, but remember: 
    scrollbar is appended from inside. If you use script to change its 
    content, sentences that previously just fit in one line may suddenly need 
    a line break in the middle when the scrollbar appears */ 
} 
#content { 
    overflow-y: auto; 
} 
</style> 

<div id="frameset"> 
    <div id="menu">aaaaaaaaaaa</div> 
    <div id="content">b</div> 
</div> 
0

я дать этому выстрел:

<!DOCTYPE html> 
<head> 
    <title>Testing Columns</title> 
    <style type="text/css"> 
    #a { float: left; } 
    #b { overflow: hidden; } 
    </style> 
</head> 
<body> 
<div id="a"> 
    <ul> 
     <li>This is</li> 
     <li>Some variable width</li> 
     <li>content</li> 
     <li>for testing</li> 
     <li>stuff</li> 
    </ul> 
</div> 
<div id="b"> 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mauris erat, porta et pulvinar vel, iaculis sed arcu. Vestibulum non eros quis eros congue scelerisque in sed tortor. Vivamus scelerisque, lorem auctor faucibus tempor, magna diam porttitor leo, vel tempor elit sapien accumsan mauris. Sed interdum est at elit cursus euismod. Donec et erat est, non molestie urna. Nam sollicitudin turpis in nunc viverra tempus. Mauris gravida viverra massa vitae ornare. Integer interdum aliquam viverra. Vivamus ut libero elit, at semper ligula. Sed iaculis risus ut ligula molestie tincidunt. Ut ac felis libero, aliquam mattis tellus. Proin non massa a odio bibendum laoreet in eu ligula. Aliquam ac elit a nisl laoreet commodo. Integer ullamcorper tempor mauris in adipiscing. Suspendisse ultrices enim vel orci adipiscing tincidunt. Praesent justo dui, ullamcorper ut venenatis posuere, molestie in arcu. Sed libero justo, facilisis sit amet luctus sit amet, cursus vel leo.</p> 
    <p>Curabitur quis felis sit amet enim congue euismod vel a nibh. Sed auctor justo in nulla ullamcorper malesuada. Duis eu purus nec quam ornare congue vitae vel dui. Cras faucibus suscipit tincidunt. Nunc rutrum pretium diam ac venenatis. Proin non dui ligula, quis eleifend massa. Phasellus condimentum fringilla velit. Sed aliquet sodales tortor, ut pharetra mauris imperdiet vel. Etiam tempor augue non felis fermentum varius. Praesent facilisis condimentum commodo. Ut mollis tristique eros, non dapibus enim sollicitudin quis. In hac habitasse platea dictumst. Maecenas enim nibh, sollicitudin sit amet adipiscing vitae, aliquet pretium dui. Vivamus lacus quam, fermentum eget adipiscing et, malesuada eget urna.</p> 
</div> 
</body> 
</html> 

Довольно легко. #a плавает вокруг без назначенного witdh, потому что его содержимое имеет ширину. #b не посягает на #a пробел из-за overflow: hidden. Это решение не будет работать в IE менее 7.

Смежные вопросы