php+bootstrap 编写简易的步骤进度条

个人笔记记录,步骤进度条。

版本一:

初始版本,
当前版本单纯的根据bootstrap+CSS进行完成的简易版本。这个比较简单
样式我放在了最底下。
在这里插入图片描述

  <div class="form-group steps"><div class="steps-height"><div class="step-line step-completed"></div><div class="step step-completed"><div class="step-text">1</div><div class="step-main"><p>1.立项信息</p><p>1.立项信息</p><p>1.立项信息</p><p>1.立项信息</p><p>1.立项信息</p></div></div><div class="step-line step-completed"></div></div><div class="steps-height"><div class="step-line "></div><div class="step"><div class="step-text">2</div><div class="step-main">2.项目成员</div></div><div class="step-line "></div></div><div class="steps-height"><div class="step-line"> </div><div class="step "><div class="step-text">3</div><div class="step-main">3.合作单位</div></div><div class="step-line "></div></div><div class="steps-height"><div class="step-line"> </div><div class="step"><div class="step-text">4</div><div class="step-main">4.项目预算</div></div><div class="step-line "></div></div><div class="steps-height"><div class="step-line"> </div><div class="step"><div class="step-text">5</div><div class="step-main">5.项目文档</div></div><div class="step-line "></div></div><div class="steps-height"><div class="step-line"></div><div class="step"><div class="step-text">6</div><div class="step-main">6.完成登记</div></div><div class="step-line"></div></div></div>

版本二

这个版本加入了php,从数据库读取内容。然后加载到前端。
框架用的是thinkphp。

从数据库进行加载内容

    <div class="form-group steps">{volist name="steps" id="step"  key="k"}<div class="steps-height"><div class="step-line  step-completed"></div><div class="step step-completed"><div class="step-text">{$k}</div><div class="step-main"><p>{$k}.{$step.name}</p><p>数量:{$step.number}</p>
