Javascript 将十进制额定值(最大5 w/0.1增量)转换为百分比
我正在研究一个星级评定系统,我需要将我的十进制值转换为百分比%,以便我可以将其用作顶层的宽度 其工作方式是两个Javascript 将十进制额定值(最大5 w/0.1增量)转换为百分比,javascript,css,angular,typescript,Javascript,Css,Angular,Typescript,我正在研究一个星级评定系统,我需要将我的十进制值转换为百分比%,以便我可以将其用作顶层的宽度 其工作方式是两个span都位于彼此之上。顶部为灰色,底部为橙色。底部span越接近100%宽度(85px),星星看起来就越“满” 一切正常,但现在我需要将传入的reviewStarRatingnumber转换为百分比。reviewStarRating的值可以是0-5,增量为0.01。因此,一些传入的reviewStarRating示例是(0.4、1.3、2.8、3.0、4.2、4.9、5.0) 5.0
span
都位于彼此之上。顶部为灰色,底部为橙色。底部span
越接近100%宽度(85px),星星看起来就越“满”
一切正常,但现在我需要将传入的reviewStarRating
number转换为百分比。reviewStarRating
的值可以是0-5,增量为0.01。因此,一些传入的reviewStarRating
示例是(0.4、1.3、2.8、3.0、4.2、4.9、5.0)
- 5.0
will==100%reviewStarRating
- 4.0
will==80%reviewStarRating
- 3.0
will==60%reviewStarRating
- 2.0
will==40%reviewStarRating
- 1.0
will==20%reviewStarRating
- 0.0
will==0%reviewStarRating
感谢@Yosef帮我完成了大部分工作。这就是我一直在寻找的解决方案。85是因为我工作的div的宽度是85像素宽。所以如果我输入一个5.0的数字,我希望85px是它返回的最大值
toPercentage(num) {
return (num / 5 * 85);
}
这是非常接近!谢谢我不得不将
100
更改为85
,因为我所在的div
范围很广。因此,如果num
是5.0,我会得到85px
的宽度,如果你试图给它以像素为单位的值。对我来说,更好的做法是以百分比表示,然后是100。(因此,如果容器是85px
wide,则100%将为85px`)
@Input() reviewCount: String;
@Input() reviewStarRating: String;
cssWidth: number = 0;
icon = '★';
icons = `${this.icon}${this.icon}${this.icon}${this.icon}${this.icon}`
constructor() { }
ngOnInit() {
this.calculateCssWidth();
}
public getCssWidth() {
let styles = {
'width': `${this.cssWidth.toString()}px`
}
return styles;
}
calculateCssWidth() {
this.cssWidth = this.round(this.reviewStarRating);
console.log(`${this.reviewStarRating} -> ${this.cssWidth}`);
}
round(num) {
return Math.ceil((num+1)/10)*10;
}
.star-container {
max-width: 140px;
width: 85px;
height: 20px;
line-height: 20px;
}
.star-container .star-icon {
font-size: 20px;
position: relative;
}
.star-container .star-icon.orange {
color: #f37a1f;
top: -22px;
display: block;
overflow: hidden;
}
.star-container .star-icon.grey {
color: #e3e3e3;
}
.star-container:not(:last-child) {
margin-right: 5px;
}
function toPercentage(num: number) : string {
return `${num / 5 * 100}%`;
}
toPercentage(num) {
return (num / 5 * 85);
}