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

写在前面的话:

  在 w3cplus 上可以看到相关学习资料,本文就是参考了这篇,写下的笔记~,原文 链接

五、css sticky footers布局

  一般来说,常会遇到这样的布局:在一个页面的内容不确定的情况下,始终得实现 footer 部分位于页面的底部~

实现这种布局的方式有很多,据说css sticky footers 是一种兼容性最好的一种布局方式~

然而最好的方式是:flex 布局~~~

好用的写在前面,参考原文

 1 <!DOCTYPE html>
 2 <head>
 3     <title>底部不固定时</title>
 4 </head>
 5 <style>
 6     body {margin: 0; padding: 0;}
 7     body { display: flex; flex-flow: column; min-height: 100vh;}
 8     main { flex: 1; }
 9
10     /* 加入以下样式以示区分 */
11     header{background: red;}
12     main{background: yellow;}
13     footer{background: red;}
14 </style>
15 <body>
16     <header>
17         <h1>Site name</h1>
18     </header>
19     <main>
20         <p>Bacon Ipsum dolor sit amet... <!-- Filler text from baconipsum.com --></p>
21         <br>
22         <br>
23         <br>
24     </main>
25     <footer>
26         <p>? 2015 No rights reserved.</p> <p>Made with ? by an anonymous pastafarian.</p>
27     </footer>
28 </body>
29 </html>

  效果图:

    

好简洁~~~

除此之外还有一种 2列的 flex 布局

 sticky footers 方案,通常都有其固定的“格式”,一般来说,套路是这样的:

  情况一:当底部是固定高度,可参考如下方法(来自于视频当中的方法):  

 1 <!DOCTYPE html>
 2 <head>
 3     <title>底部固定时</title>
 4 </head>
 5 <style>
 6     html, body, .wrap, .content-box, .content{
 7         margin: 0;
 8         padding: 0;
 9     }
