自定义webkit搜索框样式
好吧,这是个有点儿蛋疼的文章,每个浏览器都可以有自己的行为和表现,只是webkit在apple的带领下,在UI上走的更远了一点儿,但是却给我们带来了点儿困扰,因为很多情况下,我们希望搜索框在所有的浏览器上表现一致。。。
用过mac的同学应该了解这个情况:

就拿前端观察右上角的搜索框来说,在Windows下和mac下的表现就完全不一样啊,mac下(包括safari和chrome),除了宽度外,你设置的其它样式基本是无效的,这种细长的界面和iOS上的搜索框是一样的,或许苹果认为,搜索框就应该是这样的?
那我们在很多情况下需要让页面在所有平台,所有浏览器下表现都基本一致,这就有点儿悲催了,但是也不是没有办法的。。。
方法一:不用type=search
这是最简单的一了百了的做法,使用默认的type=text吧,这样你就可以像定义普通文本框那样定义搜索框了,不足的地方是,搜索的用户体验也不太一样了,同时也会影响到其它浏览器。
方法二:-webkit-appearance
但是方法一对于语义控来说是无法接受的吧,那么我们也可以用CSS3 appearance来解决,这是个很有用的东西啊。
对于设置type=search的搜索框,webkit的appearance设置是:
1 |
-webkit-appearance: searchfield; |
我们将其设置为:
1 |
-webkit-appearance: textfield; |
即可。
貌似这是最完美的方法了
方法三:各种伪元素
webkit的一大优点就是提供了丰富的伪元素来定义一些UI,对于搜索框来说,也有一些可用的:
123456 |
input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration {display: none;}
|
它们分别用来控制搜索框首尾的两个icon:

