【动效效果】梯形层叠选项卡切换效果

本文详细介绍了如何使用jQuery和CSS3创建一个可切换的UI组件,通过改变z-index和背景颜色实现在三个选项之间的切换,同时带有动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图: 

实现代码 

<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>切换</title>

  <!-- 需要自行引入jquery -->

  <script type="text/javascript" src="{pboot:sitedomain}/skin/js/jquery-1.8.3.min.js">

</head>
<style>
  #leftabs {
    position: absolute;
    top: 18px;
    left: -32px;
  }

  #leftabs ul li {
    height: 60px;
    width: 10px;
    position: relative;
    line-height: 30px;
    padding: 30px 10px;
    background-color: #002FFD;
    clip-path: polygon(0 20%, 100% 0, 100% 100%, 0 80%);
    color: #fff;
    font-weight: bold;
    cursor: pointer;
    list-style: none;
    transition: background-color 0.3s ease;

  }

  #leftabs ul li span {
    position: relative;
    z-index: 2;
  }

  #leftabs ul :nth-child(2) {
    position: absolute;
    top: 82px;
    z-index: 98;
  }

  #leftabs ul :nth-child(3) {
    position: absolute;
    top: 170px;
    z-index: 97;
  }

  #leftabs ul li.active {
    color: #002FFD;
    background-color: #fff;
    z-index: 99;
  }
</style>
<body>
  <div id="leftabs">
        <ul>
          <li class="active tabItem" onclick="changeZIndex(this)"><span>安<br />全</span></li>
          <li class="tabItem" onclick="changeZIndex(this)"><span>供<br />应</span></li>
          <li class="tabItem" onclick="changeZIndex(this)"><span>商<br />品</li>
        </ul>
      </div>
</body>

<script type="text/javascript">

    $(function () {
      $('.news-title a').first().addClass('current')
    })
    function changeZIndex(element) {
      $(".tabItem").css("z-index", "auto");
      $(".tabItem").css("background-color", "#002FFD");
      $(".tabItem").css("color", "#fff")
      $(element).css("z-index", "100"); 
      $(element).css("background-color", "#fff")
      $(element).css("color", "#002FFD")
    }
  </script>

### 实现梯形形状的 TabControl 选项卡 #### 在 C# WinForms 中实现 在 WinForms 中,`TabControl` 的样式较为固定,要实现自定义形状如梯形效果相对复杂。一种方法是继承 `TabControl` 并重写其绘制逻辑。 ```csharp public class CustomShapeTabControl : TabControl { protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; foreach (TabPage tabPage in this.TabPages) { Rectangle rect = GetTabRect(this.SelectedIndex); // 创建路径并添加梯形区域 using(GraphicsPath path = new GraphicsPath()) { int offset = 10; // 梯形偏移量 Point[] points = { new Point(rect.Left, rect.Bottom), new Point(rect.Right - offset, rect.Top), new Point(rect.Right, rect.Top), new Point(rect.Right, rect.Bottom) }; path.AddPolygon(points); // 填充背景颜色 SolidBrush brush = new SolidBrush(tabPage.BackColor); g.FillPath(brush, path); // 绘制边框 Pen pen = new Pen(Color.Black); g.DrawPath(pen, path); } } base.OnPaint(e); } } ``` 此代码片段展示了如何通过覆盖默认绘图行为来创建具有梯形外观的标签页[^1]。 #### 在 C# WPF 中实现 WPF 提供了更为灵活的方式来自定义控件模板,因此更容易实现特殊形状的设计需求: ```xml <TabControl> <TabControl.Resources> <!-- 定义新的 TabItem 样式 --> <Style TargetType="TabItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TabItem"> <Grid> <Path Data="M0,20 L20,0 H80 L100,20 Z" Fill="{Binding Background}" Stroke="Black"/> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Panel.ZIndex" Value="99"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </TabControl.Resources> <TabItem Header="Tab 1">Content of Tab 1</TabItem> <TabItem Header="Tab 2">Content of Tab 2</TabItem> </TabControl> ``` 上述 XAML 片段使用 Path 元素定义了一个简单梯形作为每个 TabItem 的头部,并将其应用到了整个 TabControl 上[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值