自定义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 ...
随机推荐
- python 发送邮件实例
留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例
- 关于 RxJava 技术介绍
Awesome-RxJava RxJava resources Blog 给 Android 开发者的 RxJava 详解 -强烈推荐 扔物线的文章 讲解非常详细 NotRxJava懒人专用指南 -这 ...
- php null o false ''
php中很多还不懂php中0,"",null和false之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦.先看一个例子: <? $str ...
- Spring Boot工程发布到Docker
先聊聊闲话 搞过企业级的application运维的同仁肯定深有感触,每个application的功能交叉错杂,数据交换就让人焦头烂额(当然这和顶层业务设计有关系), 几十个application发布 ...
- java实现httpclient 访问
package com.test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; i ...
- mysql查询结果输出到文件
mysql查询结果导出/输出/写入到文件 方法一: 直接执行命令: mysql> select count(1) from table into outfile '/tmp/test.xls' ...
- JreeeChart入门
JFreeChart主要用来各种各样的图表,这些图表包括:饼图.柱状图(普通柱状图以及堆栈柱状图).线图.区域图.分布图.混合图.甘特图以及一些仪表盘等等 (源代码下载) 示例程序运用的jar包: j ...
- ListView.DragEnter触发不了
经过千百度的搜索之后,终于找到了一点线索,原文是:https://msdn.microsoft.com/en-us/magazine/mt185571.aspx 有能力的可以参阅原文,想省事的可以等待 ...
- Octopus系列之数据上传格式要求说明
各个数据列要求 价格列:字符串类型[美元价格] 产品名字:可以支持"/"等字符 分类名字:去空格处理 不得包含"&"符号 主图:一定要有主图列 不为空 ...
- NGINX location 在配置中的优先级
location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进 ...