javascript - 自动着色文本 | JS CSS HTML

标签 javascript html css text

<分区>


想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post .

关闭 7 年前

我想知道是否可以使用 JavaScript 和 CSS 为任何长度的文本自动着色。例如,如果我在 h1 标签上使用 contentEditable 并且用户通过他们的浏览器编辑它,它将在同一区域返回彩色文本。第一个字母一种颜色,第二个字母另一种,依此类推。不只是一种颜色,而是多种颜色。

是否可以继续使用 7 色图案?

最佳答案

我做了一点proof of concept (JSFiddle) .它基本上获取了 contentEditable = true 的 div 文本,将每个字母包装在一个 span 中并将其放入输入 div 后面的 div 中。然后使用一些 CSS 魔法完成着色。

#input {position: absolute; opacity: 0.0;}
#rainbow {position: absolute; background: #cccccc;}
#rainbow span:nth-child(7n+1) {color: blue;}
#rainbow span:nth-child(7n+2) {color: green;}
#rainbow span:nth-child(7n+3) {color: violet;}
#rainbow span:nth-child(7n+4) {color: yellow;}
#rainbow span:nth-child(7n+5) {color: cyan;}
#rainbow span:nth-child(7n+6) {color: orange;}
#rainbow span:nth-child(7n+7) {color: red;}

这是 JS:

function wrapInSpans(str) {
    wrappedStr = "";
    for (var i = 0, len = str.length; i < len; i++) {
        wrappedStr += "<span>" + str[i] + "</span>";
    }
    return wrappedStr;
}
function rewrapContent(objSrc, objTarget) {
    objTarget.innerHTML = wrapInSpans(objSrc.innerText);
}
input = document.getElementById("input");
input.contentEditable = true;
rainbow = document.getElementById("rainbow");
rainbow.contentEditable = true;
input.addEventListener("input", function() {
    rewrapContent(input, rainbow);
}, false);
rewrapContent(input, rainbow);

和 HTML:

<div>
    <div id="rainbow"></div>
    <div id="input">Lorem ipsum dolor sit amet.</div>
</div>

目前唯一的问题是隐藏的 input-div 的文本光标也是不可见的。抱歉,我不确定如何解决这个问题。

关于javascript - 自动着色文本 | JS CSS HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984400/

上一篇:jquery - 无法在右上角设置进度条中的文本

下一篇:html - 如何在桌面上隐藏自定义背景(超过 992px 宽度)

相关文章:

Javascript 短条件含义

javascript - 如何修复 Eslint prefer-destructuring

javascript - 使用 jQuery 混淆响应式菜单

css - 响应式平台——网格还是无网格?

javascript - 如何从下拉菜单选择中显示图像?

html - 引导CSS : aligning columns on small screens

javascript - 将 API 更新信息推送到正在运行的客户端的最佳做法是什么?

html - react 选择 "closeMenuOnSelect={false}"问题

c# - 确定皮肤文件中的 Safari 浏览器?

javascript - 在 NodeJS 中删除/重置/清除布隆过滤器