解决方法:用普通标签模拟,背景图设置在普通标签里面,表单功能还是用input来实现,交互功能得用JavaScript来实现。换句话说,CSS控制普通标签的样式来美化表单,JavaScript实现表单交互功能。
案例分析:移动端兼容 - 调用相册的按钮样式处理
具体情形:<input type="file" accept="image/*capture=camera">或者<input type="file" capture="photo">设背景图无效。在我们的移动端网页当中,会有上传照片的操作需求。此时会使用到文件类型的input文本框,但是不同的系统不同的浏览器在样式上均不相同,而且,设置背景图也没有效果。
解决方法:通过设置opacity为0来进行模拟,背景图设置在其他标签里面。换句话说样式用普通标签模拟,功能用input来实现。
测试效果图:
《CSS美化表单大集锦》
通常来说js无法通过css美化的,js偏向于逻辑算法、动态交互类的。css的美化功能主要是针对html的,与js有也是间接的关联,比如通过js给html标签动态添加一些css样式,或者给html标签动态添加具有css样式的类名等。为了达到更好的交互效果,提高用户友好度,对文本框输入框之类的美化工作是很必要的。一般的美化工作可以直接通过使用CSS完成,方法也十分简单,如下:1、首先制作一张输入框的背景图,如上图所示。2、添加按钮的Html代码:<input type=button class=Selectbg3、然后用css代码将它定义:<stylebody{font-size:12px }.Selectbg{border:nonewidth:150px height:20px background-image:url(image.gif) text-align:leftline-height:20px }</style在写CSS代码的时候要注意,如果背景图中带边框,一定要将输入框的边框去掉,否则会显示默认边框;其次还要将高度和行高定义好,否则点击输入框后文字的位置会很难看。