出于各种原因,我想以图形方式模糊(即不聚焦/模糊)type=text
输入内的文本,而不是整个元素。
有办法做到这一点吗?
我目前有这个:
.validation:not(:focus) {
-webkit-filter: blur(3px);
filter: blur(3px);
border:0;
}
.validation-border{
border: 1px black solid;
z-index:20;
}
<p>
<label>Text</label>
<span class="validation-border">
<input class="validation" type="text" value="blurred text"/>
</span>
<label>Some text</label>
<input/>
</p>
最后一个类样式定义是用类validation
替换输入的边框。
但这远非完美:
是否有更好的方法来模糊文本,而不是边界框?或者其他一些方法来掩盖模糊输入元素的副作用
答案 0 :(得分:6)
我们不是影响整个框,而是将字体颜色更改为透明并添加文本阴影效果。
.blur-on-lose-focus:not(:focus) {
color: transparent;
text-shadow: 0 0 5px rgba(0,0,0,0.5);
}
<div>
<input type="text" class="blur-on-lose-focus" value="blurred text"/>
</div>
详细here。
答案 1 :(得分:2)
不幸的是,你不能模糊元素的内部(在写作时),也不会模糊其边界框,边框等。另一种方法是:
<div class="input-like">
<input>
</div>
将.input-like
容器的样式设置为输入(边框等)。然后从包含的input
元素中删除边框和其他样式。此时,您可以将模糊滤镜应用于输入,并保持包含元素不变。
模糊泄漏似乎来自输入上的输入尝试设置background-color: transparent;
和包含元素上的background-color: white;
的白色背景。
答案 2 :(得分:1)
完全删除input's
边框(不仅仅是当它没有聚焦时)
.validation {
border:0px;
}
此外,您可以删除焦点大纲(尽管出于辅助功能的原因不建议这样做):
.validation:focus {
outline:none;
}
.validation{
border:0px;
}
.validation:not(:focus) {
-webkit-filter: blur(3px);
filter: blur(3px);
}
.validation:focus {
outline:none;
}
.validation-border{
border: 1px black solid;
}
<label>Text</label>
<span class="validation-border"><input class="validation" type="text"></input></span>
<label>Some text</label><input />