javascript - 如何更改输入文本每个字符的样式

标签 javascript html css vue.js

这里我想随机更改文本每个字符的CSS。 就像我输入 Stack 一样,我会在输入字段的底部得到红色的 S、蓝色的 t、绿色的 a...等等。

var myModel = {
	name: "Mayur",
};

var myViewModel = new Vue({
	el: '#my_view',
	data: myModel
});
span{
color:green;
font-weight:600;
font-size:20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>

<div id="my_view">
  <label for="name">Enter name:</label>
  <input type="text" v-model="name" id="name" name="name" />
  <p>Welcome, <span>{{ name | uppercase }}</span></p>
</div>

最佳答案

我没有使用过 Vue,也不熟悉它的内部事件和流程,但这是我用纯 JavaScript 制作的一个小原型(prototype):

document.querySelector('button').onclick = function (){
    let span = document.querySelector('span.letters'),
        text = span.textContent;
    span.innerHTML = '';
    Array.from(text).map(function(l){
        let color = document.createElement('span');
        color.innerHTML = l;
        color.style.color = 'rgb(' +
            randInterval(0, 255) + ',' +
            randInterval(0, 255) + ',' +
            randInterval(0, 255) + ')';
        span.appendChild(color);
    });
}

function randInterval(min,max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}
<div><span class="letters">STACK</span></div>

<button>Random colors</button>

我特意将 rgb() 的每个值随机化的函数放在一个函数中,这样您就可以轻松更改它(现在颜色是真正随机的)。如果你想让颜色变深,你需要降低 max 值。如果你想要颜色更浅,你需要增加 mins。

关于javascript - 如何更改输入文本每个字符的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295483/

相关文章:

javascript - 在子函数中使用带有闭包的 concat 方法

javascript - 本例中如何正确使用useState?

css - 在语言之间切换时的字体系列(即英语 - 法语)

python - Jupyter Lab 中的自定义样式

javascript - 使用javascript模拟鼠标在x,y处单击

javascript - 当网格数据绑定(bind)是动态时,如何为 jqgrid 单元格设置自定义标题

javascript - 使用 JQuery 获取 Gridview 内的文本框值

javascript - 如何使用 Bootstrap 禁用幻灯片中的左右箭头

html - 每个 Accordion 标题的 CSS 不同颜色

html - 将中心和右侧与 flex 对齐?