CSS   发布时间:2022-04-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了css – 如何强制Firefox渲染textarea填充与div中相同?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在IE8,Firefox和Safari中的textarea内部以像素为单位提供一致的宽度,以便文本内容尽可能地以可预测和一致的方式包装行.

Firefox正在做一些有点奇怪的事情:它在textarea的内容空间与其他两个浏览器之间有一个额外的填充像素,与一个类似装备的div块相比.

将此类应用于textarea和div时,差异是可见的,div中的文本触及红色背景的左外边缘,但textarea中的文本尽管填充为零,仍具有1 px填充式偏移:

.TESTBox{
    padding:0;
    margin:0;
    border:0;
    BACkground: red;
    width: 40px;
    height: 40px;
    font-size: 12px;
    line-height: 16px;
}

填充的其他值最终显示一个额外的偏移像素与div.

关于是否有办法欺骗Firefox渲染textarea就好像它是一个div,或者为textarea调整这个不填充但看起来像填充属性的任何想法?

解决方法

我最近一直在研究OP为 a similar question on SO描述的问题.似乎Firefox中的一个错误导致在textarea元素上渲染这种所谓的“不填充但看起来像填充”.

通常这个额外的填充并不是一个真正的问题,但是当你想要保持两个元素的宽度相同时,它会成为一个问题,而你关心的是让它的内容在两个元素中以相同的方式包装.

获取textarea以包装内容与例如Firefox中的div元素

似乎不可能在Firefox中删除textarea上的这个1.5px宽的填充,所以如果你想确保Firefox中div内的包装内容与Firefox中textarea内部包装的内容完全相同,最佳方法似乎是在div中的右侧和左侧添加额外的1.5px填充,但仅限于Firefox.您可以通过在div上设置以下特定于供应商的前缀CSS属性来实现此目的:

-moz-box-sizing: border-box;
-moz-padding-end: 1.5px; 
-moz-padding-start: 1.5px;

第一个确保div上的填充设置不会增加div的宽度,接下来的两个确保在div的右侧和左侧设置1.5px的填充.

这种方法不会影响任何其他浏览器中div的渲染,它不需要,因为其他浏览器中的textarea不会渲染任何额外的填充.但它确保在Firefox内部的div和textarea之间没有内容包装差异,只要它们共享相同的font-family和font-size属性等等.

这是一个jsFiddle用于演示目的.

让textarea在浏览器中一致地包装内容

如果您只想确保Firefox中的textarea与其他浏览器中的textarea具有相同的宽度和包装行为,可以将其box-sizing设置为border-box,在5.5px的两边添加一个填充并设置-moz -padding-end和-moz-padding-start到0px.

textarea {
    padding: 0 5.5px 0 5.5px;
    -moz-padding-end: 0px;
    -moz-padding-start: 0px;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

这是一个显示这种方法的jsFiddle.

大佬总结

以上是大佬教程为你收集整理的css – 如何强制Firefox渲染textarea填充与div中相同?全部内容,希望文章能够帮你解决css – 如何强制Firefox渲染textarea填充与div中相同?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。