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

CSS镜像展开容器问题:文字反转与hover抖动求解

问题求助:镜像展开容器的文本反转与抖动问题

我正在为作品集制作一款可展开的样式容器,希望右侧区域的元素能实现与左侧方向相反的镜像展开效果,但目前陷入困境:

  • 用scaleX(-1)实现镜像后,内部文本也被反转,不符合项目需求
  • 鼠标hover右侧元素时会出现奇怪的抖动现象

实现思路

  • 设计可展开容器,展开时显示内部文本,采用Grid布局定位元素
  • 因设计较复杂,使用::before和::after伪元素承载文本
  • 左侧元素运行正常,但右侧元素尝试镜像展开时出现问题

当前右侧元素的CSS代码

.main3 {
  display: block;
  grid-column-start: 3;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 2;
  transform: scaleX(-1);
}

完整代码

CSS代码

.gridContainer {
  display: grid;
  grid-template-columns: 100px auto auto 100px;
  grid-template-rows: repeat(4, auto);
  row-gap: 100px;
}

.main {
  display: block;
  grid-column-start: 2;
  grid-column-end: 3;
}

.main2 {
  display: block;
  grid-column-start: 2;
  grid-column-end: 3;
  grid-row-start: 2;
  grid-row-end: 3;
}

.main3 {
  display: block;
  grid-column-start: 3;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 2;
  transform: scaleX(-1);
}

.main3 span {
}

.main3 .background::before {
  width: 35%;
}

.test {
  z-index: 100;
  width: 400px;
  height: 100px;
  background-color: #67ade0;
  position: absolute;
  border-bottom-style: solid;
  border-color: #93cff1;
  border-width: 100px;
  clip-path: polygon(10% 0%, 5% 50%, 10% 100%, 5% 100%, 0% 50%, 5% 0%);
}

.background {
  display: inline-block;
  margin-left: 20px;
  width: 0px;
  height: 200px;
  background-color: #e1effa;
  clip-path: polygon(95% 0, 100% 50%, 95% 100%, 5% 100%, 0 50%, 5% 0);
  transition: width 6.5s, transform 5s;
  z-index: 10;
  opacity: 0.8;
}

.diamondStatic {
  margin-left: 20px;
  display: inline-block;
  position: absolute;
  height: 200px;
  width: 400px;
  background-color: #c4e0f5;
  clip-path: polygon(5% 0, 10% 50%, 5% 100%, 0% 50%);
}

.diamondAnimate {
  margin-left: -20px;
  display: inline-block;
  z-index: 100px;
  height: 200px;
  width: 400px;
  background-color: #c4e0f5;
  clip-path: polygon(5% 0, 10% 50%, 5% 100%, 0% 50%);
  transition: margin-left 6.5s, transform 5s;
}

.test:hover ~ .background {
  width: 400px;
}

.test:hover ~ .diamondAnimate {
  margin-left: -45px;
}

.background::after {
  margin-top: 10px;
  margin-left: 140px;
  position: absolute;
  content: 'Managed Services';
}

.background::before {
  width: 15%;
  margin-top: 50px;
  margin-left: 50px;
  position: absolute;
  content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla eget erat maximus, mattis ex sed, aliquet arcu. Maecenas eleifend ornare nulla, id placerat turpis pretium quis. Class aptent taciti sociosqu.';
}

.innerBtn {
  display: inline;
  position: absolute;
  margin-top: 150px;
  margin-left: 160px;
}

HTML代码

<div class="gridContainer">
  <div class="main">
    <div class="test"></div>
    <div class="diamondStatic"></div>
    <span class="background">
          <button class="innerBtn">CLICK ME</button>
        </span>
    <div class="diamondAnimate"></div>
  </div>

  <div class="main2">
    <div class="test"></div>
    <div class="diamondStatic"></div>
    <span class="background">
          <button class="innerBtn">CLICK ME</button>
        </span>
    <div class="diamondAnimate"></div>
  </div>

  <div class="main3">
    <div class="test"></div>
    <div class="diamondStatic"></div>
    <span class="background">
          <button class="innerBtn">CLICK ME</button>
        </span>
    <div class="diamondAnimate"></div>
  </div>
</div>

补充说明

我也曾尝试另一种重构方式,但遇到背景仅需在展开区域显示的难题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:15:46