其实,前面的搜索按钮,是和input的results属性关联的,去掉该属性亦可。
自定义placeholder样式
HTML5表单的placeholder属性是非常好用的,但是基本大家也都follow浏览器的ua样式了,其实可以用一个伪元素来改变这个默认的表现:
123456 |
::-webkit-input-placeholder {/*place your style here*/}::-moz-input-placeholder {/*place your style here*/}/*firefox support too*/
|
另外,有个细节,就是对于placeholder的文字,Firefox/Opera/IE9在输入框focus的时候会隐藏,而chrome却只有在输入任何文字的时候才会隐藏,到Chrome社区反馈了下,Chrome开发人员说是follow了OSX Lion和iOS下Safari的行为。。。但是Windows版的Safari却是focus时隐藏的。。。
W3C规范中对于Placeholder的描述中提到:
User agents should present this hint to the user, after having stripped line breaks from it, when the element’s value is the empty string and/or the control is not focused (e.g. by displaying it inside a blank unfocused control and hiding it otherwise).via
所以,看来Firefox/Opera等浏览器的行为是比较“正确”——虽然这里无所谓对于错,只是用户操作习惯的问题。
不止我自己向Chromium社区反馈这个bug,但是看来Chrome是不准备fix的,那么如果我们要让webkit和其它浏览器的行为保持一致,也是可以修正的:
1 |
input:focus::-webkit-input-placeholder { color: transparent; }
|
结语
当然没有一个浏览器是完美的,我们以后和webkit打交道的机会会越来越多,虽然有一些类似的很琐碎的界面修正,但是webkit的优点是提供了比较多的私有样式(虽然并不全部是CSS3草案中的)让我们可以更自由的自定义,而从另一方面,对于最近火热的反webkit行动来说,如果其它浏览器兼容了这些不太标准化的行为的话,大家肯定是不愿意看到的吧。
ZT FROM HP:http://www.qianduan.net/search-box-style-custom-webkit.html
自定义webkit搜索框样式的更多相关文章
- iOS开发UI篇 -- UISearchBar 属性、方法详解及应用(自定义搜索框样式)
很多APP都会涉及到搜索框,苹果也为我们提供了默认的搜索框UISearchBar.但实际项目中我们通常需要更改系统默认搜索框的样式.为了实现这一目标,我们需要先搞懂 UISearchBar 的属性及方 ...
- uniapp自定义顶部搜索框兼容微信小程序
zhuanzai: uniapp自定义顶部搜索框兼容微信小程序 自定义组件 navbarvue (胶囊底部高度 - 状态栏的高度) + (胶囊顶部高度 - 状态栏内的高度) = 导航栏的高度 < ...
- jquery美化select,自定义下拉框样式
select默认的样式比较丑,有些应用需要美化select,在网上找到一个很好的美化样式效果,本人很喜欢,在这里分享一下. <!DOCTYPE html PUBLIC "-//W3C/ ...
- 好看css搜索框样式_分享8款纯CSS搜索框
最简单实用的CSS3搜索框样式,纯CSS效果无需任何javascript,其中部分搜索框在点击的时候有动画特效,搜索框的应用也是比较普通的,效果如下: 设计网站大全https://www.wode00 ...
- android自定义弹出框样式实现
前言: 做项目时,感觉Android自带的弹出框样式比较丑,很多应用都是自己做的弹出框,这里也试着自己做了一个. 废话不说先上图片: 实现机制 1.先自定义一个弹出框的样式 2.自己实现CustomD ...
- jQuery带tab切换搜索框样式代码
效果体验:http://hovertree.com/texiao/jquery/23/ 代码如下,保存到HTML文件也可以查看效果: <!DOCTYPE html> <html la ...
- bootstrap搜索框样式代码及效果
<div class="container"> <div class="input-group"> <input type=&qu ...
- 自定义webkit浏览器滚动条样式
::-webkit-scrollbar { width: 5px; height: 5px; } ::-webkit-scrollbar-track { background-color: trans ...
- 配置android.support.v7.widget.Toolbar 搜索框样式
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
随机推荐
- struts(三) ---OGNL的学习和理解
OGNL:Object graphic Navgation Language(对象图形的导航语言)
- http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321
集体智慧勘误表: http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321 ------------------- ...
- Number plate recognition with Tensorflow
2015年5月 在此处 http://matthewearl.github.io/2016/05/06/cnn-anpr/#rd 寻觅出 使用TenserFlow的车牌号识别 技术. 感觉很有必要 ...
- 微信网页授权,微信登录,oauth2
微信官方文档: http://mp.weixin.qq.com/wiki 微信公众平台OAuth2.0授权详细步骤如下: 1. 用户关注微信公众账号.2. 微信公众账号提供用户请求授权页面URL.3. ...
- PDF 补丁丁 0.4.2.950 测试版发布:按文件夹合并生成单独的PDF文件
新的测试版实现了将文件夹的内容合并为单独的PDF文件的功能.以下图为例讲解操作步骤. 点击工具栏的“合并文件”按钮,打开合并功能. 设M盘下有“test”和“test2”文件夹,里面包含了需要合并的文 ...
- CodeForces 688A-Opponents
题意: Arya在学校有n个敌人(一串含有0,1的数字表示),有一个游戏规则,如果当天这n个敌人全部出席("1"代表出席,),即这串数字全部为"1",则Arya ...
- ubuntu安装无线驱动
一.无线驱动的安装. 首先查看自己的网卡类型:lspci -vnn | grep 14e4 查看内核版本: -uname -r 去www.broadcom.com/support/802.11/lin ...
- jQuery.extend源码深层分析
在网站的开发中,经常会自己写一些jQuery插件来方便使用,其中自然少不了一个关键的方法->jQuery.extend(),使用这个方法来扩展jQuery对象. 那么今天就来讲讲这个函数的实现原 ...
- java的eclipse操作和常用类Object的使用
1.eclipse的快捷键: (1)alt + / 内容辅助. 如:main+alt + / 会出现完整的main方法. syso+alt+ / 会输出. 如编写某个方法时,只需写入方法名 + a ...
- (spring-第17回【AOP基础篇】) 创建增强类
一. 增强类包含的信息: a) 横切逻辑(插入的具体代码) b) 部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二. 增强的类型 每一种增强有一个需要实现的增强类 ...