2015-06-13 2 views
0

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

body 
{ 
    margin: 0 0 200px; //Same height of the footer 
} 
footer 
{ 
    position: absolute; 
    left: 0; 
    bottom: 0; 
    height: 200px; 
    width: 100%; 
    overflow: auto; 
    background-color: rgba(67, 191, 115, 0.95); 
} 

Я использую:

<div class='main-content'> 
//Content 
</div> 
<footer> 
//Footer content 
</footer> 

Ну, проблема, если изменить размер экрана и содержание больше, чем разрешение футер позволяет белым пространство, например: enter image description here

Я пытаюсь решить эту проблему. Если я использую position: fixed, проблема исчезает, но я не хочу, чтобы нижний колонтитул следовал за прокруткой. Я думаю, что проблема в 100-процентной ширине. Нижний колонтитул этого сайта, переполнение стека, работает, как мне нужно. Если я изменяю размер окна, нижний колонтитул остается тем же, без пробела. Как достичь этого? Как сделать нижний колонтитул шириной без пробела, даже если разрешение ниже, чем здесь, например, в переполнении стека?

+0

https://css-tricks.com/snippets/css/sticky-footer/ –

+0

Под «всегда внизу» вы имеете в виду нижнюю часть окна в нижней части страницы? Абсолют будет перемещаться относительно размера страницы (всегда в одном месте на странице), а фиксированное - это то же самое место на экране (удалено из потока документов) - это то, с чем вы столкнулись? – CalebB

+0

Также попробуйте добавить это в начало вашего документа css: '* {margin: 0; обивка: 0; } body, html {width: 100%; высота: 100%; } 'может помочь. – CalebB

ответ

0

Попробуйте этот код ....
CSS

html, 
body { 
    height: 100%; 
    /* The html and body elements cannot have any padding or margin. */ 
} 

/* Wrapper for page content to push down footer */ 
#wrap { 
    min-height: 100%; 
    height: auto; 
    /* Negative indent footer by its height */ 
    margin: 0 auto -60px; 
    /* Pad bottom by footer height */ 
    padding: 0 0 60px; 
} 

/* Set the fixed height of the footer here */ 
#footer { 
    height: 60px; 
    background-color: #f5f5f5; 
} 


/* Custom page CSS 
-------------------------------------------------- */ 
/* Not required for template or sticky footer method. */ 

.container { 
    width: auto; 
    max-width: 680px; 
    padding: 0 15px; 
} 
.container .credit { 
    margin: 20px 0; 
} 

HTML

</ul> 
    <form class="navbar-form navbar-left" role="search"> 
     <div class="form-group"> 
     <input type="text" class="form-control" placeholder="Search"> 
     </div> 
     <button type="submit" class="btn btn-default">Submit</button> 
    </form> 
    <ul class="nav navbar-nav navbar-right"> 
     <li><a href="#">Link</a></li> 
     <li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> 
     <ul class="dropdown-menu"> 
      <li><a href="#">Action</a></li> 
      <li><a href="#">Another action</a></li> 
      <li><a href="#">Something else here</a></li> 
      <li class="divider"></li> 
      <li><a href="#">Separated link</a></li> 
     </ul> 
     </li> 
    </ul> 
    </div><!-- /.navbar-collapse --> 
</nav> 

     <!-- Begin page content --> 
     <div class="container"> 

     <div class="page-header"> 
      <h1>Sticky footer</h1> 
     </div> 
     <p class="lead">Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.</p> 
     <p>Use <a href="../sticky-footer-navbar">the sticky footer with a fixed navbar</a> if need be, too.</p> 
     </div> 
    </div><!-- Wrap Div end --> 

    <div id="footer"> 
     <div class="container"> 
     <p class="text-muted credit">Example courtesy <a href="http://martinbean.co.uk">Martin Bean</a> and <a href="http://ryanfait.com/sticky-footer/">Ryan Fait</a>.</p> 
     </div> 
    </div> 


    <!-- Bootstrap core JavaScript 
    ================================================== --> 
    <!-- Placed at the end of the document so the pages load faster --> 
    </body> 
</html> 
0

Это jsfiddle Я создаю на основе вашего HTML.

Это работа как отзывчивая, я не вижу никакой проблемы, как вы говорите.

Я думаю, может быть проблема с height:200px, просто удалите и проверьте.

Еще у вас есть вопрос, обновите jsfiddle.

+0

Нет, проблема остается. Я могу сказать, что ширина нижнего колонтитула меняется, если я изменяю размер страницы и пропускаю это пробел, потому что содержимое страницы превышает разрешение. Я использую в качестве примера нижний колонтитул Stack Overflow. Я могу изменить разрешение страницы, а нижний колонтитул остается без изменений. Это то что мне нужно. – Dyan

0

Вы должны использовать фиксированное позиционирование. Это то, что мы делаем в наших приложениях, работающих на браузерах и устройствах Android/IOS:

<!DOCTYPE html> 
<html> 
    <head> 
     <style type="text/css"> 
      body 
      { 
       margin: 0; 

       /* 
        This height just to show that the footer stays at the 
        bottom of the page even when scrolling all the way down. 
       */ 
       height:2000px; 
      } 
      footer 
      { 
       position: fixed; 
       left: 0; 
       right: 0; 
       bottom: 0; 
       height: 200px; 
       overflow: auto; 
       background-color: rgba(67, 191, 115, 0.95); 
      } 
     </style> 
    </head> 
    <body> 
     <div class='main-content'> 
      //Content 
     </div> 
     <footer> 
      //Footer content 
     </footer> 
    </body> 
</html>  

Конечно, вы используете HTML5, так эта страница не будет работать на старых браузерах (IE7, IE8).

Надеюсь, это поможет :)

+0

Фиксированное положение не будет реагировать, поскольку оно фиксировано. – RationalRabbit

0

Мне нравится flexbox. CSS tricks - Guide to Flexbox Попробуйте это:

main { 
 
    height: 95vh; 
 
    display: flex; 
 
    flex-flow: column wrap; 
 
    justify-content: space-around; 
 
    align-items: center; } 
 
header, 
 
footer { flex: 0 1 auto; } 
 
article { flex: 10 1 auto; }
<main> 
 
    <header>Title Here</header> 
 
    <article>Main Article</article> 
 
    <footer>Copyright and Contact Me</footer> 
 
</main>

+0

Спасибо, но проблема остается даже с использованием этого метода. – Dyan

0

Благодаря Гален Gidman https://galengidman.com/2014/03/25/responsive-flexible-height-sticky-footers-in-css/ для этого:

<header class="page-row"> 
    <h1>Site Title</h1> 
</header> 

<main class="page-row page-row-expanded"> 
    <p>Page content goes here.</p> 
</main> 

<footer class="page-row"> 
    <p>Copyright, blah blah blah.</p> 
</footer> 

И КСС:

html, 
body {height: 100%;} 

body {display: table; width: 100%;} 

.page-row {display: table-row; height: 1px;} 

.page-row-expanded {height: 100%;} 

Галан: Единственный реальный Предостережение к этому решению, с которым я столкнулся до сих пор, - это ограничения стиля, присутствующие в элементах с использованием display: table-row. Часто заполнение, маржа и т. Д. Не ведут себя так, как ожидалось. Это достаточно легко обойти, добавив что-то внутри строки .page и стилей.