html + css динамическая ширина с переполнением - PullRequest
1 голос
/ 09 августа 2010

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

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

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

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

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

<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>

Ответы [ 6 ]

2 голосов
/ 09 августа 2010

Посмотрите на это по-другому:

<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 голосов
/ 19 августа 2010

Я сделаю снимок:

<!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.

0 голосов
/ 19 августа 2010

Поправьте меня, если я ошибаюсь, но ваша схема требует независимых полос прокрутки для каждого раздела, похожих на фреймы предыдущего поколения 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 голосов
/ 09 августа 2010
<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 голосов
/ 09 августа 2010

Я бы использовал немного CSS, чтобы

.a {

float: left;

}

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

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

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

0 голосов
/ 09 августа 2010
    <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>

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

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