表单button的outline在firefox浏览器下的问题


Posted in HTML / CSS onDecember 24, 2012

outline的使用,大家都喜欢在reset样式表中直接重置:

复制代码
代码如下:

* {
outline: none;
}
 
Eric Meyers 在他的CSS Reset 是这样重置的:
复制代码
代码如下:

/* remember to define focus styles! */
:focus {
outline: 0;
}
 

这些方法大家都可以说常见了。可是有一点可能大家还是不太清楚——outline在表单的button中使用时,在firefox浏览器下依然还是会有虚线框显示的。正好今天有一位朋友也问起这个问题,于是查了一下相关资料,才得知在Firefox下是需要使用别的方法来处理的。那么今天这个教程就简单的来了解如何处理这个问题。

问题描述:

前面也说了,很多设计师喜欢使用:

复制代码
代码如下:

*{outline:none;}
或者
:focus {outline:none;}

来解决焦点粗虚线框的问题。但是你有没有注意到,使用这种方法,对于button在Firefox下还是会有虚线框的,如下图所示:

表单button的outline在firefox浏览器下的问题

解决方法:

解决这个bug我们需要使用Mozilla的一个私有属性:-moz-focus-inner。不过这里有一点大家需要特别的注意:通过“-moz-focus-inner”并不是重置“outline”这个属性的值,而是需要通过他来改变buttons的“border”样式,具体的请看下面的代码:

复制代码
代码如下:

input::-moz-focus-inner,
button::-moz-focus-inner {
border: 0;
}
 
上面写是包括了所有的input,但有时我们并不想这个值对“input[type=text]”有影响,那么我样其实可以这样来设置:
复制代码
代码如下:

button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
border: none;
}

通过上面的代码,那个难看的虚线框,我们就可以顺利的移除:

表单button的outline在firefox浏览器下的问题

这样一来,我们其实对于button的outline设置需要这样来设置,才能达到所有浏览器一样的风格效果:

复制代码
代码如下:

:focus {outline:none;} /*for IE*/
::-moz-focus-inner {border-color: transparent;} /*for mozilla*/
       
这样表单button得到焦点,在各浏览器下的渲染效果就一致了。

上面是去除outline的边框效果的写法,但那样或许不太好理解,那么你也可以像设置正常样式那来理解,如下面的代码所示:

复制代码
代码如下:

button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {
border: 1px dotted transparent;
}
button:focus::-moz-focus-inner,
input[type="reset"]:focus::-moz-focus-inner,
input[type="button"]:focus::-moz-focus-inner,
input[type="submit"]:focus::-moz-focus-inner,
input[type="file"] > input[type="button"]:focus::-moz-focus-inner {
padding: 3px;
border-color: #F3F3F3;
}

上面的使用可算是一个小技巧吧,可能知道的人也蛮多的,我也就不在多说这样的问题,因为要我来说是怎么一回事,我也实在没有那样的水平来说清楚,但我只知道这样的方法能解决问题。那么有关于“outline”的使用还是蛮多的;希望上面的这段代码大家用得上,如果你有更好的解决办法,希望在评论中给我留言。
HTML / CSS 相关文章推荐
对CSS3选择器的研究(详解)
Sep 16 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
Jan 20 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
Jun 22 HTML / CSS
使用phonegap检测网络状态的方法
Mar 30 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
Sep 24 HTML / CSS
HTML5样式控制示例代码
Nov 27 HTML / CSS
一款html5 canvas实现的图片玻璃碎片特效
Sep 11 HTML / CSS
HTML5 Convas APIs方法详解
Apr 24 HTML / CSS
canvas学习总结三之绘制路径-线段
Jan 31 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
Jul 10 HTML / CSS
CSS3 制作精美的定价表
Apr 06 HTML / CSS
Html5通过数据流方式播放视频的实现
Apr 27 HTML / CSS
button在IE6/7下的黑边去除方案
Dec 24 #HTML / CSS
移动Web—CSS为Retina屏幕替换更高质量的图片
Dec 24 #HTML / CSS
image-set实现Retina屏幕下图片显示详细介绍
Dec 24 #HTML / CSS
今天学到的CSS最新技术(与图片背景相关)
Dec 24 #HTML / CSS
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
Dec 19 #HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 #HTML / CSS
css3制作动态进度条以及附加jQuery百分比数字显示
Dec 13 #HTML / CSS
You might like
php 随机生成10位字符代码
2009/03/26 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
php中函数前加&符号的作用分解
2014/07/08 PHP
php blowfish加密解密算法
2016/07/02 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
利用js对象弹出一个层
2008/03/26 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
python 禁止函数修改列表的实现方法
2017/08/03 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
学校运动会开幕演讲稿
2014/01/04 职场文书
国税会议欢迎词
2014/01/16 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
科技工作者先进事迹
2014/08/16 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
员工加薪申请报告
2015/05/15 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers