首页 > 其他分享 >chrome弧形标签页实现思路收录

chrome弧形标签页实现思路收录

时间:2023-12-12 16:12:49浏览次数:33  
标签:12px item chrome 标签 label color 收录 tab id

1.  直线圆角,通过单个伪元素的border-radius产生弧形

<template>
  <div class="tab-list">
    <div
      v-for="tab in tabs"
      :key="tab.id"
      class="tab-item"
      :class="activeTab === tab.id ? 'active' : ''"
      @click="onTab(tab.id)"
    >
      <div>{{ tab.label }}</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: [
        { id: 0, label: '' },
        { id: 1, label: '我的信息' },
        { id: 2, label: '我信' },
        { id: 3, label: '我的信' },
        { id: 4, label: '我的信息流' },
        { id: 5, label: '' },
      ],
      activeTab: 2,
    };
  },
  methods: {
    onTab(id) {
      this.activeTab = id;
    },
  },
};
</script>

<style lang="scss">
// scss
$tab-height: 52px;
$active-color: #ffffff;
$default-color: #e2e8f8;
$primary-color: blue;

.tab-list {
  display: flex;
  position: relative;
  z-index: 2;
  border-radius: 12px 12px 0 0;
  background-color: $default-color;
  overflow: hidden;
  padding: 0 80px;
  .tab-item:first-child,
  .tab-item:last-child {
    flex: none;
  }
  .tab-item:last-child::after{
    display: none;
  }
  .tab-item {
    flex: auto;
    height: $tab-height;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 14px;
    color: $primary-color;
    font-weight: 600;
    position: relative;
  }
  .tab-item.active {
    opacity: 1;
    background: #fff;
    border-radius: 12px 12px 0 0;
    box-shadow: 12px 43px 0 $active-color, -12px 43px 0 0 $active-color;
  }
  .tab-item.active::before {
    content: '';
    position: absolute;
    bottom: 0;
    width: 12px;
    height: $tab-height;
    border-bottom-right-radius: 12px;
    background: $default-color;
    left: -12px;
    z-index: 1;
  }
  .tab-item.active::after {
    content: '';
    position: absolute;
    bottom: 0;
    width: 12px;
    height: $tab-height;
    right: 6px;
    background: $default-color;
    border-bottom-left-radius: 12px;
    z-index: 1;
    right: -12px;
  }
}
</style>

详细可参考 实现tabs圆角及反圆角效果

2. 斜线圆角,通过两个相邻伪元素的border-radius和skew配合产生两个弧形

<template>
  <div class="tab-list">
    <div
      v-for="tab in tabs"
      :key="tab.id"
      class="tab-item"
      :class="activeTab === tab.id ? 'active' : ''"
      @click="onTab(tab.id)"
    >
      <div>{{ tab.label }}</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tabs: [
        { id: 0, label: '' },
        { id: 1, label: '我的信息' },
        { id: 2, label: '我信' },
        { id: 3, label: '我的信' },
        { id: 4, label: '我的信息流' },
        { id: 5, label: '' },
      ],
      activeTab: 1,
    };
  },
  methods: {
    onTab(id) {
      this.activeTab = id;
    },
  },
};
</script>

<style lang="scss">
// scss
$tab-height: 52px;
$active-color: #ffffff;
$default-color: #e2e8f8;
$primary-color: blue;

.tab-list {
  display: flex;
  position: relative;
  z-index: 2;
  border-radius: 12px 12px 0 0;
  background-color: $default-color;
  overflow: hidden;
  padding: 0 80px;
  .tab-item:first-child,
  .tab-item:last-child {
    flex: none;
  }
  .tab-item:last-child::after{
    display: none;
  }
  .tab-item {
    flex: auto;
    height: $tab-height;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 14px;
    color: $primary-color;
    font-weight: 600;
    position: relative;
  }
  .tab-item.active {
    opacity: 1;
    background: #fff;
    border-radius: 12px 12px 0 0;
    box-shadow: 24px 40px 0 $active-color, -24px 40px 0 0 $active-color;
  }
  .tab-item::before {
    content: '';
    position: absolute;
    bottom: 0;
    width: 12px;
    height: $tab-height;
    left: 6px;
    border-bottom-left-radius: 12px;
    background: $default-color;
    transform: skewX(15deg);
  }
  .tab-item.active::before {
    left: -6px;
    border-top-left-radius: 12px;
    background: $active-color;
    transform: skewX(-15deg);
  }
  .tab-item::after {
    content: '';
    position: absolute;
    bottom: 0;
    width: 12px;
    height: $tab-height;
    right: 6px;
    background: $default-color;
    border-bottom-right-radius: 12px;
    transform: skewX(-15deg);
    z-index: 1;
  }
  .tab-item.active::after {
    right: -6px;
    border-top-right-radius: 12px;
    background: $active-color;
    transform: skewX(15deg);
  }
}
</style>

