最近写了一段 CSS 样式,虽然不难,但实现过程比较繁琐。这个效果结合了两个箭头,一个突出,一个内缩,非常适合用于步骤导航或选项卡切换等场景。样式不仅仅是静态的,还可以通过点击 click 或者 hover 事件,让它产生动态效果,提升用户体验。大家可以根据自己的需求做进一步完善和改变,比如调整箭头颜色、大小或者点击切换添加不同的动画效果等。
感兴趣的小伙伴可以试试看!
实现的效果如下:
代码如下:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.container {display: flex;width: 100%;height: 40px;flex-wrap: nowrap;padding: 0 8px 8px;background-color: #fff;border-radius: 2px;font-size: 14px;}.common {position: relative;width: 181px;height: 32px;flex: 1;line-height: 32px;text-align: center;box-sizing: border-box;}.selected {background-color: #ff7f95;color: #fff;margin-right: 4px;font-weight: 500;}.selected::before {position: absolute;z-index: 1;top: 50%;right: -4px;border-top: 18px solid transparent;border-right: 5px solid #ff7f95;margin-top: 0;content: '';transform: rotate(-180deg);}.selected::after {position: absolute;z-index: 1;top: 50%;right: -4px;border-top: 18px solid transparent;border-left: 5px solid #ff7f95;margin-top: -17px;content: '';}.noSelected {background-color: #dbdbdb;color: #5a6066;margin-left: 4px;font-size: 400;}.noSelected::before {position: absolute;z-index: 1;top: 50%;left: 0;border-top: 18px solid transparent;border-right: 5px solid #fff;margin-top: 0;content: '';transform: rotate(-180deg);}.noSelected::after {position: absolute;z-index: 1;top: 50%;left: 0;border-top: 18px solid transparent;border-left: 5px solid #fff;margin-top: -17px;content: '';}</style></head><body><div class="container"><div class="common selected">1. vue2 内容</div><div class="common noSelected">2. vue3 内容</div></div></body>
</html>
该部分代码仅实现了基础的 CSS 样式,没有涉及到动态交互。大家在尝试时,可以结合 Vue 或其他框架,实现动态的状态切换效果。