前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你不知道的CSS fixed定位小技巧

你不知道的CSS fixed定位小技巧

原创
作者头像
喵喵侠
修改于 2025-01-13 09:01:42
修改于 2025-01-13 09:01:42
1972
举报

前言

你好,我是喵喵侠。我平时有逛网站的习惯,看到网站有一些不错的内容,就会去点赞回复评论,同时也会去体验网站的各种功能。在这过程中,我经常会发现一些产品体验问题或bug,今天正好发现了一个,找到了解决方案,还学到了知识,特此写一篇文章记录下。

故事经过

今天我逛腾讯云开发者社区的时候,看到一篇文章,觉得很不错,欣然点赞。点赞后发现文中有一处地方逻辑似乎不通,于是我打开了「某AI插件」的功能,想问问这段话的表述有没有问题。

这个插件的功能很强大 ,回答很不错,给出了专业的建议,但这不是重点,重点是,插件对话框是在右侧出现的,占据了网页的空间,导致社区的文章页面的点赞工具栏,出现了错位。如下图所示:

我第一反应这个插件引起来的,首先排查是不是插件的问题。于是我点开了其他的也有类似点赞功能网站,比方说稀土掘金,发现别的网站是正常的。

然后我又打开审查元素,进入开发者模式,仔细看了下页面的布局和结构,发现这个工具栏是和文章内容容器是同级的,而且用的是fixed布局,left是百分比计算。而插件是在网页右侧插入了一个区域,父容器是用的flex布局,导致左侧文章区域位置被挤压,而 fixed是相对视口定位 ,就看起来跑到了文章的右边,显示错位了。

点赞工具栏关键的css是这样的:

代码语言:css
AI代码解释
复制
.cdc-suspend-pill {
    position: fixed;
    top: 158px;
    left: calc(50% - 788px);
    z-index: 1;
}

而我打开“另一个技术社区”,同样用了插件,发现没问题,审查元素看,是这样的:

看到这里我就很好奇,为什么“另一个技术社区”的左侧区域也被挤压,同样fixed定位,为什么工具栏还是会贴着内容盒子,相对定位呢?直到我发现它没有写left,而是用margin-left获得了类似绝对定位的效果,关键代码如下:

代码语言:css
AI代码解释
复制
.article-suspended-panel[data-v-67be6428] {
    position: fixed;
    margin-left: -7rem;
    top: 140px;
    z-index: 2;
}

原理分析

一开始我觉得fixed定位元素不在浏览器左上角,而是在文章区域不太理解为什么,直到我问了“某AI助手”后,明白了其中的原理。

通常我们认为fixed的定位是基于浏览器视口来定位,殊不知视口定位的前提,是设置了定位方向和数值才会有的效果,比方说设置了top、left。如果没有设置,那么这个元素的位置就会在文档流中原本的位置,同时也是脱离文档流的状态,就好像在父盒子上又盖了一层一样。

这里我放上一个简单demo,可以尝试在本地或者在线运行一下,效果一下子就出来了:

