css 二维码始终显示在按钮的正下方,并且根据不同的屏幕分辨率自动调整位置

一、需求

"求职入口" 下面的浮窗位置在其正下方,并且浏览器分辨的改变(拖动浏览器),位置依旧在最下方

二、实现

html 复制代码
<div class="btn_box">
	<div class="btn_link id="js-apply">求职入口
		<div class="from-icon-ma">
			<img src="wxcode.png?ver=20241122001" class="wx">
		</div>
	</div>
	<a href="javascript:void(0);" class="onTraial">申请试用</a>
</div>
html 复制代码
.btn_box {
    float: right;
    height: 65px;
    display: flex;
    align-items: center;
}
html 复制代码
#js-apply {
    cursor: pointer;
    position: relative;
}
html 复制代码
#js-apply .from-icon-ma {
    width: 170px;
    height: 170px;
    position: absolute;
    top: 47px;
    left: 50%;
    transform: translateX(-50%);
    display: none;
    padding: 20px;
    border: 1px solid #ebeef5;
    border-radius: 10px;
    background-color: #FFFFFF;
    z-index: 2000;
    box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.2);
}

关键点:

1、父级#js-apply,设置了position: relative;

  • position: relative 的作用

    ✅ 为子元素.from-icon-ma的 absolute绝对 定位的基准点

    子元素 .from-icon-ma 设置了 position: absolute;,这意味着它的定位是相对于最近的非 static(默认定位)的祖先元素计算的。

    • 如果父级#js-apply没有 position: relative(或 fixed/absolute/sticky),那么 .from-icon-ma 的定位会一直向上查找,可能相对于 <body> 或某个更高层级的容器,导致定位错误。

    • position: relative 的作用就是让子元素的 top/left/right/bottom 基于这个父级计算,而不是相对于整个页面

  • ✅ 确保 left: 50%transform: translateX(-50%) 的计算基于父级,而不是整个页面

    • transform: translateX(-50%) 是 CSS 中用于水平移动元素的变换属性,它能让元素向左移动自身宽度的一半。这个技巧在居中定位、响应式布局等方面非常有用。

    复制代码
    left: 50%;            /* 移动到父容器中间 */
    • left: 50%;移动到父容器中间,左边缘会到父容器中间的位置,如下图
    • 再使用transform: translateX(-50%)让元素向左移动自身宽度的一半,这样就到正下方了

    ✅ 保持父级元素仍占据正常文档流,不影响其他布局

  • 保持按钮原有布局不受影响

    • position: relative 不会使元素脱离文档流 (不像 absolutefixed),所以 #js-ai-apply 仍然占据原来的空间,不影响其他元素的布局。

    • 如果去掉 position: relative,子元素的 absolute 定位可能会破坏整体布局,导致按钮位置异常。

三、relative + absolute 是经典组合

例如:导航菜单、下拉框、Tooltip 提示框等,都需要 relative 父级 + absolute 子级。

相关推荐
ObjectX前端实验室11 分钟前
从零到一:系统化掌握大模型应用开发【目录】
前端·llm·agent
guoyp212617 分钟前
前端实验(二)模板语法
前端·vue.js
葡萄城技术团队23 分钟前
Excel 转在线协作难题破解:SpreadJS 纯前端表格控件的技术方案与实践
前端·excel
我的xiaodoujiao23 分钟前
Windows系统Web UI自动化测试学习系列3--浏览器驱动下载使用
前端·windows·测试工具·ui
一只小风华~26 分钟前
学习笔记:Vue Router 中的嵌套路由详解[特殊字符]概述
前端·javascript·vue.js
泻水置平地26 分钟前
若依前后端分离版实现前端国际化步骤
前端
Villiam_AY28 分钟前
从后端到react框架
前端·react.js·前端框架
CodeCraft Studio31 分钟前
全球知名的Java Web开发平台Vaadin上线慧都网
java·开发语言·前端·vaadin·java开发框架·java全栈开发·java ui 框架
一只小风华~38 分钟前
Vue Router 命名路由学习笔记
前端·javascript·vue.js·笔记·学习·ecmascript
我是华为OD~HR~栗栗呀42 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试