You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除构成V形的两个CSS旋转矩形之间的拼接缝隙

CSS旋转矩形拼接V形的缝隙消除方案

反复调整transform-origin没法消掉缝隙很正常,因为缝隙的核心成因根本不是旋转锚点设置错误:

  • 浏览器对旋转元素做抗锯齿渲染时,会在元素边缘自动生成半透明过渡像素,两个元素边缘对齐时,半透明像素叠在背景上就会显露出缝隙
  • 原代码里宿主div没有固定宽高为0,两个伪元素的旋转基准点实际存在亚像素级的偏移,没法完全严丝合缝对齐

原有问题代码

CSS部分

div {
  position: relative;
  left: 100px;
  display: inline-block;
  margin-left: 100px;
}
div::before {
  content: '';
  position: absolute;
  transform: rotate(-45deg);
  transform-origin: bottom right;
  width: 20px;
  height: 100px;
  background: red;
}
div::after {
  content: '';
  position: absolute;
  transform: rotate(45deg);
  transform-origin: bottom left;
  width: 20px;
  height: 100px;
  background: red;
}

HTML部分

<div></div>

修复后完整代码

div {
  position: relative;
  left: 100px;
  display: inline-block;
  margin-left: 100px;
  /* 固定宽高为0,让两个伪元素的旋转锚点完全重合 */
  width: 0;
  height: 0;
}
div::before {
  content: '';
  position: absolute;
  transform: rotate(-45deg);
  transform-origin: bottom right;
  /* 偏移1px,和对侧元素产生1px重叠抵消缝隙 */
  right: -1px;
  width: 20px;
  height: 100px;
  background: red;
  /* 关闭背面渲染,减少边缘半透明插值 */
  backface-visibility: hidden;
}
div::after {
  content: '';
  position: absolute;
  transform: rotate(45deg);
  transform-origin: bottom left;
  /* 偏移1px,和对侧元素产生1px重叠抵消缝隙 */
  left: -1px;
  width: 20px;
  height: 100px;
  background: red;
  backface-visibility: hidden;
}
<div></div>

关键调整点

  • 宿主div宽高设为0,彻底消除定位基准的偏移,保证两个伪元素的旋转锚点落在同一个像素点上
  • 给两个伪元素各加1px的反向偏移,让衔接位置产生1px的重叠,完全覆盖抗锯齿产生的半透明缝隙,不会破坏V形的等腰对称效果
  • 加backface-visibility: hidden属性,减少不同浏览器、不同DPI屏幕下的渲染差异,避免缝隙复现

内容的提问来源于stack exchange,提问作者Fred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 19:18:41