CSS проблема с элементами, охватывающими столбцы - PullRequest
0 голосов
/ 01 мая 2010

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

Концепция:
- Блок-макет стандартного размера. Я процитирую единицу ширины: каждый блок контента имеет площадь 240px с полями 5px вокруг него.
- Левый столбец с фиксированной шириной в 1 единицу (245 пикселей - 1 блок + поле слева). Здесь нет проблем.
- Правый столбец переменной ширины, чтобы заполнить оставшееся пространство. Здесь тоже никаких проблем.
- В левом столбце в столбце зафиксировано количество блоков размером 1 единица x 1 единица. Также некоторое свободное место вверху - опять же, не проблема.
- В правом столбце: количество свободно плавающих блоков стандартных размеров, которые плавают вокруг и заполняют пространство, предоставленное им окном браузера. Здесь нет проблем.
- Наконец, один элемент шириной 2 единицы, который находится наполовину в левом столбце и наполовину в правом столбце, и вокруг которого все еще плавают блоки в правом столбце. Здесь будут драконы.

Смотрите здесь схему .

Проблема:
Независимо от того, как я подхожу к этому, все идет не так. Ниже приведен код моей попытки найти решение. Моя текущая проблема заключается в том, что блоки 1x1 справа не соответствуют блоку 2x1, и в результате половина блока 2x1 перезаписывается блоком 1x1 в правом столбце.

Я знаю, что это почти наверняка проблема с position: absolute выводом вещей из потока. Тем не менее, я не могу найти способ обойти то, что не просто вызывает другую проблему.

Код:

<html>
<head>
  <title>wat</title>
  <style type="text/css">
    body {
      background: #ccc;
      color: #000;
      padding: 0px 5px 5px 0px;
      margin: 0px;
    }

    #leftcol {
      width: 245px;
      margin-top: 490px;
      position: absolute;
    }

    #rightcol {
      left: 245px;
      position: absolute;
    }

    #bigblock {
      float: left;
      position: relative;
      margin-top: -240px;
      background: red;
    }

    .cblock {
      margin: 5px 0px 0px 5px;
      float: left;
      overflow: hidden;
      display: block;
      background: #fff;
    }
    .w1 {
      width: 240px;
    }
    .w2 {
      width: 485px;
    }
    .l1 {
      height: 240px;
    }
</head>
<body>
  <div class="cblock w2 l1" id="bigblock">
    <h1>DRAGONS</h1>
    <p>Here be they</p>
  </div>
  <div id="leftcol">
    <div class="cblock w1 l1">
      <h1>Left 1</h1>
      <p>1x1 block</p>
    </div>
  </div>
  <div id="rightcol">
    <div class="cblock w1 l1">
      <h1>Right 1</h1>
      <p>1x1 block</p>
    </div>
    <div class="cblock w1 l1">
      <h1>Right 2</h1>
      <p>1x1 block</p>
    </div>
    <div class="cblock w1 l1">
      <h1>Right 3</h1>
      <p>1x1 block</p>
    </div>
    <div class="cblock w1 l1">
      <h1>Right 4</h1>
      <p>1x1 block</p>
    </div>
    <div class="cblock w1 l1">
      <h1>Right 5</h1>
      <p>1x1 block</p>
    </div>
    <div class="cblock w1 l1">
      <h1>Right 6</h1>
      <p>1x1 block</p>
    </div>
    <div class="cblock w1 l1">
      <h1>Right 7</h1>
      <p>1x1 block</p>
    </div>
  </div>
</body>
</html>

Ограничения:
И последнее замечание: мне нужна кросс-браузерная совместимость, хотя я более чем рад применить это с JS, если это необходимо. Тем не менее, если существует решение только для CSS, я был бы очень счастлив.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2014

У меня была такая же проблема с расположением столбцов. Я исправил это с помощью margin-left: 40px; в файле CSS. Кроме того, не используйте переполнение: скрытый; это скрывает круги в стиле списка. Надеюсь, это поможет.

0 голосов
/ 02 мая 2010

В #bigblock:

  • Удалить маржинальную верхушку: -240px
  • Добавить поле слева: -240px

Затем поместите #bigblock в правом столбце так, чтобы это был 5-й DIV.

Обратите внимание, что это действительно будет работать только с контейнером фиксированной ширины. Если вы измените размер браузера, вы увидите, что #bigblock перемещается.

Рассматривали ли вы какие-либо CSS-фреймворки, например bluprint или 960 Grid System ? Они могут помочь вам достичь того, что вы ищете.

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