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

如何实现菜单自定义异形按钮效果 附现有CSS与HTML实现代码

解决方案

核心修改逻辑如下:

  • 对transform: skewY()属性作用范围做矫正:父元素倾斜后,内部文字会同步倾斜,需要给文字设置反向的skewY抵消倾斜效果,保证文字水平显示
  • 统一按钮的尺寸、边距、对齐规则,避免按钮错位
  • 调整菜单容器的内边距,适配倾斜后按钮的视觉偏移

修改后完整代码

HTML

<body>
  <div class="container">
    <div class="menu">
      <button class="first">
        <span>Start</span>
      </button>
      <button class="numbers">
        <span>1</span>
      </button>
      <button class="numbers">
        <span>2</span>
      </button>
    </div>
    <div class="content">
    </div>
  </div>
</body>

CSS

body {
  margin: 0;
}
.container {
  display: flex;
  width: 100%;
  height: 100vh;
  overflow: hidden;
}

.menu {
  background: lightgray;
  flex: 0.1;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px 0 0 15px;
  overflow: visible;
}

.menu button {
  border: none;
  height: 50px;
  text-align: center;
  cursor: pointer;
  transform: skewY(10deg);
  background: transparent;
  position: relative;
  overflow: hidden;
}
/* 矫正文字倾斜 */
.menu button span {
  display: inline-block;
  transform: skewY(-10deg);
}
.numbers { 
  background: #79726c;
  color: #fff;
}
/* 可选:选中态效果 */
.numbers.active {
  background: #d87b4a;
}
.first {
  background: #d87b4a;
  color: #fff;
}
.content {
  flex: 1;
  background: blue;
}

补充可优化点

  • 如果不需要额外加span标签,可以用伪元素实现倾斜背景,按钮本身不做倾斜,文字自然是正的,代码会更简洁
  • 可以根据需求调整skewY的角度值,匹配设计图的倾斜程度
  • 按钮的点击热区会跟随倾斜变形,不需要额外做热区矫正

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:24:03