it-roy-ru.com

Установите автоматическую высоту и ширину в CSS/HTML для разных размеров экрана

У меня есть 2 проблемы с этим макетом:

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

Я хочу: адаптировать .feature_content к оставшейся высоте и убрать горизонтальную полосу прокрутки.

Вот СКРИПКА 

И мой код:

HTML

<div id="container">
    <div id="header">Header added just for demonstration purposes</div>
    <div id="content">Your content goes here
        <div class="featured_content"></div>
    </div>
</div>
<div id="footer">Footer here</div>

CSS:

* {
    padding: 0;
    margin: 0;
    border: 0;
    outline: 0;
}
body, html {
    width:100%;
    min-height: 100%;
}
div {
    height:100%;
    width:100%;
    border:5px solid black;
}
#header {
    background-color:orange;
}
#container {
    background:blue;
    margin: 0 auto;
    position: relative;
    height: auto !important;
}
#content {
    background:pink;
    padding-bottom: 100px;
    margin: 0 auto;
    position: relative;
}
#footer {
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.4);
    height: 70px;
    left: 0;
    position: fixed;
    z-index: 100000;
    background:green;
}
.featured_content {
    min-height: 750px;
    max-height: 750px;
    width:200px;
    background-color:grey;
    position:fixed;
    margin:auto 0px;
    margin-top: 150px;
}
4
user1358072

Это то, что вы хотите? ДЕМО . Попробуйте уменьшить окно браузера, и вы увидите, что элементы будут упорядочены.

Что я использовал? Гибкая модель коробки или Flexbox.

Просто добавьте следующие CSS-классы к вашему элементу контейнера (в данном случае div#container):

flex-init-setup и flex-ppal-setup.

Куда:

  1. flex-init-setup означает настройка flexbox init; а также
  2. flex-ppal-setup означает основная настройка flexbox

Вот правила CSS:

 .flex-init-setup {
     display: -webkit-box;
     display: -moz-box;
     display: -webkit-flex;
     display: -ms-flexbox;
     display: flex;
 }
 .flex-ppal-setup {
     -webkit-flex-flow: column wrap;
     -moz-flex-flow: column wrap;
     flex-flow: column wrap;
     -webkit-justify-content: center;
     -moz-justify-content: center;
     justify-content: center;
 }

Будь хорошим, Леонардо

5
leoMestizo

/// ОБНОВЛЕНО РЕШЕНИЕ ЧАСОВ DEMO 2 ////

Я надеюсь, что это решение, которое вы ищете! DEMO1DEMO2

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

Вы можете сделать это с этим кодом здесь:

<div class="navTop">
<h1>Title</h1>
    <nav>Dynamic menu</nav>
</div>
<div class="container">
    <section>THE CONTENTS GOES HERE</section>
</div>
<footer class="bottomFooter">
    Footer
</footer>

С этим CSS:

.navTop{
width:100%;
border:1px solid black;
float:left;
}
.container{
width:100%;
float:left;
overflow:scroll;
}
.bottomFooter{
float:left;
border:1px solid black;
width:100%;
}

И немного jquery:

$(document).ready(function() {
  function setHeight() {
    var top = $('.navTop').outerHeight();
    var bottom = $('footer').outerHeight();
    var totHeight = $(window).height();
    $('section').css({ 
      'height': totHeight - top - bottom + 'px'
    });
  }

  $(window).on('resize', function() { setHeight(); });
  setHeight();
});

ДЕМО 1

Если вы не хотите JQuery

<div class="row">
    <h1>Title</h1>
    <nav>NAV</nav>
</div>

<div class="row container">
    <div class="content">
        <div class="sidebar">
            SIDEBAR
        </div>
        <div class="contents">
            CONTENTS
        </div>
    </div>
    <footer>Footer</footer>
</div>

CSS

*{
margin:0;padding:0;    
}
html,body{
height:100%;
width:100%;
}
body{
display:table;
}
.row{
width: 100%;
background: yellow;
display:table-row;
}
.container{
background: pink;
height:100%; 
}
.content {
display: block;
overflow:auto;
height:100%;
padding-bottom: 40px;
box-sizing: border-box;
}
footer{ 
position: fixed; 
bottom: 0; 
left: 0; 
background: yellow;
height: 40px;
line-height: 40px;
width: 100%;
text-align: center;
}
.sidebar{
float:left;
background:green;
height:100%;
width:10%;
}
.contents{
float:left;
background:red;
height:100%;
width:90%;
overflow:auto;
}

ДЕМО 2

1
rkpasia

Используя bootstrap с небольшой настройкой, мне кажется, что мне подходит следующее:

Мне нужно 3 раздела в моем контейнере, и я попробовал это:

CSS:

.row.content {height: 100%; width:100%; position: fixed; }
.sidenav {
  padding-top: 20px;
  border: 1px solid #cecece;
  height: 100%;
}
.midnav {
  padding: 0px;
}

HTML:

  <div class="container-fluid text-center"> 
    <div class="row content">
    <div class="col-md-2 sidenav text-left">Some content 1</div>
    <div class="col-md-9 midnav text-left">Some content 2</div>
    <div class="col-md-1 sidenav text-center">Some content 3</div>
    </div>
  </div>
0
Teejay