javascript - 关于div实现placeholder的一个不完美地方?
怪我咯
怪我咯 2017-04-10 18:01:32
[JavaScript讨论组]

把鼠标放上去,鼠标位置并不是像真正的placeholder那样垂直在文字的中间。但是在p里面输入文字时有会跳转,如果不设置line-height(采用默认100%)就没有问题。

p.s: 描述可能不是很清晰,代码可以直接运行,拜托各位看一下,我的运行环境是Chrome53

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <style>
    [contenteditable]:empty:before {
    content: attr(placeholder);
    display: block;
    // 这样设置line-height: normal可以解决问题,但是会导致输入的时候p突然变宽
    // line-height: normal;
    color: #999;
    }
  </style>
</head>
<body>
  <p contenteditable="true" placeholder="输入用户名" style="width:800px; border: 1px solid red; line-height: 200%; padding:5px;"></p>
</body>
</html>

我通过设置line-height: normal解决了这个问题,但是在Chrome下又出现了一个新的问题,就是我一旦开始输入文字的时候,p会突然的变宽,拜托大神提供一个优雅的对于p实现placeholder的优雅方法。


补充

facebook.com的评论框采用的也是p实现placeholder,并且设置line-height: 140%,并没有出现任何的异常,但个人水平太低了,没有看懂实现。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
黄舟

不用 line-height,直接设置上下的 padding 不行吗?

https://jsfiddle.net/u4r7vnvr/

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号