【【Bootstrap】重写Bootstrap进度条ProgressBar完美实现文字居中】先看下Bootstrap默认的进度条样式
文章图片
可以看到在.progress-bar
内的文字显示在进度条已完成部分,在.progress
内的文字显示在进度条未完成部分。
综合考虑了各种因素:
- 文字层需要浮在
.progress-bar
层上方 - 文字层需要能设置为
width:100%
,也就是能获取到parent元素的width
,从而使text-align: center
有效,能够文字居中 - 当
.progress
被parent元素压缩到显示不全文字时,文字要换行,同时需要自动拓展.progress
(和.progress-bar
)的高度来容纳下换行的文字
CSS:
.progress {
margin-bottom: 0px;
height: auto;
position: relative;
}
.progress-bar {
position: absolute;
z-index: 10;
}
.progress-placeholder {
float: left;
width: 100%;
text-align: center;
visibility: hidden;
}
.progress-text {
position: absolute;
z-index: 20;
width: 100%;
text-align: center;
}
JS:
function getProgressStr(str, width, type, striped, active) {
/**
* 动态生成文字居中的Bootstrap ProgressBar
* @return {string} 返回包含progressBar的HTML string
* @param {string} str - 需要显示的文字
* @param {string} width - 进度条占比,CSS代码
* @param {string} type - 进度条类型['danger'|'warning'|'info'|'success']
* @param {Boolean} striped - 是否有条纹
* @param {Boolean} active - 是否有动画
*/
var result = '{str}{str}';
result = result.replace(/{str}/g, str);
result = result.replace(/{width}/, width);
result = result.replace(/{type}/, ' progress-bar-' + type);
result = result.replace(/{striped}/, striped == 1 ? ' progress-bar-striped' : '');
result = result.replace(/{active}/, active == 1 ? ' active' : '');
return result;
}
使用方法:
var progress1 = getProgressStr('进度条要显示的内容', '40%', 'danger', 1, 1);
$('body').append(progress1);
效果:
文章图片
最终效果:
文章图片
文字显示不下也能hold住:
文章图片
推荐阅读
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- 接口|axios接口报错-参数类型错误解决
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- vue|Vue面试常用详细总结
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- css|我用css精灵图拼接了自己的英文名字,不会还有人不知道精灵图技术吧()
- css|css三角的做法及其案例