skew 只接受 deg 单位角度值,单参数仅影响 X 轴,双参数分别控制 X/Y 轴倾斜;需用嵌套+反向 skew 补偿文字变形,配合 transform-origin 调整倾斜基点,并注意其对布局、交互和兼容性的影响。
skew 会让元素沿 X 或 Y 轴倾斜,但直接用容易导致内容文字也被歪掉,实际项目中常需配合子元素反向 skew 补偿 —— 这是绝大多数人一开始没意识到的关键点。
skew 只接受角度值,单位固定为 deg,不支持 px、% 或无单位数字。写成 skew(30) 或 skew(30px) 都无效,浏览器会直接忽略该声明。
skew(20deg) 等价于 skew(20deg, 0deg),只影响 X 轴skew(20deg, 10deg) 分别控制 X 和 Y 轴倾斜程度skew(-15deg) 是向左上“倒”skew 作用于整个盒模型,包括子元素和文字。如果只想让容器背景看起来是平行四边形,但文字保持正立,不能只靠父级 skew。
skewX(-45deg),子元素(如 <div>)再 skewX(45deg)
transform: skewX(-45deg) skewX(45deg) 实际抵消了,要分开层级rotate 模拟倾斜 —— 视觉效果不同,且旋转后宽高计算逻辑更复杂默认以元素中心为倾斜原点,但很多场景需要从左上角或某边缘开始歪,这时必须配 transform-origin。
立即学习“前端免费学习笔记(深入)”;
transform-origin: 0 0 表示左上角为轴心,skewX(30deg) 就像把右下角往上拉transform-origin: right top 或 transform-origin: 100% 0 效果一致transform-origin: right 0(语法错误)transform-origin,它会影响所有后续 transform 函数,不只是 skew
用 skew 做视觉效果时,最常被忽略的是它对盒模型尺寸和交互区域的影响。
skewY 做垂直方向倾斜,可能让相邻元素重叠或留白,因为文档流未变position: fixed 元素上滥用 skew,某些旧版 Safari 会触发渲染异常skew + transition,IE 和部分安卓 WebView 对 skew 动画支持差,优先考虑 clip-path 替代方案真正难的不是写出 skew,而是判断什么时候不该用它 —— 比如只需要斜切背景,用 linear-gradient 配合 background-clip 更轻量;需要动态倾斜响应,则要考虑 clip-path: polygon() 的兼容性取舍。