Javascript 如何构建百分比图示符星形图示符来填充十进制平均评级?

Javascript 如何构建百分比图示符星形图示符来填充十进制平均评级?,javascript,angularjs,html,twitter-bootstrap-3,woff,Javascript,Angularjs,Html,Twitter Bootstrap 3,Woff,我将获得平均评级,如4.3,我需要构建逻辑,以在星号图标中显示4.3平均评级(4颗全星,5颗星部分填充)。最大额定值为5。我通过引用stackoverflow示例创建了JSFIDLE,我在草稿中没有得到部分星号,而是得到了整个星号 jsiddle Link:敬请指教。我已经编写了一个函数,可以满足您的需要。它只是设置部分图标的宽度,并隐藏溢出 函数设置分馏分级(容器、值){ 变量下限=数学下限(值), ceil=Math.ceil(值), 星形=容器。儿童[地板], slice=Array.p

我将获得平均评级,如4.3,我需要构建逻辑,以在星号图标中显示4.3平均评级(4颗全星,5颗星部分填充)。最大额定值为5。我通过引用stackoverflow示例创建了JSFIDLE,我在草稿中没有得到部分星号,而是得到了整个星号


jsiddle Link:敬请指教。

我已经编写了一个函数,可以满足您的需要。它只是设置部分图标的宽度,并隐藏溢出

函数设置分馏分级(容器、值){
变量下限=数学下限(值),
ceil=Math.ceil(值),
星形=容器。儿童[地板],
slice=Array.prototype.slice,
children=slice.call(container.children),
可见=切片调用(子级,0,ceil),
hidden=slice.call(children,cell),
大小,
宽度,
部分;
可见。forEach(函数(星形){
star.style.visibility='visible';
star.style.width='';
});
隐藏。forEach(函数(星形){
star.style.visibility='hidden';
star.style.width='';
});
size=star&&star.getBoundingClientRect();
宽度=大小和大小.width;
部分=价值-楼层;
如果(星形和部分!==0)
star.style.width=(宽度*部分)+“px”;
}
//测试:
var检查=1,
debug=document.querySelector('.debug');
appendChild(document.createTextNode(“”));
设置间隔(功能(额定值){
debug.firstChild.nodeValue=check.toFixed(1);
设置分级(额定值、检查);
如果((检查+=0.1)>=5)
检查=0.1;
},200,document.querySelector(“.rating”)
.rating>i{
显示:内联块;
溢出:隐藏;
}

我编写了一个函数,可以满足您的需要。它只是设置部分图标的宽度,并隐藏溢出

函数设置分馏分级(容器、值){
变量下限=数学下限(值),
ceil=Math.ceil(值),
星形=容器。儿童[地板],
slice=Array.prototype.slice,
children=slice.call(container.children),
可见=切片调用(子级,0,ceil),
hidden=slice.call(children,cell),
大小,
宽度,
部分;
可见。forEach(函数(星形){
star.style.visibility='visible';
star.style.width='';
});
隐藏。forEach(函数(星形){
star.style.visibility='hidden';
star.style.width='';
});
size=star&&star.getBoundingClientRect();
宽度=大小和大小.width;
部分=价值-楼层;
如果(星形和部分!==0)
star.style.width=(宽度*部分)+“px”;
}
//测试:
var检查=1,
debug=document.querySelector('.debug');
appendChild(document.createTextNode(“”));
设置间隔(功能(额定值){
debug.firstChild.nodeValue=check.toFixed(1);
设置分级(额定值、检查);
如果((检查+=0.1)>=5)
检查=0.1;
},200,document.querySelector(“.rating”)
.rating>i{
显示:内联块;
溢出:隐藏;
}

更新:


作为对评论的回应,有数百个有用的unicode符号可以复制并粘贴到代码中,例如。,▲ ▼ ★ 更新:



作为对评论的回应,有数百个有用的unicode符号可以复制并粘贴到代码中,例如。,▲ ▼ ★ 在网络上,有大量的例子和脚本可以用来给明星评分。这个问题太宽泛了site@ChrisW. 忘了在那里了。。。不!!lol@charlietfl对不起,那让我崩溃了!我不得不问。干杯在下面的JSFiddle示例中,您希望它将4.5的第五颗星的右半部分剪掉吗?@charlietfl,尽管我给出了十进制评级,但它仍然显示了整个星星。我没有得到的艺术明星有大量的例子和脚本在网上的评级明星。这个问题太宽泛了site@ChrisW. 忘了在那里了。。。不!!lol@charlietfl对不起,那让我崩溃了!我不得不问。干杯在下面的JSFiddle示例中,您希望它将4.5的第五颗星的右半部分剪掉吗?@charlietfl,尽管我给出了十进制评级,但它仍然显示了整个星星。我不认为这位艺术明星看起来简单而伟大。你是如何在代码中添加星号的?他使用ascii,就像另一个很酷的选项是
\272D
,这是个狡猾的人,我喜欢!甚至没有考虑ASCII图标!1@user5970552-谢谢。我已经添加了一个链接到我的答案,在那里你可以找到更多这些符号。@doug65536-谢谢。如果需要,可以在css中轻松设置字体系列。为特殊符号加载附加字体也很容易,例如,等等。然而,箭头和星星等常见符号几乎总是可以从预加载的系统字体中获得。非常好!对急需的功能的简短而甜蜜的回答看起来简单而伟大。你是如何在代码中添加星号的?他使用ascii,就像另一个很酷的选项是
\272D
,这是个狡猾的人,我喜欢!甚至没有考虑ASCII图标!1@user5970552-谢谢。我已经添加了一个链接到我的答案,在那里你可以找到更多这些符号。@doug65536-谢谢。如果需要,可以在css中轻松设置字体系列。为特殊符号加载附加字体也很容易,例如,等等。然而,箭头和星星等常见符号几乎总是可以从预加载的系统字体中获得。非常好!对急需的功能的简短而甜蜜的回答