常见页面布局-头部固定+自定义滚动条

做了一个小demo,属于常见的页面布局应用,适用于IE7+,Chrome,safari,Firefox,Opera,其他浏览器没有测试。应该还有很多小问题,不过这里仅仅是一个小demo,如果有发现一些小问题,可以和我交流,互相学习学习。以下是所有代码:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Document</title>
  6     <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
  7     <style>
  8     html,body {
  9         height: 100%;
 10         overflow: hidden;
 11     }
 12     body {
 13         margin: 0;
 14     }
 15     #top {
 16         width: 100%;
 17         height: 80px;
 18         background: purple;
 19         position: fixed;
 20         z-index: 1;
 21     }
 22     #wrap {
 23         width: 100%;
 24         height: auto;
 25         background: #ccc;
 26         position: relative;
 27         top: 80px;
 28     }
 29     .item{
 30         width: 100%;
 31         height: 400px;
 32         margin: 0 auto;
 33         font-family: "Microsoft yahei";
 34         font-size: 100px;
 35         text-align: center;
 36         line-height: 400px;
 37         color: #fff;
 38     }
 39     .item1{
 40         background: #FFB806;
 41     }
 42     .item2 {
 43         background: #FF4E53;
 44     }
 45     .item3 {
 46         background: #3FB470;
 47     }
 48     .item4 {
 49         background: #08559D;
 50     }
 51     .item5 {
 52         background: #FEE006;
 53     }
 54     #down {
 55         width: 100%;
 56         height: 280px;
 57         background: #333;
 58     }
 59     #scroll {
 60         width: 15px;
 61         height: 100%;
 62         position: fixed;
 63         right: 0;
 64         top: 0;
 65         z-index: 100;
 66         background: url(image/scrollbg.jpg) repeat-y;
 67     }
 68     #scrollbar {
 69         width: 12px;
 70         height: 100px;
 71         background: url(image/scrollbar.png) no-repeat;
 72         position: absolute;
 73         left: 1px;
 74         top: 0;
 75     }
 76     </style>
 77     <script>
 78     window.onload = function(){
 79         /*
 80             IE8以下不支持querySelector选择器,需要处理一下IE兼容性
 81             var scroll = document.querySelector(".scroll");
 82             var scrollbar = document.querySelector(".scrollbar");
 83         */
 84
 85         var top = document.getElementById("top");
 86         var wrap = document.getElementById("wrap");
 87         var scroll = document.getElementById("scroll");
 88         var scrollbar = document.getElementById("scrollbar");
 89
 90         // 计算页面高度
 91         var topH = top.offsetHeight;    // 80
 92         var wrapH = wrap.offsetHeight;    // 2280
 93         var total = topH + wrapH;        // 2360
 94
 95         // 计算滚动条高度
 96         var scrollH = document.body.clientHeight || document.documentElement.clientHeight;    // 可视区高度
 97         var scrollbarH = scrollbar.offsetHeight;    //100
 98
 99
100         // 滚动条拖拽
101         var downY=barTop=disY=iScale=0;
102         scrollbar.onmousedown = function(event){
103
104             var e = event || window.event;
105             downY = e.clientY;
106             barTop = parseFloat(getStyle(scrollbar,‘top‘));
107
108             document.onmousemove = function(event){
109
110                 var e = event || window.event;
111                 var nowY = e.clientY;
112                 disY = nowY - downY;
113                 var rangeY = barTop + disY;
114                 if(rangeY <=0){
115                     scrollbar.style.top = 0 + ‘px‘;
116                     wrap.style.top = 80 + ‘px‘;
117                 }else if(rangeY >= scrollH-scrollbarH){
118                     scrollbar.style.top = scrollH-scrollbarH + ‘px‘;
119                 }else{
120                     scrollbar.style.top = rangeY + ‘px‘;
121                     iScale = parseFloat(getStyle(scrollbar,‘top‘))/(scrollH-scrollbarH);
122                     wrap.style.top = 80 + (80 + scrollH -total)*iScale + ‘px‘;
123                 }
124             }
125             document.onmouseup = function(){
126                 document.onmousemove = null;
127                 document.onmouseup = null;
128             }
129             return false;
130         }
131
132         // 浏览器窗口重置,需要重新计算滚动条的滚动比例和位置
133         window.onresize = function(){
134             scrollH = document.body.clientHeight || document.documentElement.clientHeight;
135             scrollbar.style.top = iScale*(scrollH-scrollbarH) + ‘px‘;
136         }
137     }
138     function getStyle(obj,attr){
139         if(obj.currentStyle){
140             return obj.currentStyle[attr];
141         }else{
142             return getComputedStyle(obj,false)[attr];
143         }
144     }
145     </script>
146 </head>
147 <body>
148     <header id="top"></header>
149     <section id="wrap">
150         <div class="item item1">item1</div>
151         <div class="item item2">item2</div>
152         <div class="item item3">item3</div>
153         <div class="item item4">item4</div>
154         <div class="item item5">item5</div>
155         <footer id="down"></footer>
156     </section>
157
158     <!--滚动条设置-->
159     <div id="scroll">
160         <div id="scrollbar"></div>
161     </div>
162 </body>
163 </html>