代码语言:html
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fixed Positioning Demo</title>
    <style>
        .container {
            width: 80%;
            margin: 0 auto;
            background-color: #f0f0f0;
            padding: 20px;
            border: 1px solid #ccc;
        }

        .fixed-div {
            position: fixed;
            top: 0;
            background-color: #ffcc00;
            padding: 10px;
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="fixed-div">Fixed Div</div>
        <p>这是一个包含固定定位元素的父容器。</p>
        <p>固定定位元素只设置了 top: 0; 属性,没有设置 left、right 或 bottom 属性。</p>
        <p>观察固定定位元素的水平位置,它会保持在文档流中的初始位置。</p>
    </div>
</body>
</html>

效果图如下:

解决方案

看到了掘金用的不写left、设置margin-left的方式实现,那么腾讯云开发者社区也可以用同样的思路解决 。只是腾讯云开发者社区的工具栏层级写在了文章区域的外面,要实现同样效果就需要写到里面。

那么实现步骤就两个:

  1. .cdc-suspend-pill先剪切后到.cdc-global__main这个元素里面,如下图操作:
  2. 去掉left属性,加一行margin-left: -5em;
代码语言:css
AI代码解释
复制
.cdc-suspend-pill {
    position: fixed;
    top: 158px;
    /* left: calc(50% - 788px); */
    z-index: 1;
    margin-left: -5em;
}

修改后,文章浏览页默认效果图如下:

打开插件的效果图如下:

这样就搞定了!实际修改只需要改页面的结构和样式就好了!

注意:我在实际演示的过程中,发现有时候打开插件窗口会触发一个工具栏隐藏效果,我把这个去掉了,这样问题才能够更好的复现出来。问题已经反馈给官方,坐等修复。

结语

一次无意间的bug发现,引起了我的好奇心,通过一步步的探索 ,不光找到了问题产生的原因,还找到了巧妙的解决方案,巩固了以往遗漏的知识点,并整理成了文章。整个过程十分有意思,后续我会持续输出类似的文章,希望你能喜欢。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
ok 我知道了 CSS fixed定位小技巧
ok 我知道了 CSS fixed定位小技巧
111举报
嘻嘻
嘻嘻
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【前端】CSS定位
定位是网页布局的一个重要组成部分,用于控制 HTML 元素在页面中的显示位置。通过控制元素的位置,我们可以更好地实现页面的交互和美观设计。
CSDN-Z
2025/06/01
1000
【前端】CSS定位
五. css 布局之 position(定位)
包含块( containing block ) 正常情况下: 包含块就是离当前元素最近的祖先块元素,
小海怪的互联网
2020/10/26
2.2K0
CSS定位特性
CSS属性书写顺序 布局定位属性:display / position / float / clear / visibility / overflow 自身属性:width / height / margin / padding / border / background 文本属性:color / font / text-decoration / text-align / vertical-align / white-space / break 其他属性:content / cursor /border-r
小丞同学
2021/08/16
6290
css position:static 的使用
relative(相对定位) 对象不可层叠、不脱离文档流,参考自身静态位置通过top,bottom,left,right定位,并且可以通过z-index进行层次分级
tianyawhl
2019/04/04
9240
css position:static  的使用
HTML定位简介
定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样。如果理清了定位的原理,那定位会让网页实现的更加完美。
_春华秋实
2019/02/22
1.8K0
HTML定位简介
IT课程 CSS基础 028_浮动、定位、对齐
在 CSS 中,浮动是一种布局技术,通过 float 属性来使元素在页面中沿着容器的左侧或右侧浮动,使得其他元素能够环绕它。
zhaoJian.Net
2024/04/03
1890
IT课程 CSS基础 028_浮动、定位、对齐
CSS入门指南-3:定位元素
CSS 布局的核心是 position 属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位。position 属性有4个值:static、relative、absoulte、fixed,默认值为 static。
goodspeed
2020/12/22
7130
CSS入门指南-3:定位元素
[CSS] 对定位的深入理解与应用
注意:绝大多数情况下,相对定位,会与绝对定位配合使用。 **原因:**绝对定位的元素(即设置了 position: absolute; 的元素)相对于其最近的一个已定位的祖先元素进行定位。如果没有已定位的祖先元素,它将相对于浏览器窗口(即 body 元素)进行定位。 通过将父元素设置为相对定位(position: relative;),而将子元素设置为绝对定位(position: absolute;),可以使子元素的定位基于父元素,而不是整个页面。这使得布局更具可控性和可预测性。
DevKevin
2024/07/25
1830
[CSS] 对定位的深入理解与应用
CSS进阶内容—浮动和定位详解
当然如果没有学习之前的知识,可以到我的主页中查看之前的文章:秋落雨微凉 - 博客园
秋落雨微凉
2022/10/25
2.3K0
CSS进阶内容—浮动和定位详解
CSS 定位布局 - 相对、绝对、固定三种定位
文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。
Devops海洋的渔夫
2019/05/31
3.7K0
【网页前端】CSS常用布局之定位
注意:除非我们需要将元素 由其他定位模式 强制改回 标准流,否则一般情况下不用。
陶然同学
2023/02/27
1.4K0
【网页前端】CSS常用布局之定位
css 定位
position: relative 相对默认的布局位置进行定位,也就是相对自己应该在的位置来定位。
bamboo
2019/01/29
1.5K0
css  定位
CSS 布局_3 Position元素定位
我们之前已经介绍过行元素,块元素及行内块元素的属性了,能够知道它们是具有自己默认的显示方式的,即元素会按照文档流 (document flow) 的方式,自上而下,从左到右进行布局,如果你想要改变元素默认的定位行为,就需要设置 position 属性了
Nian糕
2018/08/21
9890
CSS 布局_3 Position元素定位
css属性及定位操作
font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使用它可识别的第一个值。
全栈程序员站长
2022/07/21
2.7K0
css属性及定位操作
fixed失效,css堆叠上下文问题
css堆叠上下文不知道在你的业务中有没有遇到过,前段时间搭建vuepress1.0就遇到这样的一个类似的问题,主要是用了vuepress-reco这个主题,去官方提了一个issue[1],自己提的issue最后自己找到原因了,但是还是有小伙伴遇到同样的类似问题,今天一起探讨一下css堆叠上下文的问题
Maic
2022/08/29
8020
fixed失效,css堆叠上下文问题
第3天:CSS浮动、定位、表格、表单总结
今天学的是浮动、定位、表格、表单等内容,这些是CSS中最容易混淆的知识,有许多小技巧在写代码过程中需要注意。下面是主要知识点:
半指温柔乐
2018/09/11
1.7K0
第3天:CSS浮动、定位、表格、表单总结
CSS基础-定位:static, relative, absolute, fixed
在网页布局的世界里,CSS定位是构建页面结构不可或缺的一环。四种基本的定位类型——static、relative、absolute、fixed,每种都有其独特的应用场景和行为特点。理解它们之间的差异,是每位前端开发者进阶的必经之路。本文将深入浅出地探讨这四种定位方式,分析常见问题与易错点,并提供实用的代码示例,帮助大家避免陷阱,高效布局。
Jimaks
2024/06/11
1990
CSS 定位和层叠上下文
position 属性的初始值是 static。如果把它改成其他值,就说元素就被定位了。而如果元素使用了静态定位,那么就说它未被定位。
Cellinlab
2023/05/17
1.4K0
CSS 定位和层叠上下文
浮动、定位
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
8790
前端基础-CSS定位
注意:偏移值准确的理解是“距离什么位置有多少像素” 。 如 top:100px; 距离顶部为100像素 (向下走)
cwl_java
2020/04/07
6680
前端基础-CSS定位
相关推荐
【前端】CSS定位
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档