CSS:导航栏三角箭头

news2024/12/25 20:46:34

 用CSS实现导航流程图的样式。可根据自己的需求进行修改,代码精略的写了一下。

注:场景一和场景二在分辨率比较低的情况下会有一个1px的缝隙不太优雅,自行处理。有个方法是直接在每个外面包一个DIV,用动态样式设置底色。

场景一、实现效果图的导航栏

代码部分:

/** 组件:步骤条样式 */
const StepModel = (list: any) => {
  return (
    <>
      <div className={styles.step}>
        {list.map((item: any) => {
          return (
            <div
              className={`${styles.stepMenu} ${
                item.success ? styles.successText : styles.defaultText
              } ${item.status ? styles.stepMenuActive : ''}`}
            >
              {item.success ? (
                <>
                  <div className={`${styles.icon} ${styles.iconSuccess}`}>
                    <img src={require(`@/assets/imgs/success.png`)} alt="" />
                  </div>
                </>
              ) : (
                <>
                  <img
                    className={styles.icon}
                    src={require(`@/assets/imgs/${
                      item.activeIcon ? item.activeIcon : item.icon
                    }.png`)}
                    alt=""
                  />
                </>
              )}
              {item.name}
            </div>
          );
        })}
      </div>
    </>
  );
};

/** 组件样式 */
.step {
  width: 100%;
  height: 32px;
  margin-top: 8px;
  font-size: 12px;
  font-weight: 400;
  display: flex;
  justify-content: space-between;
  filter: drop-shadow(-1px 1px 9px rgba(8, 38, 55, 0.1));
  .successText {
    color: #222222;
  }
  .defaultText {
    color: #788295;
  }
  .stepMenu {
    padding: 0px 10px 0 30px;
    line-height: 32px;
    background: white;
    display: flex;
    align-items: center;
    position: relative;
    flex-basis: calc((100%) / 5);
    .icon {
      width: 16px;
      height: 16px;
      margin-right: 8px;
    }
    .iconSuccess {
      background: #00b864;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
  }
  /** 箭头样式 */
  .stepMenu:after {
    content: '';
    display: block;
    position: absolute;
    right: -11px;
    top: 5px;
    z-index: 10;
    border-left: 15px solid white;
    border-top: 7px solid white;
    border-right: 7px solid transparent;
    border-bottom: 15px solid transparent;
    transform: rotate(135deg);
    border-top-left-radius: 6px;
    filter: drop-shadow(-3px -4px 2px rgba(8, 38, 55, 0.1));
  }
  /** 选中样式 */
  .stepMenuActive {
    color: #fff;
    background: linear-gradient(to right, #60c9fc, #296be8);
    font-weight: 700;
  }
  /** 选中样式:箭头 */
  .stepMenuActive:after {
    border-left: 16px solid #296be8;
    border-top: 7px solid #296be8;
    border-right: 7px solid transparent;
    border-bottom: 16px solid transparent;
  }
  /** first 样式加圆角 */
  .stepMenu:first-child {
    border-radius: 4px 0 0 4px;
    padding-left: 18px;
  }
  /** last 样式加圆角 */
  .stepMenu:last-child {
    border-radius: 0px 4px 4px 0px;
    padding-right: 18px;
  }
  .stepMenu:last-child:after {
    display: none;
  }
}

场景二:实现效果图

效果图:

代码:直接引入的在线JQ

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
    <style>
      body {
        padding: 50px 20px 0 20px;
      }
      .step {
        width: 100%;
        height: 32px;
        margin-top: 8px;
        font-size: 12px;
        font-weight: 400;
        display: flex;
        justify-content: space-around;
      }

      .step > div {
        padding: 0px 10px 0 30px;
        line-height: 32px;
        background: #dceefe;
        display: inline-block;
        color: #1e9fff /*#50abe4*/;
        position: relative;
        width: 16%;
      }

      .step div:after {
        content: "";
        display: block;
        border-top: 16px solid transparent;
        border-bottom: 16px solid transparent;
        border-left: 17px solid #dceefe;
        position: absolute;
        right: -17px;
        top: 0;
      }

      .step div:after {
        content: "";
        display: block;
        border-top: 16px solid transparent;
        border-bottom: 16px solid transparent;
        border-left: 17px solid #dceefe;
        position: absolute;
        right: -17px;
        top: 0;
        z-index: 10;
      }

      .step div:before {
        content: "";
        display: block;
        border-top: 16px solid #dceefe;
        border-bottom: 16px solid #dceefe;
        border-left: 17px solid #fff;
        position: absolute;
        left: 0px;
        top: 0;
      }

      .step div:first-child {
        border-radius: 4px 0 0 4px;
        padding-left: 18px;
      }

      .step div:last-child {
        border-radius: 0px 4px 4px 0px;
        padding-right: 18px;
      }

      .step div:first-child:before {
        display: none;
      }

      .step div:last-child:after {
        display: none;
      }

      .step div.active {
        background: #1e9fff;
        color: #fff;
      }

      .step div.active:after {
        border-left-color: #1e9fff;
      }

      .step div.active:before {
        border-top: 16px solid #1e9fff;
        border-bottom: 16px solid #1e9fff;
      }
    </style>
  </head>
  <body>
    <div class="step">
      <div class="active">第一步</div>
      <div>第二步</div>
      <div>第三步</div>
      <div>第四步</div>
      <div>第五步</div>
    </div>
    <script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></script>
    <script type="text/javascript">
      $(function () {
        gotoStep(2);
      });

      function gotoStep(step) {
        $(".step div").removeClass("active"); // 移除所有 div 的 active 类
        $(".step div")
          .eq(step - 1)
          .addClass("active"); // 给指定索引的 div 添加 active 类
      }
    </script>
  </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2240437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python系列】浅析流式模式:基于 SSE 的实时响应体验

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python3.11.9+selenium,选择证书用多线程+键盘enter解决

Python3.11.9+selenium,选择证书用多线程+键盘enter解决 1、遇到问题:弹出证书选择,无法点击确定 import pyautogui pyautogui.press(enter) 键盘enter也无法点击 2、解决办法:用多线程解决同时执行click链接和Enter点击证书的确定 1、点击操作 # # 通过文本链接文本…

前端开发快速进行 Mock 数据的方法

前端开发快速进行 Mock 数据的方法 在前端开发中&#xff0c;模拟数据&#xff08;Mock Data&#xff09;是不可或缺的一部分&#xff0c;它可以帮助开发者在没有后端接口的情况下快速推进项目进度。然而&#xff0c;在使用如 Mock.js 这样的工具时&#xff0c;开发者可能会遇…

Unity学习---IL2CPP打包时可能遇到的问题

写这篇主要是怕自己之后打包的时候出问题不知道怎么搞&#xff0c;所以记录一下。 问题一&#xff1a;类型裁剪 IL2CPP打包后会自动对Unity工程的dll进行裁剪&#xff0c;将代码中没有引用到的类型裁剪掉。特别是通过反射等方式调用一些类的时候&#xff0c;很容易出问题。 …

Unity学习笔记(4):人物和基本组件

文章目录 前言开发环境新增角色添加组件RigidBody 2D全局项目设置Edit 给地图添加碰撞体 总结 前言 今天不加班&#xff0c;有空闲时间。争取一天学一课&#xff0c;养成习惯 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶&#xff…

vue3使用element-plus,树组件el-tree增加引导线

vue3使用element-plus&#xff0c;树组件el-tree增加引导线 vue3项目element-plus&#xff0c;树组件el-tree增加引导线 element-plus组件库的el-tree样式 因为element的样式不满足当前的的需求&#xff0c;UI图&#xff0c;所以对el-tree进行增加了引导线 修改样式如下&am…

比ChatGPT更酷的AI工具

相较于寻找比ChatGPT更酷的AI工具&#xff0c;这听起来似乎是个挑战&#xff0c;因为ChatGPT已经以它强大的综合性能在AI界大名鼎鼎。然而&#xff0c;每个工具都有其独特的优势&#xff0c;特别是在特定的应用场景下&#xff0c;其他AI工具可能会展现出与ChatGPT不同的魅力。接…

微服务day08

Elasticsearch 需要安装elasticsearch和Kibana&#xff0c;应为Kibana中有一套控制台可以方便的进行操作。 安装elasticsearch 使用docker命令安装&#xff1a; docker run -d \ --name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \ //设置他的运行内存空间&#x…

微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?

今天咱来聊聊前阵子第十届GitHub开发者大会上发布的AI无代码编程平台GitHub Spark和国产的AI原生无代码工具CodeFlying比起来有没有什么说法。 首先说GitHub Spark这个产品截止到目前为止都很低调呀&#xff0c;甚至没有引起国外主流媒体的广泛关注。 有可能是因为大家都被…

设计模式:工厂方法模式和策略模式

工厂方法模式 什么是开闭原则? 开闭原则是扩展开发,对修改关闭 简单工厂(不是设计模式而是一种编程的习惯) 有三个角色 抽象产品:定义了产品的规范,描述了产品的特性和功能.具体产品:实现或者继承抽象产品的子类具体工厂:提供了创建产品的方法,调用者通过该方法获取产品 实…

docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled

无数次的拉镜像让人崩溃&#xff1a; rootnode11:~/ragflow/docker# more rag.sh #export HTTP_PROXYhttp://192.168.207.127:7890 #export HTTPS_PROXYhttp://192.168.207.127:7890 #export NO_PROXYlocalhost,127.0.0.1,.aliyun.com docker compose -f docker-compose-gpu-C…

【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)

#IEEE出版|EI稳定检索#主讲嘉宾阵容强大&#xff01;多位外籍专家出席报告 2024健康大数据与智能医疗国际会议&#xff08;ICHIH 2024&#xff09;2024 International Conference on Health Big Data and Intelligent Healthcare 会议简介 2024健康大数据与智能医疗国际会议…

字符串处理指南:Air780E软件的全新视角

今天我会把 Air780E软件的字符串处理详细解析&#xff0c;指南如下&#xff1a; 1、Lua字符串介绍 关于字符串&#xff0c;Lua提供了一些灵活且强大的功能&#xff0c;一些入门知识如下&#xff1a; 1.1 字符串定义 在Lua中&#xff0c;字符串可以用单引号或双引号"来定…

【MySQL 保姆级教学】事务的隔离级别(详细)--下(13)

事务的隔离级别 1. 如何理解事务的隔离性2. 事务隔离级别的分类3. 查看和设置事务隔离级别3.1 全局和会话隔离级别3.2 查看和设置隔离级别 4. 事务隔离级别的演示4.1 读未提交&#xff08;Read Uncommitted&#xff09;4.2 读已提交&#xff08;Read Committed&#xff09;4.3 …

再见 阿里巴巴EasyExcel替代品EasyExcel-Plus即将诞生

最近阿里发布公告通知&#xff0c;停止对EasyExcel 更新和维护&#xff0c;EasyExcel 是一款知名的 Java Excel 工具库&#xff0c;由阿里巴巴开源&#xff0c;作者是玉霄&#xff0c;在 GitHub 上有 30k stars、7.5k forks。 据了解&#xff0c;EasyExcel作者玉霄)去年已经从…

Acrobat Pro DC 2023(pdf免费转化word)

所在位置 通过网盘分享的文件&#xff1a;Acrobat Pro DC 2023(64bit).tar 链接: https://pan.baidu.com/s/1_m8TT1rHTtp5YnU8F0QGXQ 提取码: 1234 --来自百度网盘超级会员v4的分享 安装流程 打开安装所在位置 进入安装程序 找到安装程序 进入后点击自定义安装&#xff0c;这里…

13载匠心独运,BI+AI启航新征程

13载匠心独运&#xff0c;BIAI启航新征程&#xff01; 思迈特的13年&#xff0c;是在坚守中持续创新&#xff0c;在创新中不断追求卓越&#xff0c;是在挑战与机遇并行中开创全新篇章的历程。感谢每一位陪伴走过这段旅程的人。展望未来&#xff0c;思迈特将继续以初心为舵、以…

【大数据学习 | HBASE高级】storeFile文件的合并

Compaction 操作分成下面两种&#xff1a; Minor Compaction&#xff1a;是选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile&#xff0c;对于删除、过期、多余版本的数据不进行清除。 Major Compaction&#xff1a;是指将所有的StoreFile合并成一个StoreFile&am…

git config是做什么的?

git config是做什么的&#xff1f; git config作用配置级别三种配置级别的介绍及使用&#xff0c;配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级&#xff1f; 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…

Warped Universe游戏即将在Sui上推出,为玩家提供多样化的游戏体验

Warped Games选择Sui作为其即将推出的创新多类型游戏Warped Universe的首选Web3技术。Warped Universe让玩家可以体验第三视角实时动作、回合制策略和基地建设等玩法。该游戏使用Unreal Engine 5开发&#xff0c;将借助Sui的技术使玩家能够拥有、交易和变现其游戏内资产。 War…