fixed和absolute js弹窗代码小结

css中position 属性规定元素的定位类型,任何元素都可以定位。绝对定位或者固定定位都会生成一个块级元素,无论 该元素原来的类型是什么。

在写弹窗的时候,我们基本就是利用position里面的fixed或者absolute来做的。首先来看下position属性有哪些属性值。

首先看absolute,定位是相对于static定位以外的第一个父元素定位的,那么一般我们在做弹窗的时候会相对于body元素来定位。

html代码

样式代码如下。

弹窗css样式
蒙板样式

接下来最重要的是,让弹窗在浏览器的中间显示,那么我们就要算出弹窗在浏览器的top和left值。

浏览器视窗宽高
给dialog设置left和top

到此一个最基本的弹窗定位就写好了。你以为好了吗?哈哈哈,这个时候发现页面有滚动条了,这个还可以吗?答案是要继续写码。有了滚动条说明页面的高度已经不单单用window的高度就可以,这个时候要加上滚动条的高度。

滚动高度

滚动条的高度加上之前的top值,就是现在的top值。当没有滚动条的时候,$(document).scrollTop()是0,现在看起来咱们的弹窗是不是完美了呢。页面够长也不害怕了。此时,产品同学过来说,我想弹窗在页面滚动的时候,跟着页面一起移动,哈哈哈,此时是不是就是fixed出场的时候了。

在刚开始的时候看到了,fixed定义就是相对于窗口定位的。那么咱们的代码就可以把浏览器滚动条的高度忽略。直接还是用

还有一种更简单的方法,那就是不用计算什么浏览器高度和宽度,直接用浏览器css中的%来自动获取,用50%来代替,加上margin-left和margin-top属性,这样就搞定。

用%来计算top和left

大家在计算的时候会被好多js里面获取高度和宽度的属性搞晕了,我上面的叙述是不是清晰了好多。以上代码都是基于jQuery,也可以原生的js来写,原理相同。希望大家看完点个赞。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 当在这一个页面上实现布局和定位有几种不同的技术。使用哪种技术,很大程序上取决于内容和目标页面,因为有很多技术比别人...
    lulu_c阅读 1,129评论 0 5
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    前端进阶之旅阅读 16,627评论 32 459
  • 一、 现在是北京时间2046年5点46分,魏华刚睁开眼,便惊出了一身冷汗… 床上躺着两个半身裸着的女人,她俩貌似昏...
    3组助教阅读 386评论 12 7
  • 作者:[美] 莫提默·J. 艾德勒/查尔斯·范多伦 ISBN:9787100040945 豆瓣评分:8.5 一句话...
    老柒的号阅读 211评论 0 0