10     .wrap {
11         position: fixed;    /* 这一属性非常重要 */
12         top: 0;
13         left: 0;
14         width: 100%;
15         height: 100%;
16         overflow: auto;
17     }
18     .content-box {
19         min-height: 100%;
20         clear: both;     /* 通常是加 clearfix 类的,但貌似删掉这句也不影响 */
21     }
22     .content{
23         padding-bottom: 100px; /* bottom = -footer height */
24     }
25     footer {
26         position: relative;
27         left: 0;
28         bottom: 0;
29         height: 100px;    /* footer height 为100px ,宽度随意 */
30         margin-top: -100px;  /* 若是想要水平居中的话可以使用 margin: -100px auto 0; */
31         clear: both;    /* 貌似删掉这句也不影响 */
32     }
33     /* 为了方便观察,加入以下背景颜色以示区分*/
34     .wrap{background: gray;}
35     header{background: red;}
36     article{background: yellow;}
37     footer{background: red;}
38 </style>
39 <body>
40     <div class="wrap">
41         <div class="content-box">
42             <div class="content">
43                 <!-- 这是内容 -->
44                 <header>顶部</header>
45                 <article>
46                     主体部分
47                     <br>
48                     <br>
49                     <br>
50                     <br>
51                     <br>
52                     <br>
53                     <br>
54                     <br>
55                     <br>
56                     <br>
57                     <br>
58                 </article>
59             </div>
60         </div>
61
62         <footer>底部</footer>
63     </div>
64 </body>
65 </html>

  实现图:

      

  情况二:当底部是不定高度时,可参考如下方法(使用 display:table)布局:

    说明:参考原文:原文链接   ,原作者还提供了一种2列的 flex 布局

 1 <!DOCTYPE html>
 2 <head>
 3     <title>底部不固定时</title>
 4 </head>
 5 <style>
 6     html, body, #wrap {margin:0;    padding:0;    height:100%;}
 7     #wrap {display:table;width:100%}
 8     /* if ie7 support is needed then set height of #wrap and header and footer to auto in CC‘s and just let it have a normal layout (or: *+html #wrap{height:auto})*/
 9     .content { background:#ccc; }
10     header {    background:#999;    color:#fff;    text-align:center;    padding:10px 0}
11     header, .footer, main { display:block}/* ie7 and under*/
12     header, .footer, main { display:table-row }
13     /* height 1px on the header and footer is the sticky footer technique */
14     header, .footer{height:1px}
15     h1{padding:10px;margin:0;}
16     .footer {background:#999;    color:#fff;    text-align:center;}
17     .footer p {    margin:0;    padding:10px}
18 </style>
19 <body>
20     <!-- html5 shiv for IE8 and under -->
21     <!--[if lt IE 9]>
22       <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
23     <![endif]-->
24     <!-- If you aren‘t using jquery you can use the body element instead (body{width:100%;display:table;height:100%})of the #wrap div as jquery has a bug (
25     http://bugs.jquery.com/ticket/7261) in webkit when the body is display:table. -->
26
27     <div id="wrap">
28         <header>
29             <h1>Fluid Height Sticky footer simple - IE8+ (no hacks )</h1>
30         </header>
31         <main class="content">内容部分
32         <br>
33         <br>
34         <br>
35         <br>
36         <br>
37         <br>
38         <br>
39         <br>
40         <br>
41         </main>
42           <footer class="footer">
43               <p>
44                   Sticky footer - <a target="blank" href="http://codepen.io/paulobrien/full/rxyEMN/">See flexbox version with 2 columns</a>
45               </p>
46           </footer>
47     </div>
48 </body>
49 </html>

 1 <!DOCTYPE html>
 2 <head>
 3     <title>底部不固定时</title>
 4 </head>
 5 <style>
 6     html, body, #wrap { margin: 0; padding: 0; }
 7
 8     /* 必需的样式 */
 9     html, body, #wrap { width: 100%; height: 100%; display: table; }
10     /* if ie7 support is needed then set height of #wrap and header and footer to auto in CC‘s and just let it have a normal layout (or: *+html #wrap{height:auto})*/
11
12     header, .footer, main { display:block; }/* ie7 and under*/
13     header, .footer, main { display:table-row; }
14     /* height 1px on the header and footer is the sticky footer technique */
15     header, .footer{height: 1px;}
16
17     /* 加入以下样式以示区分 */
18     header { background: #999; color: #fff; text-align: center; padding:10px 0; }
19     header h1{padding: 10px;margin: 0; }
20     .content { background: #ccc; }
21     .footer {background: #999; color: #fff; text-align: center; }
22     .footer p {    margin: 0; padding: 10px; }
23 </style>
24 <body>
25     <!-- html5 shiv for IE8 and under -->
26     <!--[if lt IE 9]>
27       <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
28     <![endif]-->
29     <!-- If you aren‘t using jquery you can use the body element instead (body{width:100%;display:table;height:100%})of the #wrap div as jquery has a bug (
30     http://bugs.jquery.com/ticket/7261) in webkit when the body is display:table. -->
31
32     <div id="wrap">
33         <header>
34             <h1>Fluid Height Sticky footer simple - IE8+ (no hacks )</h1>
35         </header>
36         <main class="content">内容部分
37         <br>
38         <br>
39         <br>
40         <br>
41         <br>
42         </main>
43           <footer class="footer">
44               <p>
45                   Sticky footer - <a target="blank" href="http://codepen.io/paulobrien/full/rxyEMN/">See flexbox version with 2 columns</a>
46               </p>
47           </footer>
48     </div>
49 </body>
50 </html>

在原代码的基础上整理出了必须写的,和不必须写的部分

   效果如图:

      

      

  

时间: 2024-10-19 00:26:46

初试 vue2.0——5.项目开发_css sticky footers布局的相关文章

初试 vue2.0——9.项目开发_better-scroll 实现移动端滑动2

写在前面的话: 上一篇文章实现了滑动效果,这部分来试试左右联动效果的实现方法吧 九.better-scroll + vue2.0 实现移动端滑动2--左右联动 效果:滑动右侧时,左侧也能有相应的变化:点击左侧时,右侧也能自动定位到相应的位置. 如下图所示界面,左侧为分栏,右侧为分栏详情. 滑动右边使左边联动的大概的思路: 1)要知道右侧的列表中,每一个分栏所占的高度,存进一个数组中. 2)实现左边联动,则必须要监控 "scroll"事件,获取其高度 3)将scroll 的高度与右侧分栏

初试 vue2.0——3.项目开发之布局说明

写在前面的话: 不说了,上手吧~! 三.布局说明 其实都是按照设计稿来的,但是与之前的静态页面不同的是,这里的页面数据,凡是可以变更的,都是在后台数据中得到的,所以这里很有必要  把代码贴出来(原理嘛,唉,目前我自己也不太明白,还是不要误导大家了~) 上一篇说道,header.vue中要用到 app.vue的数据时,需要做的,这里就不重复了. 强调一下以下问题,不分先后顺序: 1)出现在文中的内容处:<span>{{ seller.xxx}} </span> 2)被绑定在某个元素的

百度地图V2.0实践项目开发工具类bmap.util.js V1.4

/** * 百度地图使用工具类-v2.0(大眾版) * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email [email protected] * @company KWT.Shenzhen.Inc.com * @notice 有些功能需要加入外部JS库才能使用,另外还需要申请地图JS key . * 申请地址:http://developer.baidu.com/map/apply-key.ht

Vue2.0 全家桶开发的网页应用(参照吾记APP)

github链接 借鉴吾记APP,使用 vue2.0+vue-router+vuex 为主要技术栈,elementui做为ui框架,多模块 spa 模式,webpack2.0 负责模块打包,gulp 负责处理静态资源打包.压缩,欢迎打赏star!!! 安利一下 吾记前端构建流程 本地环境准备 安装node: * https://nodejs.org/en/download/ ("node": ">=6.0",对应需要升级node-sass,不然使用不了!) 配

Vue2.0 实战项目(一) ——安装vue.cli

1.打开Vue脚手架的github地址:https://github.com/vuejs/vue-cli,在README查看如何安装 2.通过npm安装vue $ npm install -g vue-cli 3.通过webpack安装 $ vue init webpack myProjectName 4.切换到创建的项目目录,然后安装依赖文件 npm install

Vue2.0 实战项目(四) Vue-router

Vue-router 本次实战项目所使用的Vue-router版本是2.3.1 首先在main.js中引入Vue-router, import Vue from 'vue'; import Router from 'vue-router'; //如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能: //如果使用全局的 script 标签,则无须如此(手动安装). Vue.use(Router); //定义路由 const routes = [ {path: '/go

Vue2.0 实战项目(五) 组件间通信的方法

Vue组件之间通信分为三种情况:父组件向子组件通信.子组件向父组件通信.兄弟组件间通信. 一.父组件向子组件通信 通过props可以将值传递给子组件 <!-- 父组件 --><template> <div id="app"> <!-- 父子组件间通信 --> <child :message="toChildMsg"></child> </div> </template>

Vue2.0 实战项目(二) 分析Vue如何运行

项目创建成功后在浏览器中打开项目. 进入页面首先加载index.html和main.js文件.. main.js文件中给id="app"的div创建一个Vue的实例,该实例中有一个名叫"APP"的组件,该组件通过vue-router将Hello.vue中的模板注入到App.vue的模板中. index.html main.js App.vue router文件夹下的index.js 最后就是Hello.vue

带你入门Vue2.0及案例开发 开发数字产品电商平台+源码

课程目录: 第1章 课程简介 讲解课程安排,面象人群,以及对课程的项目做了效果演示. 第2章 Vue简介 对vue一些最基础的知识做了讲解:实例对象.vue组件以及vue的一些相关概念. 第3章 功能接口(1) 对文本渲染v-html.v-text.列表渲染 v-for 数组,对象,子组件:列表数据的同步更新方法:vue标签属性和条件渲染:事件绑定-内置事件绑定.自定义事件绑定:表单事件绑定:计算属性和数据监听等进行了讲解. 第4章 功能接口(2) 对组件之间通信:过渡动画:css实现过渡动画: