首页 > 其他分享 >layui横向时间线以及参数化

layui横向时间线以及参数化

时间:2024-10-14 17:22:24浏览次数:8  
标签:name layui linesegs 横向 li 参数 10px date stage

你好!这是我的第一篇博客。
公司项目遇到一个需求,前端需要使用到layui的时间线,我在时间线的基础上进行扩展,使其支持参数化的横向时间线。
数据模拟定义在js中,实际以您的数据源为主。
可以把代码粘至以下网址进行运行测试 layui在线编辑器

效果图

在这里插入图片描述

代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <link rel="stylesheet" href="../../../css/layuimini.css" media="all">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/lib/layui-v2.6.3/css/layui.css" media="all">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/css/layuimini.css?v=2.0.4.2" media="all">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/css/themes/default.css" media="all">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
    <style type="text/css">
        body {
        }
        .content {
            width: 1000px;
            height: auto;
            margin: 0px 0 0 311px;
            display: inline-block;
        }
        .contract {
            width: 100%;
            height: auto;
            display: inline-block;
        }
        .contract .linesegs {
            list-style-type: none;
            float: left;
            position: relative;
            background-repeat: repeat-x;
            height: 40px;
            margin: 0px;
            padding-left: 10px;
        }
        .linesegs li {
            float: left;
            width: 110px;
            position: relative;
            background-repeat: no-repeat;
        }
        .linesegs li .dashed:after {
            content: '';
            display: block;
            border-top: 2px dashed #C9CDD4;
            width: 100%;
            height: 2px;
        }
        .linesegs li .solid:after {
            content: '';
            display: block;
            border-top: 2px solid #41AE3C;
            width: 100%;
            height: 2px;
        }
        .linesegs li .radius:before, .linesegs li .c-radius:before {
            content: '';
            display: block;
            position: relative;
            width: 10px;
            height: 10px;
            top: 5px;
            border-radius: 100%;
            background-size: 10px 10px;
        }
        .linesegs li .radius:before {
            background: #41AE3C;
        }
        .linesegs li .c-radius:before {
            background: #000000;
        }
        .linesegs li .startdate {
            width: 100%;
            height: 1px;
            margin-top: 10px;
            font-size: 12px;
            text-align: left;
            position: relative;
            left: -10px;
        }
    </style>
</head>
<body>
<div class="layui-container">
    <div class="content">
        <div class="contract">
            <ul class="linesegs" id="timeline"></ul>
        </div>
    </div>
</div>

<script src="${pageContext.request.contextPath}/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="${pageContext.request.contextPath}/js/lay-config.js?v=2.0.0" charset="utf-8"></script>
<script>
    // 步骤 1: 定义数据
    const stages = [
        { name: '需求分析', date: '2024-10-6' },
        { name: '产品设计', date: '2024-10-7' },
        { name: '研发', date: '2024-10-14' },
        { name: '验收', date: '' },
        { name: '投产', date: '' }
    ];

    // 步骤 2: 获取时间线容器
    const timelineContainer = document.getElementById('timeline');

    const size=stages.length
  
    // 找到最后一个有日期的阶段
    let lastDateIndex = -1;
    stages.forEach((stage, index) => {
        if (stage.date) {
            lastDateIndex = index;
        }
    });

    // 步骤 3: 动态生成 HTML
    stages.forEach((stage, index) => {
        const li = document.createElement('li');
        li.className = 'lineseg';

        if (index <= lastDateIndex) { // 前面的阶段有日期
            if (index !== lastDateIndex) {
                li.innerHTML = `
                    <h3 class="startdate">${stage.name}</h3>
                    <br>
                    <div class="solid radius"></div>
                    <br>
                    <h3 class="startdate">${stage.date}</h3>
                `;
            } else if(index===size-1){
                li.innerHTML = `
                    <h3 class="startdate">${stage.name}</h3>
                    <br>
                    <div class=" radius"></div>
                    <br>
                    <h3 class="startdate">${stage.date}</h3>
                `;
            }else{
              li.innerHTML = `
                    <h3 class="startdate">${stage.name}</h3>
                    <br>
                    <div class="dashed radius"></div>
                    <br>
                    <h3 class="startdate">${stage.date}</h3>
                `;
            }
        } else { // 后面的阶段没有日期
            if (index === stages.length - 1) {
                li.innerHTML = `
                    <h3 class="startdate">${stage.name}</h3>
                    <br>
                    <div class="c-radius"></div>
                    <br>
                    <h3 class="startdate"></h3>
                `;
            } else {
                li.innerHTML = `
                    <h3 class="startdate">${stage.name}</h3>
                    <br>
                    <div class="dashed c-radius"></div>
                    <br>
                    <h3 class="startdate"></h3>
                `;
            }
        }

        timelineContainer.appendChild(li);
    });


</script>
</body>
</html>

标签:name,layui,linesegs,横向,li,参数,10px,date,stage
From: https://blog.csdn.net/qq_40632739/article/details/123131212

相关文章

  • 第03章 SpringBoot获取请求参数
    我们首先创建“SpringBootRequestDemo”工程。然后我们修改编码格式以及Maven仓库地址,我们省略这个过程了。接着我们再添加spring-boot-starter-parent,spring-boot-starter-web,spring-boot-starter-thymeleaf依赖库<?xmlversion="1.0"encoding="UTF-8"?><projectxm......
  • MySql数据库---存储过程(带in、out、inout参数,),变量定义,if,case判断,循环结构,游标,handler
    思维导图 存储过程概念MySQL5.0版本开始支持存储过程。简单的说,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,类似Python中的函数;存储过就是数据库SQL语言层面的代码封装与重用入门案例语法:delimiter自定义结束......
  • 动态折线图bar_chart_race参数使用
    bar_chart_race主要参数与使用bar_chart_race包主要有两种主要函数(绘图,数据准备)。这里只用到bar_chart_race这一个函数,line_chart_race恕笔者是个笨比没跑通,prepare_wide_data和prepare_long_data可将pandasDataFrames转换为正确的形式,具体参见bar_chart_race数据准备。......
  • 第110天:免杀对抗-GO&C#&反VT沙盒&逆向调试&参数加载&资源分离&混淆加密
    知识点#知识点:1、C#-混淆&分离&反调试2、GO-混淆&分离&反调试3、成品程序-包含反调试VT#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll反射劫持-加载权......
  • Pywebview 5.2 storage_path传递参数参数无效
    背景pywebview5.2在我测试数据目录时,发现在启动界面后webview目录仍然为空deftest_storage_dir():window=webview.create_window('StorageDirectory',url='https://kimi.moonshot.cn/')webview.start(debug=True,private_mode=False,g......
  • Mac 最大连接数和端口的相关参数
    1.最大连接数限制最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种:1.1.全局$sysctlkern.maxfileskern.maxfiles:49152##系统默认的最大连接数限制是49152$sudosysctl-wkern.maxfiles=1048600###设置系统最大连接数从49152到10......
  • ARM结构下函数被调用时参数是如何传递的
    在ARM架构下,函数调用的参数传递遵循特定的调用约定,这些调用约定定义了如何在函数调用中传递参数、返回值以及保存寄存器的规则。ARM架构可采用不同的调用约定,但最常用的是ARM的标准调用约定,也称作AAPCS(ARMArchitectureProcedureCallStandard)。AAPCS(ARMArchitectureProcedur......
  • apisix~自定义文件上传代理插件~支持form-data文件和kv参数
    参考文献https://stackoverflow.com/questions/24535189/composing-multipart-form-data-with-a-different-content-type-on-each-parts-with-jhttps://www.reddit.com/r/lua/comments/yaizxv/lua_post_multipartformdata_and_a_file_via/?rdt=60519https://github.com/rstudi......
  • layui用iframe更新表单怎么回显select下拉框中的数据
     如图所示的三个步骤,获取contentWindow,在iframe中的select的id为categoryId中赋值,最后还要重新渲染,就能在iframe中回显得到selected的选项了,效果如下图所示。  另外,我尝试过在iframe的html中添加inputtype="hidden"id="categoryHid"的元素来存放categoryId的值,并在主页......
  • tensorflow案例1--天气识别,包含(Tensorflow的检查是否GPU、图像数据加载与划分、拿取
    ......