为何HTML/CSS中按钮宽度外区域仍可点击?求解决方案
问题解决:按钮点击区域超出视觉宽度的修复
问题根源
跳转用的<a>标签默认是行内元素,会占据父容器的整个水平宽度;而你的.rb div虽通过max-width:800px和margin:auto实现了视觉居中,但<a>标签本身没有宽度限制。再加上你给.rb设置了pointer-events:none,点击事件完全由<a>标签触发,就导致超出div视觉宽度的区域也能触发跳转。
修复方案(二选一即可)
方案一:限制<a>标签尺寸与视觉按钮一致
给<a>标签添加宽度限制和居中样式,同时调整margin避免重复间距:
/* 新增a标签样式 */ a { display: block; max-width: 800px; margin: 50px auto 0; } /* 修改.rb样式,移除重复的margin-top */ .rb { /* 删掉 margin-top: 50px; */ display: flex; align-items: center; justify-content: center; height: 200px; background-color: black; margin-left: auto; margin-right: auto; transition: 0.25s; border-style: inset; border-color: #00ff00; width: 100%; max-width: 800px; pointer-events: none; }
方案二:让按钮div接管点击事件
移除.rb的pointer-events:none,同时调整<a>标签尺寸匹配div:
/* 修改.rb样式,移除pointer-events:none */ .rb { margin-top: 50px; display: flex; align-items: center; justify-content: center; height: 200px; background-color: black; margin-left: auto; margin-right: auto; transition: 0.25s; border-style: inset; border-color: #00ff00; width: 100%; max-width: 800px; /* 删掉 pointer-events: none; */ } /* 新增a标签样式 */ a { display: inline-block; width: 100%; max-width: 800px; margin: 0 auto; }
说明
两种方案都能让点击区域严格匹配按钮的视觉范围,方案一保留原有的pointer-events:none设置,方案二则让按钮本身响应点击,按需选择即可。
内容的提问来源于stack exchange,提问作者SuperNinja313
相关产品推荐
相关产品推荐

