关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位)

这篇具有很好参考价值的文章主要介绍了关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题: 今天在开发过程中发现元素使用 position: fixed 时位置有问题,位置跟我写的位置对不上,后面在 MDN 上面找到了答案,下面是关于 position: fixed 的描述:

fixed:
元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,容器由视口改为该祖先。

所以原因就是这个元素有父元素或者祖先元素设置了 transform、perspective、filter 或 backdrop-filter,我又进行了一个简单的测试,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>测试页面</title>
  <style>
    body{
      border: 1px solid red;
    }
    .box{
      width: 400px;
      height: 400px;
      background-color: pink;
      transform: translate(200px,200px);
    }
    .child{
      width: 200px;
      height: 200px;
      background-color: purple;
      position: fixed;
      left: 200px;
      top: 0;
    }
  </style>
</head>

<body>
  <div class="box">
    <div class="child"></div>
  </div>
</body>

</html>

结果截图如下:

关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位),vue3,css,css踩坑之旅,css,vue.js
我们可以看到,我们虽然我们设置了 child 的 top 值是0,但是他距离顶部有200px,相当于它是基于父元素做了绝对定位,那这种问题怎么解决呢?下面是解决办法:

1.父元素或祖先元素做了什么操作,我们在反过来再做一个,例如在这个例子中,父元素进行了transform: translate(200px,200px);的操作,那我们就在子元素上进行 transform: translate(-200px,-200px);的操作。
2.改变dom结构,将子元素放在body下,一般情况下·,固定定位的需求都是页面上的弹窗需要定位到浏览器中间,此时我们完全可以将这个元素放在body标签下,这样就可以避免有父元素进行了transform等操作。在 VUE3 中,提供了一个内置组件Teleport,可以将组件放在指定的父元素下,只改变渲染的DOM结构,但又不会影响组件间的逻辑关系,可以完美解决这个问题。文章来源地址https://www.toymoban.com/news/detail-609197.html

到了这里,关于关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GridView 多次更新数据后,导致notifyDataSetChanged,只更新了UI,而数据不对,点击某个Item时位置不对。

    最近在做作项目的时候使用到了GridView,需要显示的数据分为多类,例如:全部、工作、学习、社交和电商等等,当用户点击某个一级分类时,需要把这个分类下的所有数据重新设置到GridView,我每次通过adpter自定义的接口设置如下: 刚开始以为调用了notifyDataSetChanged()函数,

    2024年04月17日
    浏览(20)
  • uniapp,小程序获取定位,打开地图选择位置失败问题

    场景: 调用api报错 chooseLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json 说明: 1.以下 8 个接口需完成准入开通流程:getFuzzylocation、getLocation、onLocationChange、chooseAddress、choosePoi、chooseLocation、startLocationUpdate、startLocationUpdateBackground 首先需要开通权限

    2024年02月13日
    浏览(27)
  • GDB:遇到segfault但是没有core文件如何定位问题

    生产环境定位问题往往遇到各种限制,比如事后日志发现程序是收到SIGSEGV退出了(segment fault),但是因为: 没配置limit 存储空间不够了 其他未知原因 没有正常生成core文件,那么这会如何定位问题呢? 测试程序ctest,明显的空指针错误。 执行后: 但是没有生成core文件。

    2023年04月08日
    浏览(28)
  • css-定位position 理论

    1.1网页常见布局方式 1.标准流         1.块级元素独占一行直布局          2.行内元素/行内块元素一行显示多个 ------水平布局 2.浮动           1. 可以让原本垂直布局的 块级元素变成水平布局 3.定位         1. 可以让元素自由的摆放在网页的任意位置     

    2024年02月10日
    浏览(28)
  • 元素定位position

    static:静态定位(默认)。依据文档流定位。 relative:相对定位。以自身为基准,设置坐标(left、top、right、bottom),不脱离文档流。 absolute:绝对定位。以父元素为基准,设置坐标(left、top、right、bottom),脱离文档流。 fixed:固定定位。以浏览器窗口为基准,设置坐标(

    2024年02月05日
    浏览(25)
  • CSS Position(定位)

    position 属性指定了元素的定位类型。 position 属性的五个值: static relative fixed absolute sticky 元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法。 HTML 元素的默认值,即没有定位

    2024年02月07日
    浏览(27)
  • 5-web前端 定位position

    1、相对定位 position: relative  特点:  不脱标,占用自己原来位置      显示模式特点保持不变      设置边偏移则相对自己原来位置移动 拓展:很少单独使用相对定位,一般是与其他定位方式配合使用    参考自身原位置 2、绝对定位 position: absolute 使用场景:子级

    2024年02月08日
    浏览(25)
  • CSS基础学习--14 Position(定位)

    一、定义 position属性指定了元素的定位类型  position 属性的五个值: static relative fixed absolute sticky 元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法。 二、static 定位 HTML 元素

    2024年02月09日
    浏览(28)
  • 关于有关找寻链表结点位置问题的分析

    leetcode题目链接 关于删除链表中倒数第n个节点的问题,一种有效的方法是使用双指针技术,具体地说,是使用两个指针:左指针(L)和右指针(R)。通过这种方法,我们可以充分利用给定的位置信息(即n),以高效地找到并删除目标节点。以下是该方法的详细步骤: 初始

    2024年02月22日
    浏览(18)
  • float浮动布局大战position定位布局

    1.普通文档流布局:我们得网页内容从上往下,从左往右进行的布局,其中块元素独占一行(我们可以使用margin,padding,display,line-height去进行布局) 2.浮动布局:浮动可以使用一个元素脱离自己原本的位置,并在父级元素的内容区中向左或向右移动,直到碰到父级元素内容

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包