html转word 时 字体颜色,【Web前端问题】文字大小和颜色随着热度改变如何做?...

f08c5a7844acb0b3108111a2b3194053.png

回答:

提供一个思路:可以根据热度设置一个倍率,然后字体大小和背景透明度根据倍率设置

回答:

使用websocket,热度变化时,数据自动改变

回答:

回答:

我提供一个我自己写的小demo

我猜楼主的问题是不知道如何把颜色亮度数字化,我这里使用的是hsl格式的颜色l可以直接表示颜色亮度,颜色亮度直接和value的占比对应

文件排布

.word-box {

width: 300px;

margin: auto;

border: solid 1px #eee;

}

.word-box .word-item {

margin: 15px 0;

padding: 0 20px;

float: left;

vertical-align: middle;

}

const wordBox = document.querySelector('.word-box');

// 定义数据,value 表示文字的热度

const wordArr = [{

word: 'Alamofire',

value: 30,

}, {

word: 'BLE',

value: 40,

}, {

word: 'CocoalPods',

value: 50,

}, {

word: 'Framework',

value: 60

}, {

word: '开源库',

value: 100

}];

// 按照value排序

wordArr.sort((a, b) => a.value > b.value ? 1 : -1);

// 获取最大和最小值,计算单词的value占比

const

valueDistance = wordArr[wordArr.length - 1].value - wordArr[0].value,

fontSizeRange = [12, 20],

// 颜色范围,从纯黑到半黑(hsl颜色好处理颜色亮度,hex颜色自己去看如何处理颜色亮度)

baseColor = 'hsl(120, 0%, $%)',

// 颜色亮度从高到低

colorRange = [50, 0];

wordArr.map(v => {

// 计算value占比

v.percent = (v.value - wordArr[0].value) / valueDistance;

v.fontSize = (fontSizeRange[0] + (fontSizeRange[1] - fontSizeRange[0]) * v.percent).toFixed(2);

// 占比超过一半 字体加粗

v.fontWeight = v.percent > .5 ? 'bold' : 'normal';

const colorLightness = (colorRange[0] + (colorRange[1] - colorRange[0]) * v.percent).toFixed(2);

// 转换hsl的颜色

v.color = baseColor.replace('$', colorLightness)

});

const templateHtml = wordArr.reduce((acc, cur) => {

return acc + `

${cur.word}
`

}, '');

wordBox.innerHTML = templateHtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值