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

如何使用CSS让环形布局中的文本保持水平显示?

解决环形分区内文本水平对齐问题

你的12分区环形布局通过父li元素的rotate()+skewY()实现分区划分,但.text元素的固定变换导致文本无法保持水平。解决思路是针对每个分区的旋转角度,为内部文本添加反向旋转,抵消父元素的旋转影响,具体修改如下:

修改步骤

  1. 重置.text类的默认变换,移除固定旋转并改用flex布局实现居中:
.text {
  position: absolute;
  left: -100%;
  width: 200%;
  height: 200%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  /* 移除原固定的rotate和skew,改为按需单独设置 */
}
  1. 为每个分区的.text元素添加反向旋转+适配的skew,抵消父li的变换影响:
/* 第1个分区:父li旋转0deg,文本反向旋转0deg */
.circle-links li:first-child .text {
  background: green;
  transform: skewY(60deg) rotate(0deg);
}

/* 第2个分区:父li旋转30deg,文本反向旋转-30deg */
.circle-links li:nth-child(2) .text {
  background: tomato;
  transform: skewY(60deg) rotate(-30deg);
}

/* 第3个分区:父li旋转60deg,文本反向旋转-60deg */
.circle-links li:nth-child(3) .text {
  background: aqua;
  transform: skewY(60deg) rotate(-60deg);
}

/* 第4个分区:父li旋转90deg,文本反向旋转-90deg */
.circle-links li:nth-child(4) .text {
  background: yellow;
  transform: skewY(60deg) rotate(-90deg);
}

/* 第5个分区:父li旋转120deg,文本反向旋转-120deg */
.circle-links li:nth-child(5) .text {
  background: orange;
  transform: skewY(60deg) rotate(-120deg);
}

/* 第6个分区:父li旋转150deg,文本反向旋转-150deg */
.circle-links li:nth-child(6) .text {
  background: purple;
  transform: skewY(60deg) rotate(-150deg);
}

/* 第7个分区:父li旋转180deg,文本反向旋转-180deg */
.circle-links li:nth-child(7) .text {
  background: cyan;
  transform: skewY(60deg) rotate(-180deg);
}

/* 第8个分区:父li旋转210deg,文本反向旋转-210deg */
.circle-links li:nth-child(8) .text {
  background: brown;
  transform: skewY(60deg) rotate(-210deg);
}

/* 第9个分区:父li旋转240deg,文本反向旋转-240deg */
.circle-links li:nth-child(9) .text {
  background: gray;
  transform: skewY(60deg) rotate(-240deg);
}

/* 第10个分区:父li旋转270deg,文本反向旋转-270deg */
.circle-links li:nth-child(10) .text {
  background: pink;
  transform: skewY(60deg) rotate(-270deg);
}

/* 第11个分区:父li旋转300deg,文本反向旋转-300deg */
.circle-links li:nth-child(11) .text {
  background: maroon;
  transform: skewY(60deg) rotate(-300deg);
}

/* 第12个分区:父li旋转330deg,文本反向旋转-330deg */
.circle-links li:nth-child(12) .text {
  background: gold;
  transform: skewY(60deg) rotate(-330deg);
}

原理说明

每个li元素通过rotate(Ndeg) skewY(-60deg)实现扇形分区,内部.text元素通过skewY(60deg)抵消父元素的斜切变换,再通过rotate(-Ndeg)抵消父元素的旋转角度,配合flex布局让文本在分区内水平居中显示。修改后无论是文本还是后续替换的表情符号,都能保持水平状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:54:49