CSS+HTML+JQuery实现条形图

在工作中遇到了写条形图的情况,因为文字,条形数量和条形图的颜色需要改变,所以不能用图片,所以决定写一个试试,写的比较简单,但毕竟是第一次,也遇到了一些问题,特意记录下来,以免忘记。
因为该页面还需要兼容ie8,处理每个条形的间距也是一个问题。所以使用justify-content: space-around;来让每个条形两端对齐,但是并不兼容ie8,于是通过js来计算每个条形之间的margin值来控制条形能达到两端对齐的效果。
还有一个问题是:文字无法上下居中,于是把文字单独写到一个span标签中,通过js来控制span的位置。
具体代码如下:
<div class="chart">
<div class="bar-div">
<span class="bar">
<span class="bar-percent" style="height:86%"><span class="num-percent">86%</span><span class="percent-subject">药学综合知识</span></span>
</span>
<span class="bar">
<span class="bar-percent" style="height:99%"><span class="num-percent">99%</span><span class="percent-subject">药学一</span></span>
</span>
<span class="bar">
<span class="bar-percent" style="height:78%"><span class="num-percent">78%</span><span class="percent-subject">药学二</span></span>
</span>
<span class="bar">
<span class="bar-percent" style="height:84%"><span class="num-percent">84%</span><span class="percent-subject">中药学综合知识</span></span>
</span>
<span class="bar">
<span class="bar-percent" style="height:60%"><span class="num-percent">60%</span><span class="percent-subject">中药一</span></span>
</span>
<span class="bar">
<span class="bar-percent" style="height:93%"><span class="num-percent">93%</span><span class="percent-subject">中药二</span></span>
</span>
<span class="bar">
<span class="bar-percent" style="height:80%"><span class="num-percent">80%</span><span class="percent-subject">药事管理</span></span>
</span>
</div>
</div>
html
<style>
.chart {
width: 300px;
position: relative;
margin: 0 auto;
border-bottom: 1px solid #ccc;
} .bar {
height: 170px;
width: 20px;
position: relative;
display: inline-block;
margin: 0 7px;
} .bar-div {
justify-content: space-around;
display: flex;
padding-top: 20px;
} .bar-percent {
background-color: #24BA09;
display: inline-block;
position: absolute;
bottom:;
width: 20px;
color: #fff;
line-height: 1.2;
text-align: center;
font-size: 12px;
} .num-percent {
font-size: 10px;
color: #999;
position: absolute;
top: -13px;
left:;
} .percent-subject {
position: relative;
top: 0%;
}
</style>
css
//提前引入jquery
<script>
window.onload=function(){
//为了兼容ie8,设置条形图的每个条形的margin值来定位
var outWidth=$('.bar-div').width();
var len=$('.bar-div .bar').length;
var width=$('.bar-div .bar').width();
var marginNum=(outWidth-len*width)/len/2-2;
$('.bar-div .bar').each(function(){
$(this).css({"margin":"0 "+marginNum+"px"});
});
//设置条形图中文字上下居中
$(".percent-subject").each(function(){
var outHeight=$(this).parent().height();
var height=$(this).height();
var result=(outHeight-height)/2;
$(this).css({"top":result+"px"});
});
}
</script>
js
即可实现上述图中效果。
CSS+HTML+JQuery实现条形图的更多相关文章
- CSS与JQuery的相关问题
文字隐藏:p div里面的文字过长时隐藏文字: overflow:hidden; text-overflow:ellipsis; white-space:nowrap; --------------- ...
- 使用CSS和jQuery实现对话框
因为项目中要显示一些对话框,但用alert显得太丑,后从网上找了一些插件,但有觉得不好用,因此自己试用CSS和jQuery写了一个对话框,代码如下: <!DOCTYPE html> < ...
- 使用CSS和jQuery实现tab页
使用jquery来操作DOM是极大的方便和简单,这儿只是简单的用一个使用css和jquery来实现的tab页来简单介绍一些jQuery的一些方便使用的方法,下面是html文件: <!DOCTYP ...
- 区域及分离、Js压缩、css、jquery扩展
后台管理区域及分离.Js压缩.css.jquery扩展 本系列目录:ASP.NET MVC4入门到精通系列目录汇总 有好一段时间没更新博文了,最近在忙两件事:1.看书,学习中...2.为公司年会节目做 ...
- 动态加载js和css的jquery plugin
一个简单的动态加载js和css的jquery代码,用于在生成页面时通过js函数加载一些共通的js和css文件. //how to use the function below: //$.include ...
- JavaScript ,Css and Jquery In OpenERP 7.0
From: http://openerpbay.blogspot.jp/2013/02/javascript-css-and-jquery-in-openerp-70.html Hi fellows, ...
- css与jquery、图标字体
*)还能这样选择 header #search input[type="text"] *)按钮常用颜色:#008cBA(字母大小写没有区别) *)清除浮动后,text-align没 ...
- Jmeter之CSS选择器/JQuery选择器关联
选择器: CSS选择器或JQuery选择器是Jmeter支持的两种语法,下面对其两种语法进行简单介绍 CSS选择器 JQuery选择器 Chrome - 复制CSS选择器 Google Chrome在 ...
- 26、ASP.NET MVC入门到精通——后台管理区域及分离、Js压缩、css、jquery扩展
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 有好一段时间没更新博文了,最近在忙两件事:1.看书,学习中...2.为公司年会节目做准备,由于许久没有练习双截棍了,难免生疏,所以现在临时抱 ...
随机推荐
- 并发框架Disruptor场景应用
今天用一个停车场问题来加深对Disruptor的理解.一个有关汽车进入停车场的问题.当汽车进入停车场时,系统首先会记录汽车信息.同时也会发送消息到其他系统处理相关业务,最后发送短信通知车主收费开始.看 ...
- element 关闭弹窗时清空表单信息
关闭弹窗时清空表单信息: // 弹框关闭时清空信息 closeDialog () { this.$nextTick(() => { this.$refs['createModelForm'].c ...
- 如何在本地搭建DVWA环境
如何在本地搭建DVWA环境 1.工具下载: (1)phpStudy: http://phpstudy.php.cn/download.html (2)DVWA:http://www.dvwa.c ...
- xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH ...
- LeetCode练习4 找出这两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...
- SQL学习 DECODE
from 百度百科: DECODE有什么用途呢? 先构造一个例子,假设我们想给这些职员加工资,其标准是:工资在8000元以下的加20%:工资在8000元或以上的加15%,通常的做法是,先选出记录中的工 ...
- idea免费破解
1.下载破解补丁. https://pan.baidu.com/s/1pWCr_HIHURSAbGvvo70wKA 密码:pxkv 2.下载idea网址: https://www.jetbrain ...
- tomcat 启动窗口乱码
在tomcat主目录下的conf文件夹里,找到logging.properties文件: 用记事本打开,找到以下内容 java.util.logging.ConsoleHandler.encoding ...
- Linux命令(五)创建文件或修改文件时间 touch
Linux中 touch 命令可以改变文档或目录时间, 包括存取时间或更改时间, 也可以用于创建新文件. 命令格式: touch [选项] [参数] 选项: -a 只更改文件的读取时间. -m ...
- 为什么String被设计为不可变?是否真的不可变?
1 对象不可变定义 不可变对象是指对象的状态在被初始化以后,在整个对象的生命周期内,不可改变. 2 如何不可变 通常情况下,在java中通过以下步骤实现不可变 对于属性不提供设值方法 所有的属性定义为 ...