如何创建计票进度条
How to create progressbar for counting votes
我想创建一个类似 YouTube 的进度条来计算选票
其中总票数("likes"加"dislikes")是条的总宽度,总分("likes"减"dislikes")是绿色部分。
现在,条形的宽度必须始终为 100%,这意味着无论总票数是 500 还是 1000,该数字必须始终为 100%,然后我需要将绿色部分从固定数字转换到一个百分比,所以,如果总票数是1200(100%),点赞是850(绿色部分),我需要把这850个点赞转换成百分比,我真的不知道怎么解释,但我希望有人可以得到想法并帮助我。
您需要做的是为包含的每个喜欢和不喜欢的部分创建一个包含 2 div
的包装器和一些 javascript/jquery 来控制它。
HTML
<div class='progressBar'>
<div class='likes'></div>
<div class='dislikes'></div>
</div>
CSS
.progressBar {
display: block;
width: 100px;
min-width: 100px;
height: 10px;
}
.likes {
background-color: #0F0;
float: left;
padding: 0px;
margin: 0px;
width: 0px;
height: 10px;
}
.dislikes {
background-color: #F00;
float: left;
padding: 0px;
margin: 0px;
width: 0px;
height: 10px;
}
JavaScript/jQuery
var likes = 850;
var dislikes = 350;
var total = likes+dislikes;
var likePerc = (likes/total)*100;
var dislikePerc = (dislikes/total)*100;
$(document).ready(function() {
$(".likes").css("width", likePerc);
$(".dislikes").css("width", dislikePerc);
});
这里 jsfiddle 展示了它是如何工作的。
如果您尝试使用 jQuery 来构建它,我建议仅使用 jQuery 来处理百分比计算并实际使用 HTML 来创建柱状图,并且 CSS 使其响应迅速且美观。
HTML
您想将 2 个动态条嵌套在父项中 div
<div class="parent">
<div class="bar up-vote"></div>
<div class="bar down-vote"></div>
</div>
CSS
要使栏响应,您需要将元素的宽度设置为百分比。
并通过设置 'box-sizing'
确保嵌套的 div 不会四处移动
/* set all children to be defined by own border */
.parent *{
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
.parent{
width:100%;
overflow:auto;
border-radius: 10px;
}
.parent .bar{
float:left;
height:20px;
/* give each bar a default width */
width:50%;
}
.parent .up-vote{
background:#35AF3F;
}
.parent .down-vote{
background:#E24B4B;
}
JS
静态地或从传入的任何数据创建变量。
var upVote=764,
downVote=236,
totalVote,
upPerc,
downPerc;
// if you only know upVote and downVote, calculate totalVote
totalVote = upVote + downVote;
// calculate the percentages. Simple division, then multiply by 100
upPerc = 100* (upVote/totalVote);
downPerc = 100* (downVote/totalVote);
// if you want to round the integers to only 2 decimal places,
// use toFixed()
upPerc = upPerc.toFixed(2);
downPerc = downPerc.toFixed(2);
// overwrite the default widths from the CSS with jQuery .css()
$('.up-vote').css({
'width':upPerc+'%'
});
$('.down-vote').css({
'width':downPerc+'%'
});
这是工作响应栏的 jsfiddle
我想创建一个类似 YouTube 的进度条来计算选票
其中总票数("likes"加"dislikes")是条的总宽度,总分("likes"减"dislikes")是绿色部分。 现在,条形的宽度必须始终为 100%,这意味着无论总票数是 500 还是 1000,该数字必须始终为 100%,然后我需要将绿色部分从固定数字转换到一个百分比,所以,如果总票数是1200(100%),点赞是850(绿色部分),我需要把这850个点赞转换成百分比,我真的不知道怎么解释,但我希望有人可以得到想法并帮助我。
您需要做的是为包含的每个喜欢和不喜欢的部分创建一个包含 2 div
的包装器和一些 javascript/jquery 来控制它。
HTML
<div class='progressBar'>
<div class='likes'></div>
<div class='dislikes'></div>
</div>
CSS
.progressBar {
display: block;
width: 100px;
min-width: 100px;
height: 10px;
}
.likes {
background-color: #0F0;
float: left;
padding: 0px;
margin: 0px;
width: 0px;
height: 10px;
}
.dislikes {
background-color: #F00;
float: left;
padding: 0px;
margin: 0px;
width: 0px;
height: 10px;
}
JavaScript/jQuery
var likes = 850;
var dislikes = 350;
var total = likes+dislikes;
var likePerc = (likes/total)*100;
var dislikePerc = (dislikes/total)*100;
$(document).ready(function() {
$(".likes").css("width", likePerc);
$(".dislikes").css("width", dislikePerc);
});
这里 jsfiddle 展示了它是如何工作的。
如果您尝试使用 jQuery 来构建它,我建议仅使用 jQuery 来处理百分比计算并实际使用 HTML 来创建柱状图,并且 CSS 使其响应迅速且美观。
HTML
您想将 2 个动态条嵌套在父项中 div
<div class="parent">
<div class="bar up-vote"></div>
<div class="bar down-vote"></div>
</div>
CSS
要使栏响应,您需要将元素的宽度设置为百分比。 并通过设置 'box-sizing'
确保嵌套的 div 不会四处移动/* set all children to be defined by own border */
.parent *{
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
.parent{
width:100%;
overflow:auto;
border-radius: 10px;
}
.parent .bar{
float:left;
height:20px;
/* give each bar a default width */
width:50%;
}
.parent .up-vote{
background:#35AF3F;
}
.parent .down-vote{
background:#E24B4B;
}
JS
静态地或从传入的任何数据创建变量。
var upVote=764,
downVote=236,
totalVote,
upPerc,
downPerc;
// if you only know upVote and downVote, calculate totalVote
totalVote = upVote + downVote;
// calculate the percentages. Simple division, then multiply by 100
upPerc = 100* (upVote/totalVote);
downPerc = 100* (downVote/totalVote);
// if you want to round the integers to only 2 decimal places,
// use toFixed()
upPerc = upPerc.toFixed(2);
downPerc = downPerc.toFixed(2);
// overwrite the default widths from the CSS with jQuery .css()
$('.up-vote').css({
'width':upPerc+'%'
});
$('.down-vote').css({
'width':downPerc+'%'
});
这是工作响应栏的 jsfiddle