附上一篇文章:梯形tab按钮-基于clip-path path函数实现 - JSRUN.NET
他这个区别在于,收尾两侧都是直角的,如图
下面这个是圆角:
思路:
代码如下:
<template> <div class="wrap"> <div class="tabs"> <div v-for="index in 3" :key="index" class="box"> <div class="tab" :class="{ active: activeIndex == index }" @click="onTabClick(index)"> {{ '标签' + index }} </div> </div> </div> <div class="content-wrap"></div> </div> </template> <script> export default { data() { return { activeIndex: -1, tabList: [ { id: 1, label: '数据真短' }, { id: 21, label: '数据报告' }, { id: 31, label: '数据展示' } ] }; }, methods: { onTabClick(val) { this.activeIndex = val; } } }; </script> <style lang="scss"> .wrap { background-color: #eee; width: 620px; margin: 0 auto; padding: 10px; box-sizing: border-box; } .tabs { display: flex; width: 100%; overflow: hidden; border-radius: 8px 8px 0 0; background: linear-gradient(#cdd9fe, #e2e9fd); .box { width: 200px; height: 50px; } } .tab { width: 100px; height: 50px; margin: 0 auto; cursor: pointer; position: relative; text-align: center; line-height: 50px; } .tab.active { background-color: #fff; color: #4185ef; } .tab.active:before { content: ''; position: absolute; top: 0; left: -50px; height: 100%; width: 50px; z-index: 2; background-color: #fff; clip-path: path('M 50,0 C 25,0 25,50 0,50 L 50,50 Z'); } .tab.active:after { content: ''; position: absolute; top: 0; right: -50px; height: 100%; width: 50px; z-index: 2; background-color: #fff; clip-path: path('M 0,0 C 25,0 25,50 50,50 L 0, 50 Z'); } .content-wrap { min-height: 200px; background-color: #fff; } </style>
复制
最后:附上一个CSS实现的另一种方法
实现梯形圆角tab - 掘金
上面方法可更改为这种情况:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>梯形tab按钮-基于clip-path path函数实现</title> <style> .wrap { background-color: #eee; width: 375px; margin: 0 auto; padding: 10px; box-sizing: border-box; background: linear-gradient(#cdd9fe, #e2e9fd); position: relative; } .tabs { display: flex; justify-content: space-between; width: 100%; overflow: hidden; border-radius: 8px 8px 0 0; } .wrap .btn { width: 130px; height: 90px; background: pink; text-align: center; line-height: 50px; border-radius: 20px 20px 0px 0px; position: absolute; right: 10px; top: 10px; z-index: 0; } .tab { flex: 0 0 200px; height: 50px; cursor: pointer; position: relative; text-align: center; line-height: 50px; } .tab.active { background-color: #fff; color: #4185ef; } .tab.active:after { content: ""; position: absolute; top: 0; right: -50px; height: 100%; width: 50px; z-index: 2; background-color: #fff; clip-path: path("M 0,0 C 25,0 25,50 50,50 L 0, 50 Z"); } .content-wrap { min-height: 200px; background: #fff; border-radius: 0px 20px 0px 0px; position: relative; z-index: 1; } </style> </head> <body> <div class="wrap"> <div class="tabs"> <div class="tab active">标签1</div> <div class="btn">福利</div> </div> <div class="content-wrap"></div> </div> </body> </html>
复制