<!--                    <div>2.项目成员</div>--></div></div><div class="step-line  step-completed"></div></div>{/volist}</div>
    public function index(){//设置过滤方法$this->request->filter(['strip_tags', 'trim']);$todayStart = date('Y-m-d 00:00:00'); // 今天开始的时间戳$todayEnd = date('Y-m-d 23:59:59');   // 今天结束的时间戳//获取当前日期的步骤栏$steps =Db::name("step")->where('createtime', '>=', $todayStart)->where('createtime', '<=', $todayEnd)->select();// 将数据传递给视图$this->assign('steps', $steps);return $this->view->fetch();}

版本3

这个版本比较完善了。根据下拉框,进行刷新需要的步骤进度条。
并且步骤条通过 js 进行动态生成。


<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><link href="steps.css" rel="stylesheet" /><link rel="stylesheet" href="__CDN__/assets/libs/steps/steps.css">
</head>
<body>
<div class="panel panel-default panel-intro"><div  class="form-group"><form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""><div class="form-group"><label class="control-label col-xs-12 col-sm-2">下拉框:</label><div class="col-xs-12 col-sm-8"><select  id="c-fi_Sub" data-rule="required" class="form-control" name="row[title]"><!--   <option value="0" >请选择状态</option>--></select></div></div></form></div><div class="form-group steps">
<!--        步骤条位置--></div>
</div></body>
</html>

js

//获取 步骤条内容function steps(rc_name){Fast.api.ajax({url: 'step/step/select_step',data: {rc_name: rc_name},}, function (data, ret) {//清楚 容器上的内容$('.steps').empty();//通过foreach构造 div$.each(data.html, function(index, step) {//创建divvar stepDiv = $('<div></div>').addClass('steps-height');var lineDiv=$('<div></div>').addClass('step-line  step-completed');var completed=$('<div></div>').addClass('step step-completed');var lineDiv2=$('<div></div>').addClass('step-line  step-completed');// ... 根据 step 对象创建 DOM 元素并添加到 stepDiv 中completed.append('<div class="step-text">' + (index+1) + '</div>');completed.append('<div class="step-main"><p>' + (index+1) + ' . '+ step.pi_name + '</p><p>数量:' + step.number + '</p></div>');stepDiv.append(lineDiv);stepDiv.append(completed);stepDiv.append(lineDiv2);// 将创建好的 stepDiv 添加到页面上$('.steps').append(stepDiv); // 将步骤添加到 .steps 容器中});return false;}, function (data, ret) {alert(ret.msg);return false;});}
			//加载成功时刷新下拉框$(document).ready(function() {Fast.api.ajax({url: 'step/step/select_rc_name',data: {},}, function (data, ret) {//将内容挂到下拉选择框$("#c-fi_Sub").html(data.html);// 获取选中的idvar rc_name = $("#c-fi_Sub").val();//刷新步骤条steps(rc_name);return false;}, function (data, ret) {alert(ret.msg);return false;});});//选择下拉框时$(document).on("change", "#c-fi_Sub", function () {// 获取选中的idvar rc_name = $("#c-fi_Sub").val();//刷新步骤条steps(rc_name);});

以下就是样式了。不是很难的内容

.steps {/*position: relative;*//*padding: 25px 0 25px 20px;*/position: relative;display: flex;flex-wrap: wrap; /* 允许子元素换行 */align-items: flex-start; /* 垂直居中对齐子元素 */padding: 25px 0 25px 20px;
}.step,
.step-line {float: left;
}
.steps-height{height: 150px;
}
.step {display: block;width: 21px;height: 21px;border-radius: 50%;line-height: 21px;text-align: center;/*font-size: 15px;*/border: 1px solid #cdcdcd;background: #cdcdcd;font: 16px Helvetica Neue,Helvetica,PingFang SC,微软雅黑,Tahoma,Arial,sans-serif;
}.step-line {width: 50px;position: relative;top: 9px;height: 5px;background-color: #cdcdcd;/*display: none; !* 如果不需要线连接每个步骤,可以隐藏它 *!*//* 如果需要线,则需要重新设计其显示方式,因为flex布局下自动换行会打破线的连续性 */
}
.step-text {font-size: 15px;color: #fff;background-color: #cdcdcd;border-radius: 50%;width: 21px;height: 21px;line-height: 21px;text-align: center;margin-bottom: 5px; /* 与下面的文本保持一定距离 */}.step-main {font: 14px Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif;text-align: center;color: #313131;margin-top: 8px; /* 适当的间距 */
}
.step-completed .step-text {background: #327ab7;border-color: #327ab7;
}
.step-completed .step-main {/* 如果需要,可以添加特定于已完成步骤的样式 */
}/* 如果需要,可以为第一个步骤添加特殊处理,例如没有线条 */
.step:first-child::after {display: none;
}.step::before {content: '';position: absolute;top: 50%;left: -40px; /* 线条从步骤的左侧开始 */width: 30px; /* 线条的长度 */height: 2px; /* 线条的粗细 */background-color: #cdcdcd;transform: translateY(-50%); /* 垂直居中线条 */
}.step-main {font: 14px Helvetica Neue,Helvetica,PingFang SC,微软雅黑,Tahoma,Arial,sans-serif;padding: 8px 0;display: block;width: 80px;text-align: center;position: relative;left: -34px;color: #313131;
}.steps > .step-completed {background: #327ab7;border-color: #327ab7;
}/*.step-completed > .step-main {color: #2f318e;
}*/.step-completed > .step-circle {background-color: #2f318e;
}.step-completed.step-line {background-color: #327ab7;
}
/* 响应式设计,可以根据需要调整 */
@media (max-width: 600px) {/*.step {*//*    width: 50px; !* 在小屏幕上减小步骤宽度 *!*//*    margin-right: 10px; !* 减小间距 *!*//*}*/.step-text {font-size: 12px; /* 减小文本大小以适应小屏幕 */}.step-main {font-size: 12px; /* 同样减小主文本大小 */}.steps-height{height: 50px;}/*.step {*//*    margin-right: 15px; !* 减小间距以适应小屏幕 *!*//*    min-width: 40px; !* 减小最小宽度 *!*//*}*/.step::before {left: -20px; /* 减小线条的起始位置 */width: 15px; /* 减小线条的长度 */}
}/* 假设你在步骤中添加了一个 p 标签 */
.step p {/* 这里的样式将控制 p 标签的显示,它会自动增加 .step 的高度 */margin: 4px 0; /* 适当的间距 */font-size: 14px; /* 或其他适当的字体大小 */
}

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

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

相关文章

txt格式单词导入有道词典生词本 (java代码方式)

txt格式单词导入有道词典生词本 (java代码方式) 首先要求txt文档里单词的格式&#xff0c;大概需要像这种&#xff1a; 每行是一个单词&#xff0c;格式为&#xff1a;英文单词空格词性单词意思。 注意 导出单词本的名字就是你 txt 文件的名字 我这里是 公共英语三级 单词本 …

IAR使用调试详解

目录 1 IAR功能介绍 1.1 File文件菜单 1.2 Edit编辑菜单 1.3 View视图菜单 1.4 Projcet工程菜单 1.5Debug调试菜单 1.6 Disassembly反汇编菜单 1.7 Simulator下载调试工具 1.8 Tools工具菜单 1.9 Window窗口菜单 1.10 Help帮助菜单 2 IAR设置 2.1 插入/编辑模板 2…

如何选择最佳的云盘检测方案?

橡胶密封圈是一种用于填塞、密封或隔离物体之间空隙的圆形零件&#xff0c;通常由橡胶或类似材料制成。这些密封圈通常用于工程、机械或汽车领域&#xff0c;以防止液体、气体或其他物质泄漏。 橡胶密封圈通常对多种化学物质具有良好的耐腐蚀性能&#xff0c;使其适用于各种环…

一些关于颜色的网站

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 1、中国传统色 2、网页颜色选择器 3、渐变色网站 4、多风味色卡生成 5、波浪生成 6、半透明磨砂框 色卡组合

T-CNN——利用张量 CNN 增强缺陷检测

1. 摘要 缺陷检测是制造业中一个重要而具有挑战性的问题。本研究引入了张量卷积神经网络&#xff08;T-CNN&#xff09;&#xff0c;并在罗伯特-博世制造工厂生产的超声波传感器组件缺陷检测的实际应用中验证了其性能。与同类 CNN 模型相比&#xff0c;作者的量子启发 T-CNN 通…

【后端开发实习】Python基于Quart框架实现SSE数据传输

Python基于Quart框架实现SSE数据传输 前言SSE简介理论分析代码实现 前言 在类似Chatgpt的应用中要实现数据的流式传输&#xff0c;模仿实现打字机效果&#xff0c;SSE是不二之选。传统的Flask框架不能满足异步处理的要求&#xff0c;没有异步处理就很难实现实时交互的需求&…

C++客户端Qt开发——Qt窗口(对话框)

5.对话框 ①对话框介绍 对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口&#xff0c;出现在程序最上层&#xff0c;用于实现短期任务或者简洁的用户交互。Qt常用的内置对话框有&#xff1a;QFiledialog…

【第四天】计算机网络知识 HTTP1.0,HTTP1.1与HTTP2.0的区别 HTTP3.0

HTTP1.0&#xff0c;HTTP1.1与HTTP2.0的区别 HTTP1.0 默认是短链接&#xff0c;可以强制开启长连接。HTTP1.1默认长连接。HTTP2.0采用多路复用。 HTTP1.0&#xff1a; 默认使用短链接&#xff0c;每次请求都需要建立一个TCP连接。它可以设置&#xff1a;Connection: keep-aliv…

利用OSMnx求路网最短路径并可视化(二)

书接上回&#xff0c;为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化&#xff0c;我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图&#xff0c;并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…

洛谷 P9854 [CCC 2008 J1] Body Mass Index

这题让我们计算出 BMI 值&#xff0c;随后判断属于哪个等级。 BMI 值计算公式&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​。 BMI 范围 对应信息 …

【JVM基础08】——类加载器-说一下类加载的执行过程?

目录 1- 引言&#xff1a;类加载的执行过程1-1 类加载的执行过程是什么&#xff1f;(What) 2- ⭐核心&#xff1a;详解类加载的执行过程(How)2-1 加载——>加载到运行时数据区2-2 验证——>类的安全性检查2-3 准备——>为类变量分配内存并设置初始值2-4 解析——>把…

Web网页端IM产品RainbowChat-Web的v7.1版已发布

一、关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统&#xff0c;是RainbowChat的姊妹系统&#xff08;RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统&#xff09;。 ► 详细介绍&#xff1a;http://www.52im.net/thread-2…

每天一个设计模式之职责链模式(第一天)

特别感谢刘伟老师&#xff0c;看他的书我学到了很多东西&#xff0c;从今天开始我要开始更新啦&#xff01; 在csdn个人博客来总结知识&#xff0c;把他们变成自己的能力。 对三&#xff0c;要不起&#xff0c;张三李四王五几个人在玩斗地主&#xff0c;过过过&#xff0c;一…

Codeforces Round 962 (Div. 3)

链接 C题&#xff1a; 思路&#xff1a; 直接暴力求每个字母的前缀和&#xff0c;对于区间l&#xff0c;r的最小操作就是区间不同数的一半&#xff0c;因为可以把一个数变成另一个不一样的数&#xff0c;一下抵消两个。 #include<bits/stdc.h> using namespace std; //…

MySQL中不等于筛选时会漏掉null值的问题

一、问题描述 MySQL中使用不等于进行筛选数据时&#xff0c;若筛选值为null&#xff0c;则该条数据不会被选中&#xff0c;如何解决该问题&#xff1f; 表示不等于的方式如下&#xff1a; ! <> not in二、案例验证 1、创建数据表 -- ---------------------------- -…

【2024最新版】Stable diffusion汉化版安装教程(附SD安装包),一键激活,永久免费!

目前广泛使用的Stable Diffusion Web UI简称(SDWebUI)是发布在开源平台Github上的一个Python项目,与通常的软件安装方法不同,这个项目并不是下载并安装即可使用的应用程序,而是需要准备执行环境,编译源码. 如果你是一个新手不会安装,现在可以直接使用一键启动包. 例如:国内的…

AI驱动的在线面试系统:技术革新与初步面试的新体验

一、引言 在数字化和智能化的时代背景下&#xff0c;人工智能&#xff08;AI&#xff09;技术正日益渗透到各行各业&#xff0c;为人们的生活和工作带来前所未有的变革。其中&#xff0c;AI驱动的在线面试系统&#xff0c;凭借其高效、便捷、公正等特性&#xff0c;逐渐成为企业…

ATF-541M4全解析(一)

目录 一、描述二、规格三、各参数最大值四、25℃下的典型值 一、描述 安华高科技 (Avago Technologies) 的 ATF-541M4 是一款高线性度、低噪声、单电源供电的E-PHEMT&#xff0c;封装在一个微型无引脚封装中。 ATF-541M4 的小尺寸和低外形使其非常适合用于混合模块和其他空间…

matplotlib 画图函数,最常用的

并排显示2个图片 import os import numpy as np from PIL import Image import matplotlib.pyplot as pltimage1 Image.open(a.png) image2 Image.open(a2.png)# Create a figure with two subplots (1 row, 2 columns) fig, axes plt.subplots(1, 2, figsize(10, 5))# Di…

【Git-驯化】一文搞懂git中rm命令的使用技巧

【Git-驯化】一文搞懂git中rm命令的使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&#xff1a;微信公…