Stick footers布局总结

一、Sticky footers解释

在网页设计中,Sticky footers设计是最古老和最常见的效果之一,大多数人都曾经经历过。它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部;如果内容足够长时,页脚块会被内容向下推送。(效果如下图)

二、实现

2.1 容器使用负的margin bottom

 首先是个包裹除了footer之外其他元素的容器,然后容器内有个占位元素,以及使用负的margin bottom,他们的绝对值相等。  

<body>
  <div class="wrapper">
      content
    <div class="push"></div>
  </div>
  <footer class="footer"></footer>
</body>
html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  min-height: 100%;
  margin-bottom: -50px;
}
.footer, .push {
  height: 50px;
}

2.2 底部使用负的margin bottom

 既然想到在容器上使用负的margin bottom,同理可得负的margin top版本

<body>
  <div class="content">
    <div class="content-inside">
      content
    </div>
  </div>
  <footer class="footer"></footer>
</body
html, body {
  height: 100%;
  margin: 0;
}
.content {
  min-height: 100%;
}
.content-inside {
  padding: 20px;
  padding-bottom: 50px;
}
.footer {
  height: 50px;
  margin-top: -50px;
}

2.3 calc版本

  结合vh单位,calc 版本就粗暴很多。

<body>
  <div class="content">
    content
  </div>
  <footer class="footer"></footer>
</body>
.content {
  min-height: calc(100vh - 70px);
}
.footer {
  height: 50px;
}

calc中的 70px,和50px是假定了content中最后一个元素有个20px的margin bottom,你不必在意这些~

2.4 flexbox版本

  flexbox版本同样很简单,并且相比前面三种方式,它不需要知道footer的高度,避免了Magic Number的尴尬。

<body>
  <div class="content">
    content
  </div>
  <footer class="footer"></footer>
</body>
html {
  height: 100%;
}
body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}
.content {
  flex: 1;
}

原理是flex: 1使得content的高度可以自由伸缩。

2.5 grid版本

  grid比flexbox还要新很多,使用grid同样很简洁,遗憾的是现在Chrome Canary 或者 Firefox Developer Edition才能看到效果。

<body>
  <div class="content">
    content
  </div>
  <footer class="footer"></footer>
</body>
html {
  height: 100%;
}
body {
  min-height: 100%;
  display: grid;
  grid-template-rows: 1fr auto;
}
.footer {
  grid-row-start: 2;
  grid-row-end: 3;
}

文章转自:  http://w3ctrain.com/2016/06/24/stick-footer/

时间: 2024-11-03 20:00:26

Stick footers布局总结的相关文章

初试 vue2.0——5.项目开发_css sticky footers布局

写在前面的话: 在 w3cplus 上可以看到相关学习资料,本文就是参考了这篇,写下的笔记~,原文 链接 五.css sticky footers布局 一般来说,常会遇到这样的布局:在一个页面的内容不确定的情况下,始终得实现 footer 部分位于页面的底部~ 实现这种布局的方式有很多,据说css sticky footers 是一种兼容性最好的一种布局方式~ 然而最好的方式是:flex 布局~~~ 好用的写在前面,参考原文 1 <!DOCTYPE html> 2 <head> 3

项目知识点概况

技术栈:Vue.js 基础:HTML,CSS,JS,ES6 涉及: vue-resource:前后端数据交互 vue-router:前端单页应用 1.better-scroll库:第三方数据库,最大程度组件化,复用功能 2.html5 localstorage:收藏功能 3.图标字体 4.1像素边距 5.css stick footer布局 6.flex弹性布局 vue-cli

iOS实现书架布局样式【一些电子书的首页】

本文实现了类似电子书首页,用来展示图书或小说的布局页面,书架列表[iPhone6模拟器],屏幕尺寸还没进行适配,只是做个简单的demo[纯代码实现方式] 实现采用的是UICollectionView和UICollectionViewFlowLayout.关于UICollectionView的详细讲解请参考http://blog.csdn.net/meegomeego/article/details/16953489 一.实现layout的DecorationView // // FWBookSh

青瓷qici - H5小游戏 抽奖机 2 界面布局

背景图片 首先我们需要在当前场景下面创建UI的根节点,这个根节点决定了我们整个游戏的元素布局,以及适应多分辨率的缩放布局问题,所以我们其他的元素都要放在UIRoot下面. 考虑到我自己测试的时候在PC下面也想看得舒服,所以UIRoot的布局采用居中宽高比固定,然后在最下面Manual Type 设置为Expand 匹配宽或高,让显示区域在显示屏内填充满.   分辨率设置好了,我们现在来贴背景图.当前背景图为两张,一张是正常背景,用来显示玩的界面.一张背景图是较暗的,用来显示抽奖后烟火的效果. 在

等高列布局、水平垂直居中与置顶页脚(转载)

等高列布局 在<八种创建等高列布局>一文中详细介绍了八种创建等高列布局的不同方法.可以说这些方法足以满足你的业务需求,当然其中有一些方法略为繁琐,也有时转得人头晕.在今天这种技术环境之下,如果的业务对IE低版本依赖性不是非常强的情况之下,可以考虑一些新的方法来实现.接下来我与大家一起探讨几种新方法实现等高列布局. Flexbox方式 Flexbox是一个强大而又神奇的CSS3模块,而且到现在,也得到众开浏览器的支持.有了这个模块,可以帮助我们做很多事情,而且较之以前的方案要更简单,唯一蛋疼的是

自定义MediaController来实现修改底部布局作以及实现vedioview半屏与全屏的切换

因为直接使用系统vedioview,底部的MediaController布局有点不好看,尤其是进度条,不能实现办半屏与全屏的切换,自己网上看了下别人的资料,整理了下,做以笔记:初学者,勉强才实现这些功能,还有许多地方不明白. 看下效果:                    1,MediaController.java.直接复制下系统源码的MediaController,来进行修改,就两个地方,一个布局相关的修改,以及进度条ProgressBar的修改,然后就 是添加了半屏与全屏的切换接口. /

IOS UIView 03- 自定义 Collection View 布局

注:本人是翻译过来,并且加上本人的一点见解. 前言 UICollectionView 在 iOS6 中第一次被引入,也是 UIKit 视图类中的一颗新星.它和 UITableView 共享一套 API 设计,但也在 UITableView 上做了一些扩展.UICollectionView 最强大.同时显著超出 UITableView 的特色就是其完全灵活的布局结构.在这篇文章中,我们将会实现一个相当复杂的自定义 collection view 布局,并且顺便讨论一下这个类设计的重要部分.项目的示

ExtJs常用布局--layout详解(含实例)

序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor 另外,不常见的布局有:tab.vbox.hbox 本文所有实例代码已提供下载,下载链接:ExtJs常用布局--layout详解实例代码 简介: 最常用的边框布局--BorderLayout 最简单的布局--FitLayout 制作伸缩菜单的布局--Accordion 实现操作向导的布局--CardL

python tkinter学习——布局

目录 一.pack() 二.grid() 三.place() 四.Frame() 正文 布局 一.pack() pack()有以下几个常用属性: side padx pady ipadx ipady fill expand 1,side side属性有四个可选值:'top'.'bottom'.'left'.'right',分别表示将控件位置设在窗口顶部中心.底部中心.左边中心.右边中心.side默认值为'top'. 2,padx.pady.ipadx.ipady 这四个属性分别设置控件水平方向外