源文件链接:http://pan.baidu.com/s/1slMPPaX

时间: 2024-10-26 18:43:23

常见页面布局-头部固定+自定义滚动条的相关文章

常见页面布局方式(三种框架集)

frameset框架集 Frameset标签可定义一个框架集,它用来组织多个窗口(框架),每个框架有独立的html文档,在石油frameset是,不可以同时存在body标签,他和body标签是同级的. 多个框架组成了一个框架集 1 框架集标签(frameset)第一如何将窗口分割为框架 2 每个frameset 第一了一系列行货列 3 rows.columns的值规定了每行或每列占据屏幕的面积 frameset的一些属性 cols""把一个浏览器窗口按列进行切割,也就是把浏览器竖着切分

第五章 自定义字段、页面布局

在Salesforce Classic页面比较清晰,本章在Salesforce Classic模式进行操作. 一.自定义字段.自定义页面. 点击设置—自定义—潜在客户—字段,此页面可以查看潜在客户的标准字段,标准字段无法删除,如果不需要某些字段,可以不给这些字段赋值.如果潜在客户无法满足要求,可以新建自定义字段. 点击设置—自定义—潜在客户—页面布局,对于页面上潜在客户信息模块没有显示的字段,可以直接从页面的上方文本框拖到潜在客户信息模块,对于不是必要的信息可以点击减号删除. 页面布局完成之后,

CSS3与页面布局学习笔记(四)——页面布局大全

一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能如下: 1.1.1.向上移动 当多个元素同时从标准流中脱离开来时,如果前一个元素的宽度为100%宽度,后面的元素通过负边距可以实现上移.当负的边距超过自身的宽度将上移,只要没有超过自身宽度就不会上移,示例如下: <!DOCTYPE html> <html> <head> &

CSS3(四)页面布局大全

目录 一.负边距与浮动布局 1.1.负边距 1.1.1.向上移动 1.1.2.去除列表右边框 1.1.3.负边距+定位,实现水平垂直居中 1.1.4.去除列表最后一个li元素的border-bottom 1.2.双飞翼布局 1.3.多栏布局 1.3.1.栅格系统 1.3.2.多列布局 二.弹性布局(Flexbox) 三.流式布局(Fluid) 三.瀑布流布局 3.1.常见瀑布流布局网站 3.2.特点 3.3.masonry实现瀑布流布局 3.3.1.下载并引用masonry 3.3.2.准备内容

CSS3与页面布局学习总结(四)——页面布局大全

一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能如下: 1.1.1.向上移动 当多个元素同时从标准流中脱离开来时,如果前一个元素的宽度为100%宽度,后面的元素通过负边距可以实现上移.当负的边距超过自身的宽度将上移,只要没有超过自身宽度就不会上移,示例如下: <!DOCTYPE html> <html> <head> &

CSS3与页面布局学习总结——多种页面布局

一.负边距与浮动布局 1.1.负边距 所谓负边距就是margin取负值的情况,如margin:-40px:margin-left:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见用法如下: 1.1.1.向上移动 当多个元素同时从标准流中脱离开来时,如果前一个元素的宽度为100%宽度,后面的元素通过负边距可以实现上移.当负的边距超过自身的宽度将上移,只要没有超过自身宽度就不会上移,示例如下: 示例代码: <!DOCTYPE html> <html> <he

移动端页面布局的那些事儿

移动端页面布局的那些事儿 http://www.xiaoxiangzi.com/Programme/CSS/4298.html 一. viewport 什么是viewport 简单来讲,viewport就是浏览器上,用来显示网页的那一部分区域了,也就是说,浏览器的实际宽度,是和我们手机的宽度不一样的,无论你的手机宽度是320px,还是640px,在手机浏览器内部的宽度,始终会是浏览器本身的viewport.如今的浏览器,都会给自己的本身提供一个viewport的默认值,可能是980px,或者是其

网页布局之---固定布局、流动布局、弹性布局(转)

原文地址 有一个问题已经困扰网页设计师们很久了:该使用固定.流动.弹性,还是混合布局呢?它们各有优缺点.最终的决定取决于网站的可用性,单用某一种布局就想达到目的,可能没那么容易.那么,既然如此令人困惑,是否有做出正确决定的诀窍呢?考虑好几个问题,恰当地设定目标结果,你也能做出融合各方优点的成功布局设计. 为什么要争论这些?网页设计受可用性的大棒指引,而由于网站用户的多样性,已经很难做出对不同用户都有足够可用性的网站. 当设计的网站会面向众多用户时,设计师必须考虑访客之间的下列潜在差异: 屏幕分辨

将HTML页面页脚固定在页面底部(多种方法实现)

当一个HTML页面中含有较少的内容时,Web页面的footer部分随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,接下来为大家介绍下如何将页脚固定在页面底部,感兴趣的朋友可以了解下 作为一个Web的前端工作者学习者,在制作页面效果时肯定有碰到下面这种现象:当一个HTML页面中含有较少的内容时,Web页面的"footer"部分随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,让你的页面看上去很不好看,特别是现在宽屏越来越多,这种现象更是常见. 那么如何将Web页面的&q