移动端页面头部固定定位的绝对定位实现(代码示例)

本篇文章给大家带来的内容是关于移动端页面头部固定定位的绝对定位实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在移动端进行开发时,通常整个页面的头部会固定一个区域,比如下图淘宝中的头部。这个区域无论怎么划屏都是可见的。在PC端,我们可以使用position:fixed来实现。但是由于position:fixed存在一定的兼容性问题,而且移动端的视口较多,这个固定究竟是相对于哪个视口,很容易搞错。因此,通常都会使用绝对定位来代替固定定位。下面具体代码举例:

2060480083-5c3c8ec982cc6_articlex.jpg

HTML代码如下所示:

        

登录后复制

CSS代码如下所示:

            .header-box{                /*position:fixed;*/                position:absolute;                left:0;                top:0;                width:100%;                height:179px;                background:#ef3229;            }                                ul>li{                height:350px;                border-bottom: 1px solid black;            }

登录后复制

上面的html中定义了顶部固定区域和下方内容区域。顶部使用了position进行了绝对定位,设置了left为0,top为0。内容区域高度超过了可视区。

最终得到的效果如下图所示:

521871636-5c3c9196c69f3_articlex.jpg

这时候,会发现出现了滚动。滑动之后本来应该固定在顶部的区域又不见了。也就是说我们并没有实现我们想要的使用绝对定位代替固定定位。这是为什么了?这里,我们需要理解两个重要知识点:

这里的绝对定位到底是相对于谁进行定位的?

这里的滚动条到底是加在谁身上?

首先分析第一个问题:我们知道position:absolute是相对于距离最近的position值不为static的定位祖先元素进行定位的,如果没有定位的祖先元素,那么就是相对于根节点document进行定位的。那么,我们的header元素的祖先元素有body,html,document。 其中body,html的默认定位都是static。也就是说,这里最终是相对于document进行定位的。

再分析第二个问题:内容超出浏览器高度时,滚动条到底是加在谁身上。事实上这里应该是加在html元素身上的。
理解了上面两个知识点,那么我们就可以进行分析了。我们知道正是由于html元素身上出现滚动条,正是由于滚动条的滚动才会导致document超出浏览器窗口。因此我们需要首先需要做的是将html的滚动条进行禁用。

html{  overflow:hidden;}

登录后复制

虽然禁用了html的滚动条解决了使用绝对定位代替固定定位的问题,但是带来了新的问题。那就是整个页面都不再具有滚动条了。但是事实上我们是需要滚动条的,因此我们可以在body身上添加滚动条。

html{    height:100%;}body{    height:100%;    overflow:auto;}

登录后复制

由于需要将body的高度设置为浏览器的高度,而html的高度取决于浏览器高度,因此先设置html高度为浏览器高度,然后body继承自html即可。

因此最终的代码形式是:

            html{                height:100%;                overflow:hidden;  //禁用滚动条,实现相对于document的绝对定位代替固定定位。            }            body{                                height:100%;                overflow:auto;   //添加滚动条            }            ul{                margin-top:179px;                list-style: none;            }            .header-box{                /*position:fixed;*/                position:absolute;                left:0;                top:0;                width:100%;                height:179px;                background:#ef3229;            }                                ul>li{                height:350px;                border-bottom: 1px solid black;            }

登录后复制

总结:一些用到的相关知识:

html元素和body的元素的绝对定位默认值都是static。因此如果有元素找不到非static的祖先元素,那么是相对于document进行定位的。

html元素和body元素都是块级元素。默认独占一行,其宽度等于浏览器宽度。高度等于内容区域的高度,如果给高度设置了height:100%。那么它的高度是浏览器高度。

html元素默认设置了overflow:auto。在内容超出浏览器高度的时候就会出现滚动条。

以上就是移动端页面头部固定定位的绝对定位实现(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2908235.html

(0)
上一篇 2025年3月11日 03:07:15
下一篇 2025年2月19日 00:02:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Electron页内查找模块介绍(代码示例)

    本篇文章给大家带来的内容是关于electron页内查找模块介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 实现Electron app页内按关键字查找匹配文本的功能 特征 依赖于Electron的findI…

    2025年3月11日
    200
  • HTML5中WebSocket是什么意思

    一、html5中websocket是什么意思 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在…

    2025年3月11日
    200
  • html5能做什么

    HTML5 是一个新的web标准的集合,它包括全新定义的HTML标签和更为规范化的HTML标签,CSS3以及全新的javascript API接口。这些接口既能操作前端所见所得,也能操作后台输送到前台的数据,比如离线存储功能。【推荐教程:H…

    2025年3月11日
    200
  • canvas橡皮筋式线条绘图的方法介绍(代码示例)

    本篇文章给大家带来的内容是关于canvas橡皮筋式线条绘图的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 什么叫橡皮筋式 指画图时橡皮筋一样伸缩自如。。  例子如下 思路 思路很简单,只有橡皮筋式绘制…

    2025年3月11日
    200
  • 移动端H5中百度地图的click事件的介绍(代码示例)

    本篇文章给大家带来的内容是关于移动端h5中百度地图的click事件的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 根据百度地图官方解释,在移动端 H5 页面中可监听下面这 4 个事件: touchstar…

    2025年3月11日
    200
  • canvas波浪效果的实现代码

    本篇文章给大家带来的内容是关于canvas波浪效果的实现代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 基于canvas的三次贝塞尔曲线(bezierCurveTo) var WAVE_HEIGHT = 200 //波…

    编程技术 2025年3月11日
    200
  • 如何使用canvas画一个微笑的表情(代码示例)

    本篇文章给大家带来的内容是关于如何使用canvas画一个微笑的表情(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 实习期间让我用canvas画一个表情,比较简单,话不多说直接上代码: 你的浏览器居然不支持Can…

    2025年3月11日
    200
  • Canvas绘制出时钟的代码示例

    本篇文章给大家带来的内容是关于canvas绘制出时钟的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 完整代码: Document div { text-align: center; margin-top: 250…

    编程技术 2025年3月11日
    200
  • HTML5 Canvas绘图之drawImage() 方法的详细介绍(代码示例)

    本篇文章给大家带来的内容是关于html5 canvas绘图之drawimage() 方法的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 是一个新的HTML元素,这个元素可以被Script语言(通常是J…

    2025年3月11日 编程技术
    200
  • HTML5 Web Worker的介绍(附示例)

    本篇文章给大家带来的内容是关于HTML5 Web Worker的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 浏览器中的Web Worker 背景介绍 我们都知道javascript这个语言在执行的时候是采…

    2025年3月11日
    200

发表回复

登录后才能评论