• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > FireFox下文本框/域百分比自适应数值padding显示bug解决方案

FireFox下文本框/域百分比自适应数值padding显示bug解决方案

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含文本框,百分比,padding等相关知识,佚名 希望在学习及工作中可以帮助到您
一、问题描述

我是流体布局控,经常会遇到文本框以及文本域宽度100%自适应显示的情况。

如下效果图:
文本域宽度100%显示 张鑫旭-鑫空间-鑫生活

在窄屏下,上面的文本框宽度也要跟着外部宽度变小。

难点
对于文本框或者文本域,光标最好距离左侧边缘有一定的间距。因此,我们基本上都有类似下面的设置:

如下截图:
FireFox下面文本框百分比padding显示的问题截图

这个问题再FireFox浏览器下存在已经有3年之久了,到现在还没有修复。

如何修复这个问题呢?

//zxx: 可能有人会提议div模拟文本框(即div设置padding值), 文本框本身no border, no padding, 且width:100. 这种操蛋的方法我是一点都不喜欢的(纯属个人喜好,没有攻击的意思),一是啰嗦;二来文本框本身可能就有box-shadow, outline以及内联的交互验证UI(如验证非法红色外发光),难道你想把这些都抹杀掉??

更新2012-11-30

注意:FireFox 17+已经修复了该问题!

二、text-indent修复法

firefox浏览器下的问题其实只是文字的位置问题而已,其本身的宽度渲染都是准确的,因此,我们可以把解决问题的关键点放在解决文字不缩进的问题上——我们自然而然就会想到文字缩进属性text-indent.

于是,在FireFox浏览器下,我们只要设置:

现在的问题是,如何只让FireFox浏览器设置这个属性呢?FireFox浏览器有专属的hack吗?

我们打开FireBug, 点击下图所示的地方:
FireBug打开浏览器默认的样式设置 张鑫旭-鑫空间-鑫生活

于是,对于刚才的文本框,我们会看到FireFox浏览器默认对其的设置,其中有个这个:
文本框默认的一些属性设置 张鑫旭-鑫空间-鑫生活

这正是我们需要的,因此,添加类似下面的补丁:

修复之后的效果如下截图:
FireFox浏览器下text-indent修复后截图 张鑫旭-鑫空间-鑫生活

1024宽度下的截图:
1024宽度下FireFox浏览器下修复截图

可能的疑问
说到这里,可能有比较灵光的同行会疑问,既然text-indent可以让文字位置后移,那为何要使用padding呢,直接:

这确实是个不错的idea, 只可惜在IE6/IE7浏览器下,text-indent会偏移文本框的位置(连文本框自身一起缩进了!)。如下截图示意:
IE6/IE7下文本框一起缩进了! 张鑫旭-鑫空间-鑫生活

如下测试代码:

局限
text-indent撑开文字边距是有局限性的,显而易见,其只能让第一行文字有边距。于是,当面对多行文本域(textarea)的时候,text-indent就捉襟见肘,无能为力了!

因此,对于文本域,我们需要寻求其他完善方法。

三、box-sizing的修复策略

FireFox下文本框或文本域对百分比padding值的显示有问题,但是对具体px的padding值显示却正常。因此,我们可以设置padding-left/padding-right为类似10px这样的具体数值,而把问题解决的重心放在如何宽度100%显示上。

在CSS3属性中,有个叫做box-sizing的好东西,IE8+以及现代浏览器都支持,如果我们设置该属性值为border-box,则padding值不会撑大元素的设定宽度,如width:100px; padding:10px;最后元素占据的宽度还是100像素而不是120像素。

于是,这里,我们可以如下设置CSS:

四、CSS3 cacl()计算修复

上面的box-sizing方法影响到了原本OK的height设置,而使用CSS3 cacl()计算只针对目标属性width进行处理,如下修复代码:

于是,有大致如下的修复效果图(FireFox浏览器截图)

您可能想查找下面的文章:

  • 利用CSS3实现文本框的清除按钮相关的一些效果
  • CSS如何对齐文本框和其旁边的图像按钮比如搜索框等等
  • 表单文本框尺寸调整与按钮对齐问题(分成了两行)
  • css控制文本框宽度的方法
  • 一个看起来比较舒服值得学习的文本框样式
  • CSS为指定的input文本框添加背景
  • chrome表单自动填充导致input文本框背景变成偏黄色问题解决
  • FireFox下文本框/域百分比自适应数值padding显示bug解决方案
  • 怎样对齐文本框和图像(image)按钮实现三点一线
  • input 文本框 文字垂直居中对齐 ie firefox

相关文章

  • 2017-08-06CSS学习中的瓶颈期深入分析
  • 2017-08-06IE6/7中使用setAttribute设置table的cellpadding和cellspacing的Bug
  • 2017-08-06Ztree在低版本浏览器下显示错行问题的解决方法
  • 2017-08-06CSS居中效果之transform的使用
  • 2017-08-06利用css @viewport 做设备适配
  • 2017-08-06bootstrap3.0教程之栅格系统案例(包括栅格选项、从堆叠到水平排列、移动设备和桌面等
  • 2017-08-06CSS Cookbook创建水平导航菜单
  • 2017-08-06CSS伪类和伪元素的区别详解
  • 2017-08-06CSS网页布局开发时的常见问题小结
  • 2017-08-06css3制作动态进度条以及附加jQuery百分比数字显示

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • CSS伪类
    • CSS3实现可关闭的下拉手风琴菜单效果
    • div+css实现蓝色vista风格css导航菜单效果
    • li样式不显示使用overflow:hidden导致Li前面点、圈等样式不见
    • ie下margin不居中的三种解决方法
    • IE6的3像素 bug解决方案分享
    • css 提示框 CSS实现带箭头的DIV提示框
    • bootstrap3.0教程之表单(form)使用详解
    • css串联选择器和后代选择器使用方法
    • 浅析css3中matrix函数的使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有