|
|

楼主 |
发表于 2022-3-12 09:31
|
显示全部楼层
实现原理分享:
给 div 盒子加载一整图片作为背景图片,图片最好层次分明、轮廓清晰。组织足够多的文本,字体大小合适,字与字之间的距离缩小(letter-spacing: -2px)一点,前景色(即文本颜色)设置为透明(color: transparent),然后用 background-clip 属性设置为 text,这就令背景图片的显示只为文本。
本灌水帖,我加上JS代码,用它来组织文本:先创建一个小写字母表字符串,然后用一个for语句组装一个新的字符串,循环中每一轮设置字母为大写,最后输出到 div 盒子。
里面的知识点:
一、文本的折行。字母连起来写时,中间没有空格,会只出现一行长长的,所以要强制折行,CSS中用三行代码:
white-space: normal;
word-wrap: break-word;
word-break: break-all;
二、字间距:letter-spacing: 2px;
三、以文本呈现盒子底图:
background-clip: text;
-webkit-background-clip: text; //适配Chrome类浏览器
四、JS取余数:%
JS中,取余数运算符是 %,例如,要取任意一个数除以 2 的余数,表达为 k%2。
本帖中要做的是,for循环语句里,步进变量 j 若被 2 整除,就将所给字串变为大写,否则保留原来的小写样式:
ttStr += (j%2 == 0 ? letter.toUpperCase() : letter);
ttStr 是要组织的字串以便最后输出到 div 盒子里,它的值在原有基础上不断增加,增加的依据是通过一个三元运算来完成:如果 j 被 2 整除(j%2 == 0),则(?)字母变为大写(toUpperCase),否则(:)保留原样(letter)。
关于三元运算,运算符为:条件表达式 ? 结果1 : 结果2。它等价于 if ... else ... 条件语句:
if(条件表达式) {
结果1 //条件符合的话
} else {
结果2 //否则,条件不符合的话
}
|
|