作者:倒霉熊丶JO_205 | 来源:互联网 | 2023-05-18 02:00
我见过这样的演示.
但它是关于创建一个新元素.
parent().append("" + $input.attr('placeholder') + "");
有没有办法让占位符的动画消失input event
而不添加新元素?
$("input[placeholder]").each(function () {
var $input = $(this);
// wrap the input with a label
$input.wrap("
label.placeholder {
position: relative;
}
label.placeholder span {
opacity: 1;
-webkit-transition: opacity 250ms;
-moz-transition: opacity 250ms;
-o-transition: opacity 250ms;
-ms-transition: opacity 250ms;
transition: opacity 250ms;
position: absolute;
left: 5px;
top: 2px;
font-size: 12px;
color: grey;
}
label.placeholder span.hidden {
opacity: 0;
}
1> Josh Crozier..:
有没有办法让动态占位符在输入事件上消失而不添加新元素?
由于默认浏览器伪元素(即::-webkit-input-placeholder
/ ::-moz-placeholder
,:-ms-input-placeholder
)很难跨浏览器设置样式,因此可以使用:before
或:after
伪元素代替附加span
元素.但是,由于无法将伪元素添加到input
元素中,因此仍需要包装input
元素.
更新的示例
伪元素绝对相对于父元素定位,以便它覆盖父元素.该content
伪元素的值是基于包装元素的自定义data-*
属性data-placeholder
,这是使用实现content
价值attr(data-placeholder)
.
我还简化了你的jQuery:
$('input[placeholder]').each(function () {
$(this).wrap('
label.placeholder {
position: relative;
}
label.placeholder:after {
content: attr(data-placeholder);
position: absolute;
top:0; right: 0;
bottom: 0; left: 0;
padding: 2px;
font-size: 12px;
color: grey;
cursor: text;
transition: opacity 250ms;
}
label.hidden.placeholder:after {
opacity: 0;
}