微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html – Firefox和Chrome中的Textarea padding不一致

我在我的textarea元素上有一个填充,我希望内容在文本区域中滚动时保持填充.它在Firefox中正常工作,但不在Chrome中.下图显示输出差异:

CSS:

textarea { 
    width: 250px; 
    height: 160px; 
    padding: 15px; 
    font-family: Arial; 
    font-size: 12px; 
    line-height: 18px; 
    border: 1px solid #CCCCCC; 
    overflow: auto; 
    resize: none;
}

在Chrome中,顶部和底部填充仅显示在文本内容的开头和结尾.这是一个jsfiddle来演示:

http://jsfiddle.net/LkE6f/

如何使Chrome中的填充以与Firefox相同的方式显示/呈现?

解决方法

你可以做这样的事情,它不是很灵活(固定宽度),但你可以扩展它.它解决了Chrome中的问题,并且不会破坏Firefox.它在#container,which work in IE8+上使用伪元素
textarea {
    width: 250px;
    height: 160px;
    padding: 15px;
    font-family: Arial;
    font-size: 12px;
    line-height: 18px;
    border: 1px solid #CCCCCC;
    overflow: auto;
    resize: none;
    display: block;
}
#container:before,#container:after {
    display: block;
    height: 15px;
    background-color: #FFF;
    position: absolute;
    left: 1px;
    width: 225px;
    content:'';
}
#container:before {
    top: 1px;
}
#container:after {
    bottom: 6px;
}

这是一个jsFiddle.

更新:添加display:block到textarea来修复IE定位问题.

更新2:替代解决方案,它的宽度从#container div,您需要根据浏览器的滚动条的宽度设置正确的值,17px的值在Chrome中是确定的.使用此解决方案的专家是通过更改#container的宽度可以将textarea的宽度设置为任何值,并且伪元素将相应缩放. jsFiddle.

#container {
    width: 260px;
    margin: 20px auto;
    position: relative;
}
textarea {
    width: 100%;
    height: 160px;
    padding: 15px;
    font-family: Arial;
    font-size: 12px;
    line-height: 18px;
    border: 1px solid #CCCCCC;
    overflow: auto;
    resize: none;
    display: block;
}
#container:before,#container:after {
    display: block;
    height: 15px;
    background-color: #FFF;
    position: absolute;
    left: 1px;
    right: 17px;
    content:'';
}
#container:before {
    top: 1px;
}
#container:after {
    bottom: 1px;
}

原文地址:https://www.jb51.cc/html/230402.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