css第一个文字,纯CSS实现取字符串的第一个字符实现文字图标功能

本文介绍了如何使用CSS创建文字图标,通过设置特定样式,如背景颜色、大小和文字排版,达到图标效果。同时,为了使图标背景色跟随文字,文章提到了一个JavaScript方法`extractColorByName`,该方法根据名字提取颜色值,用于动态设置图标背景。示例代码展示了如何结合CSS和JS实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何通过CSS实现文字图标

/*图标样式*/

.nav-icon-normal {

width: 32px;

height: 32px;

line-height: 33px;

display: inline-block;

border-radius: 6px;

background-color: #b3b4c5;

vertical-align: middle;

overflow: hidden;

font-size: 16px;

text-indent: 8px;

text-align: center;

letter-spacing: 8px;

color: #fff;

word-break: break-all;

}

效果预览

f08358b37f4ba9b99d56cb2a09dd6fd8.png

这样基本效果实现出来,但是还是差一点。怎么通过实现图标背景色跟随文字

可以看这篇Js 根据名字提取颜色值

如何实现看这里,下面代码仅用于该文章的示例,真实使用需要根据实际情况做调整

var titles = ["技术是基础", "能力是关键", "沟通最重要", "通用接口"];

var html = "";

for (let i = 0; i < titles.length; i++) {

const title = titles[i];

const color = extractColorByName(title);

html += '

'.replace('{0}', color).replace('{1}', title);

}

// 输出

document.write(html);

/**

* 根据名字提取颜色

* @param name 名字

*/

function extractColorByName(name) {

var temp = [];

temp.push("#");

for (let index = 0; index < name.length; index++) {

temp.push(parseInt(name[index].charCodeAt(0), 10).toString(16));

}

return temp.slice(0, 5).join('').slice(0, 4);

}

实现后的效果如下

63b99a50e2b09e864a7cafa6740f25a8.png

最终附上案列代码

/*图标样式*/

.nav-icon-normal {

width: 32px;

height: 32px;

line-height: 33px;

display: inline-block;

border-radius: 6px;

background-color: #b3b4c5;

vertical-align: middle;

overflow: hidden;

font-size: 16px;

text-indent: 8px;

text-align: center;

letter-spacing: 8px;

color: #fff;

word-break: break-all;

}

var titles = ["技术是基础", "能力是关键", "沟通最重要", "通用接口"];

var html = "";

for (let i = 0; i < titles.length; i++) {

const title = titles[i];

const color = extractColorByName(title);

html += '

'.replace('{0}', color).replace('{1}', title);

}

// 输出测试HTML

document.write(html);

/**

* 根据名字提取颜色

* @param name 名字

*/

function extractColorByName(name) {

var temp = [];

temp.push("#");

for (let index = 0; index < name.length; index++) {

temp.push(parseInt(name[index].charCodeAt(0), 10).toString(16));

}

return temp.slice(0, 5).join('').slice(0, 4);

}

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值