Расширение областей HTML до нижней части экрана и создание верхней и левой строк меню с использованием HTML5 и CSS - PullRequest
1 голос
/ 09 августа 2011

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

Enter image description here

Светло-серая область - это то место, где будет находиться основное содержание каждой страницы. Слева находится второе навигационное меню, которое должно доходить до нижней части экрана и совпадать с основной областью содержимого.

Я не могу понять, как настроить их так, чтобы и левое меню, и область основного контента простирались вниз до нижней части экрана. Я использую проценты ширины, свойства float и position CSS, чтобы выровнять их рядом друг с другом (свойство display не имело никакого эффекта). Я считаю, что проблема в том, что мне нужно увеличить область основного контента на 95 пикселей, используя:

bottom: 95px;

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

Единственный способ, которым я обнаружил, чтобы увеличить их высоту 'до низа, это установить их высоту в пикселях, но это не совсем работает, так как я перемещаю область основного контента вверх на 95px, чтобы нижняя часть основного контента область имеет белый пробел под ним, и это даже не с левым меню навигации. Моя HTML-статья выглядит так:

<body>
  <header>
    <nav id="topMenu">
    </nav>
    <div id="titleAndUserInfo">
    </div>
  </header>

  <nav id="leftMenu">
  </nav>

  <section id="main">
  </section>
</body>

Навигационные теги соответствуют шаблону

Обновление

Мне удалось заставить мои CSS и HTML5 работать так, чтобы позиция была правильной, но левое навигационное меню и светло-серая область основного содержимого по-прежнему не расширялись до нижней части экрана, когда не хватает контента для сделать это автоматически. Как я могу заставить это? Установка их высоты на 100% или значение px, похоже, не работает. Вот мой HTML, CSS и результаты в Chrome.

<body>
  <header>
    <nav id="topMenu">
      <ul>
        <li><a href="/">xxx</a></li>
         <li><a href="/Home/About">xxxxx</a></li>
       </ul>
     </nav>
     <div id="titleUserLogin">
       <h1>Title</h1>
       Welcome <strong>test</strong>!
       <a href="/Account/LogOff">Log Off</a>
     </div>
   </header>
   <nav id="leftMenu">
     <ul>
       <li><a href="/">Home</a></li>
       <li><a href="/">xxxx</a></li>
       <li><a href="/">xxxx</a></li>
       <li><a href="/">xxx</a></li>
       <li><a href="/">xxxx</a></li>
       <li><a href="/">xxxx</a></li>
       <li><a href="/">xxxx</a></li>
       <li><a href="/">xxxx</a></li>
       <li><a href="/">xxxx</a></li>
     </ul>
   </nav>
   <section id="main">
     <p>content</p>
   </section>
 </body>


/* General */
body {
  margin: 0;
  padding: 0;
  border: 0;
  height: 100%;
}

/* Header */
header {
  text-align: left;
  float: right;
  position: relative;
  width: 90.5%;
}

div#titleUserLogin {
  color: #fff;
  background-color: #303030;
  display: inline-block;
  width: 100%;
}

div#titleUserLogin h1 {
  display: inline;
}

div#titleUserLogin a {
  text-align: right;
  float: right;
}

/* Navigation menus */
nav#topMenu ul {
  padding: 0 0 2px;
  position: relative;
  display: inline;
}

nav#topMenu ul li {
  list-style: none;
  display: inline;
}

nav#topMenu ul li a {
  background-color: #303030;
  color: #fff;
  -webkit-border-radius: 4px 4px 0 0;
  -moz-border-radius: 4px 4px 0 0;
  padding: 10px 20px;
  line-height: 2.8;
  text-decoration: none;
}

nav#leftMenu {
  background-color: #303030;
  position: relative;
  float: left;
  width: 9%;
}

nav#leftMenu ul {
  position: relative;
}

nav#leftMenu ul li {
  list-style: none;
}

/* main content */
section#main {
  background-color: #d7d7d7;
  height: 100%;
  width: 90.5%;
  float: right;
  height: 100%;
}

Enter image description here

1 Ответ

0 голосов
/ 14 августа 2011

Решение:

Добавьте следующее правило и измените правила nav # leftMenu и section # main с процентными высотами, пока содержимое каждого из них не достигнет нижней части экрана:

html { 
  height: 100%;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...