详细参考此文 实现tabs圆角及反圆角效果(PLUS)

标签:12px,item,chrome,标签,label,color,收录,tab,id
From: https://www.cnblogs.com/mengff/p/17897125.html

相关文章

  • 从浏览器原理出发聊聊 Chrome 插件
    浏览器架构演进单进程浏览器时代单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、插件、JavaScript运行环境、渲染引擎和页面等。在2007年之前,市面上浏览器都是单进程的。单进程浏览器的架构很多功能模块运行在一个进程里,是导致单进程浏......
  • Chrome 浏览器开启 Json 数据格式化显示
    Chrome浏览器开启Json数据格式化显示默认格式安装扩展程序JSONView......
  • java-selenium 使用固定版本chrome浏览器和chromedriver,解决chrome自动升级无法与Chro
    1、获取Googlechrome、chromedriver地址:https://googlechromelabs.github.io/chrome-for-testing/ 2、将2个压缩包解压,存放到固定目录比如我的chromedriver位置为:D:\file\jar\chromeDriver120\chromedriver.exechrome位置为:D:\\soft\\chrome120\\chrome.exe3、代码中......
  • php css 改变宽度,img标签设置display:block属性时宽度无法设定为100%的解决办法
    本篇文章所说的内容是img标签设置display:block属性时宽度无法设定为100%的解决办法,方法很详细,有一定的参考价值,有需要的朋友可以参考一下,希望可以对你有所帮助。现象如下代码,img标签设置了display:block,尺寸宽度无法设定为100%img标签设置display:block,宽度无法100%原因替换......
  • 标签平滑
    标签平滑目录前言交叉熵损失LabelSmoothing代码实现前言LabelSmoothing(标签平滑)是一种正则化的方法,用于减轻过拟合的影响。其应用场景必须具备以下几个要素:标签必须是one-hot向量损失函数是交叉熵损失函数交叉熵损失交叉熵损失是做分类任务里常用的一种损失,公......
  • Ubuntu网络标签消失,没有网络
    问题描述:在ubuntu18.04.5中,突兀网络连接器图标消失解决方法:sudoservicenetwork-managerstopsudorm/var/lib/NetworkManager/NetworkManager.statesudoservicenetwork-managerstartsudogedit/etc/NetworkManager/NetworkManager.conf打开NetworkManager.conf文件,......
  • Java中<where>和<if>标签的组合使用
     在Java中,并没有<where>和<if>标签的组合使用。这两个标签不是Java编程语言或Java标准库的一部分,它们可能是你所使用的特定框架或库提供的自定义标签。如果你正在使用某个特定的Java框架或模板引擎(如MyBatis、Thymeleaf等),这些框架或引擎可能提供了自定义标签,使得在代码中使用......
  • robots.txt禁止收录协议写法
    1. 什么是robots.txt?robots.txt 是网站和搜索引擎的协议的纯文本文件。当一个搜索引擎蜘蛛来访问站点时,它首先爬行来检查该站点根目录下是否存在robots.txt,如果存在,根据文件内容来确定访问范围,如果没有,蜘蛛就沿着链接抓取。robots.txt 放在项目的根目录下。2. robots.txt......
  • 使用 Chrome 开发者工具分析 UI5 Web 应用的性能
    UI5是一款企业级Web前端应用的开发框架。笔者不时会收到社区朋友发起的咨询,问我如果UI5应用开发好之后,运行时出现性能问题,应该怎么办。在我们的生活中,病人向医生求助,医生会开具各种检查和化验单,病人检查完后,医生根据报告上的各种参数,进行病情诊断和开药。刑警在案发现场,通过......
  • Vue 3中的路由跳转及在新标签页中打开链接
    前言在Vue3中,VueRouter是一个常用的路由管理库,它提供了一种简单而强大的方式来实现路由跳转和导航。本文将介绍如何在Vue3中设置路由跳转,并且重点讨论如何在新标签页中打开链接。步骤一:安装VueRouter首先,我们需要安装VueRouter。在命令行中执行以下命令:npminstallvue-ro......