我有一个文本框,有没有办法隐藏闪烁的文本光标?原因是我正在制作一个恐怖/神秘网站,其中一个线索是从任何地方开始键入。
也许我可以用JavaScript来实现?
基本思路是,光标的颜色与文本的颜色相同。因此,你需要将文本设置为透明,这样光标也会消失。然后,可以通过添加文本阴影再次使文本可见。
使用此链接在 jsfiddle 中实时查看示例。
input[type="text"]{
color : transparent;
text-shadow : 0 0 0 #000;
}
input[type="text"]:focus{
outline : none;
}
更新:
已知在iOS 8和IE 11中无法使用。
我的另一个想法有点hacky,需要使用JavaScript。
HTML和CSS部分:
您可以创建两个输入字段,并使用z-index等将一个精确定位在另一个上面。然后,您将顶部输入字段设置为完全透明,没有焦点,没有颜色等。 您需要将可见的下层输入设为禁用状态,以便仅显示上述输入的内容,但实际上不起作用。
Javascript部分:
在上述所有操作之后,同步这两个输入。在按键或更改时,将高级输入的内容复制到较低的输入上。
总结上述内容:您在不可见的输入框中输入文本,在表单提交时将其发送到后端,但每次更新它的文本时都会被回显到下方的可见但禁用的输入框中。
caret-color: transparent !important;
在新版本浏览器中有效。
!important
有多重要? - alecdwmcaret-color
,它将正常工作。在我的用例中,我在截屏时添加样式,因此我希望覆盖可能已设置的任何自定义CSS。 - cdeutsch我正在寻找一种方法来隐藏iOS设备上的闪烁光标,以便在触发日历的日期输入时,您可以看到光标在日历选择器的顶部闪烁。
input:focus { text-indent: -9999em; }
所以在这种情况下,我的CSS效果很好,显然缺点是如果您需要看到自己在输入什么,则不太好。
input:focus { line-height: 0; }
- gdibble试试这个:
$(document).ready(
function() {
$("textarea").addClass("-real-textarea");
$(".textarea-wrapper").append("<textarea class=\"hidden\"></textarea>");
$(".textarea-wrapper textarea.hidden").keyup(
function() {
$(".textarea-wrapper textarea.-real-textarea").val($(this).val());
}
);
$(".textarea-wrapper textarea.-real-textarea").focus(
function() {
$(this).parent().find("textarea.hidden").focus();
}
);
}
);
.textarea-wrapper {
position: relative;
}
.textarea-wrapper textarea {
background-color: white;
}
.textarea-wrapper,
.textarea-wrapper textarea {
width: 500px;
height: 500px;
}
.textarea-wrapper textarea.hidden {
color: white;
opacity: 0.00;
filter: alpha(opacity=00);
position: absolute;
top: 0px;
left: 0px;
}
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<div class="textarea-wrapper">
<textarea></textarea>
</div>
这个想法是创建一个第二个、不可见的<textarea>
,覆盖在真实的<textarea>
上方。用户在不可见的<textarea>
中输入文本,但是文本(以及光标/游标)不会出现,因为它是不可见的!然后,您可以使用JavaScript将其值分配给可见的<textarea>
。
但是它似乎在IE8中无效:'(,即使不透明度调到最大,光标仍然可见。
但是它在Firefox中有效...?
pointer-events: none;
CSS 属性,而不是这个。 - Shrirang Kadaletab
将焦点放在错误的文本区域上。在这里尝试一下:https://jsfiddle.net/xpo3fqLn/1/ - 在文本框中输入,然后使用 shift+tab
将焦点切换到真正的文本框,光标会回来,两个文本区域不同步。 - Richard JP Le Guen很遗憾,您无法使用CSS样式文本光标。您只能尝试一些非常糟糕的JavaScript技巧,但根据您网站的布局和要求,可能完全不可行。因此,我建议您放弃整个想法。
<input style="position: fixed; top: -1000px">
在iOS8中有效。
readonly
也会实现这一点,因为它防止了焦点,但对于仍需要它的许多用例可能不适用。<input type="text" readonly />
function noCursor(a){
var a = document.getElementById(a),
b = document.createElement('input');
b.setAttribute("style","position: absolute; right: 101%;");
a.parentNode.insertBefore(b, a);
if(a.addEventListener){
b.addEventListener("input",function(){a.value = b.value});
a.addEventListener("focus",function(){b.focus()});
}else{
a.attachEvent("onfocus",function(){b.focus()});
b.attachEvent("onpropertychange",function(){a.value = b.value});
};
}
noCursor('inp');
<input id="inp">
<input type="text" onfocus="this.blur()"/>
style='cursor: default'
吗?我不明白你所说的“闪烁”文本光标是什么意思,我的光标都没有闪烁。 - animuson