热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

input文件域的美化

不得不说input file文件域真是丑的一*。。。,与页面中的元素差异相差太大,而且各个浏览器的显示效果还不一样,真不想用这玩意,真头疼。好

不得不说input file文件域真是丑的一*。。。,与页面中的元素差异相差太大,而且各个浏览器的显示效果还不一样,真不想用这玩意,真头疼。好吧,说点正经的,来聊一聊怎么美化input file文件域。

  1.最开始的做法

  我一开始的想法很暴力,隐藏文件域,设置一个按钮,点击按钮用jquery的trigger方法模拟input file文件域的click事件。结果是FF11,IE8,IE7都可以触发click事件,FF11可以触发input file的onchange,IE8以及IE7无法触发onchange,也就是input file的value为空,webkit核心的chrome和safari根本连click都无法触发,值得一提的是稍老版本的chrome倒是可以触发click。有兴趣的可以试试这个方法。

  2.改进的方法

  说起来这是做一个图片按钮获得的灵感。因为要提交表单,又懒得用js,所以就将submit按钮放到了有图片背景的容器里面。按钮控件还算好调教,设为透明,width、height都设为100%,绝对定位blahblah,好用极了,也很有效。我就想文件域是不是也可以这么搞呢,于是就写了个demo。


 上传
 

 

 

  .button{

  width:100px;

  height:50px;

  line-height:50px;

  border:1px solid #cccccc;

  background:#eeeeee;

  border-radius:3px;

  position:relative;

  display:inline-block;

  text-align:center;

  overflow:hidden;

  }

  .file{

  filter:alpha(opacity: 0);

  opacity:0;

  position:absolute;

  left:0;

  top:0;

  width:100%;

  height:100%;

  display:block;

  cursor:pointer;

  }

 

  在各个浏览器查看了效果,ff根本就不鸟你的height100%,其他浏览器均ok,感觉很蛋疼。好吧,那就给file加大字体好了,只要字体高度大于按钮的高度就好了。你也可能发现了,虽然设置了cursor,但是各个浏览器的还是不能一致的显示小手,设为不透明,fontsize默认,看了下各个浏览器下的效果,如下图:

各浏览器显示效果

  好吧,FF下只有文件域的按钮是小手图标,chrome和safari正好相反,ie倒是不错,显示效果与预期一致。如果想要显示效果一致,我想我们可以用一些hack的方法,想到这里,真的感觉想要在地上滚来滚去。。正如图上所示,我们完全可以把不能显示小手图标的部分通过绝对定位隐藏掉。FF是文本框部分,chrome及safari是button部分,增加文件域的width及height我们就往左上角移动就好了。通过我蛋疼的测试,ff根本就不鸟文件域的文本框部分height和width属性,倒是可以正确的显示button的height,所以只要把文本框从左侧遮住就好了。对于webkit核心,从上方遮住按钮就好了。通过蛋疼的测试(font-size为14px)绝对定位如下:

 

  left:-155px;

  top:-22px;

  width:500%;

  height:200%;

  cursor:pointer;

  font-size:14px;

 

  此时为了照顾ff,容器宽度就只能设置为固定的65px才能正好显示完全文件域的按钮部分。但是此时问题又来了,ie8及ie7中文件域中的文本框部分必须双击才能打开选择文件窗口,都蛋疼的走到这一步的了,看来不再差一点更蛋疼的方法了—-firefox hack。哇哈哈,ff也有这一天。。我们把上面的left设为0,加入如下代码

  @-moz-document url-prefix(){

   .file{

   left:-155px;

   }

  }

  这下就大功告成了,蛋疼版的完美美化文本域,好吧,提供两个demo大家可以看下效果,onchage也可以触发的。


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • css,背景,位置,y,background, ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • jQuery实现简单的动画效果及用法详解
    本文详细介绍了使用jQuery实现简单动画效果的方法,包括显示/隐藏、向上收缩/向下展开、淡入/淡出、自定义动画等。同时提供了具体的用法示例,并解释了参数的含义和使用技巧。通过本文的学习,读者可以掌握如何使用jQuery实现各种动画效果,为网页增添生动和互动性。 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
  • (PC+WAP)织梦模板户外设备类网站
    模板介绍:织梦内核开发的模板,该模板属于户外设备、宣传栏类企业都可使用,这款模板使用范围极广,不仅仅局限于一类型的企业&#x ... [详细]
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • 前端提高篇(七十):SVG基本使用、基本样式、路径path
    SVG是使用XML来描述二维图形和绘图程序的语言。SVG遵循的是xml的规范,与html5的使用有所区别SVG绘制出来的是矢量图,放大之后不会失真官方文 ... [详细]
  • Scrapy 爬取图片
    1.创建Scrapy项目scrapystartprojectCrawlMeiziTuscrapygenspiderMeiziTuSpiderhttps:movie.douban.c ... [详细]
author-avatar
时光机少女
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有