一款效果非常时尚的文件上传表单域美化特效,下面给出制作的简要教程。

先上几个效果饱饱眼福:

使用方法

这些文件上传域的美化使用的方法都是隐藏原生的元素,然后使用一个元素来制作美化效果。

HTML结构

该文件上传域美化效果最基本的HTML结构如下:

Choose a file

CSS样式

首先需要隐藏元素。这里不能使用display: none或visibility: hidden来隐藏它,因为这样做只后,元素里的值不会被上传到服务器端,而且按TAB键时这个元素也不会被找到。隐藏的方法如下:

.inputfile {

width: 0.1px;

height: 0.1px;

opacity: 0;

overflow: hidden;

position: absolute;

z-index: -1;

}

接下来给元素设置样式。这里要将元素制作为一个按钮的样式。

.inputfile + label {

font-size: 1.25em;

font-weight: 700;

color: white;

background-color: black;

display: inline-block;

}

.inputfile:focus + label,

.inputfile + label:hover {

background-color: red;

}

当鼠标滑过label时需要将光标显示为一个小手的形状。

.inputfile + label {

cursor: pointer; /* "hand" cursor */

}

为了制作可以使用键盘导航的效果,需要添加下面的代码。

.inputfile:focus + label {

outline: 1px dotted #000;

outline: -webkit-focus-ring-color auto 5px;

}

-webkit-focus-ring-color auto 5px可以在 Chrome,Opera 和 Safari浏览器中获取默认的边框外观。

如果你使用了类似FastClick(一个在移动触摸设备上消除300毫秒tap-pause的工具库),并且你需要添加一些文本标签,那么按钮将不会正常工作,除非设置了pointer-events: none。

Choose a file

.inputfile + label * {

pointer-events: none;

}

JavaScript

最后需要做的事情是标识用户选择了哪些文件。原生的文件上传域是有这个功能的,但是这里使用的是虚拟的按钮。特效中使用javascript来实现这个功能。

var inputs = document.querySelectorAll( '.inputfile' );

Array.prototype.forEach.call( inputs, function( input )

{

var label = input.nextElementSibling,

labelVal = label.innerHTML;

input.addEventListener( 'change', function( e )

{

var fileName = '';

if( this.files && this.files.length > 1 )

fileName = ( this.getAttribute( 'data-multiple-caption' ) || '' ).replace( '{count}', this.files.length );

else

fileName = e.target.value.split( '\\' ).pop();

if( fileName )

label.querySelector( 'span' ).innerHTML = fileName;

else

label.innerHTML = labelVal;

});

});

浏览器禁用JavaScript的处理

如果浏览器禁用了JavaScript,那么只有使用原生的文件上传域组件。我们需要做的事情是在元素上添加一个.no-js的class,然后使用Javascript来替换它。

.

js .inputfile {

width: 0.1px;

height: 0.1px;

opacity: 0;

overflow: hidden;

position: absolute;

z-index: -1;

}

.no-js .inputfile + label {

display: none;

}

以上就是js实现文件上传表单域美化特效,希望对大家的学习有所帮助。

php 美化js文件,js实现文件上传表单域美化特效_javascript技巧相关推荐

  1. html js文件域val,js实现文件上传表单域美化特效

    一款效果非常时尚的文件上传表单域美化特效,下面给出制作的简要教程. 先上几个效果饱饱眼福: 使用方法 这些文件上传域的美化使用的方法都是隐藏原生的元素,然后使用一个元素来制作美化效果. @H_502_ ...

  2. 【Flask】 结合wtforms的文件上传表单

    表单中的文件上传 基本的表单渲染,表单类设置等等就不多说了,参看另一个文章即可.但是那篇文章里没有提到对于FileField,也就是上传文件的表单字段是如何处理,后端又是如何实现接受上传过来的文件的. ...

  3. dwz 表单提交 html,DWZ文件上传表单提交

    文件上传表单提交 因为Ajax不支持enctype="multipart/form-data" 所以用隐藏iframe来处理无刷新表单提交. 或 服务器端响应 DWZ-v1.2版本 ...

  4. SpringMVC之表单提交===③===多文件上传表单

    上文简单介绍了springmvc单文件上传表单 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台 ...

  5. SpringMVC之多文件上传表单

    上文简单介绍了springMVC之单文件上传 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台申 ...

  6. Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题

    1 .问题 PC浏览器上传表单格式大文件到手机服务器端,然后read文件真实数据时候出现阻塞. 比如 User-Agent: PostmanRuntime/7.26.1Accept: */*Cache ...

  7. 文件上传表单 上传文件的细节 文件上传下载和数据库结合

    1 文件上传表单    1)上传文件的本质是文本复制的过程    2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写    3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方 ...

  8. android 阻塞式函数,Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题...

    1 .问题 PC浏览器上传表单格式大文件到手机服务器端,然后read文件真实数据时候出现阻塞. 比如 User-Agent: PostmanRuntime/7.26.1 Accept: */* Cac ...

  9. 利用mysql实现上传和下载_文件上传表单 上传文件的细节 文件上传下载和数据库结合...

    1 文件上传表单 1)上传文件的本质是文本复制的过程 2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写 3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如: IE6 ...

最新文章

  1. Spanned.SPAN_EXCLUSIVE_EXCLUSIVE的含义
  2. ibatis.net私人学习资料,勿下(加密)
  3. Ubuntu 16.04 LTS下编译GPU版tensorflow
  4. 使用Nginx反向代理到go-fastdfs
  5. java二分查找宿舍管理_1、任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: (1)采用交互工作方式...
  6. ​“统治”移动处理器市场的Arm为何明年Q1才发布AI处理器?
  7. React开发(139):react中onref
  8. 解决:cannot deserialize from Object value (no delegate- or property-based Creator)
  9. 信息系统项目管理师学习笔记16-项目变更管理
  10. office2007卸载不干净 无法安装office64位的版本
  11. 51单片机电子琴设计
  12. UVALive3713 Astronauts
  13. cocos2d-x实现一个PopStar(消灭星星)游戏的逻辑分析及源码
  14. teleop app android,使用yocs_cmd_vel_mux进行机器人速度控制切换
  15. iOS 自定义无限循环滚动广告动画控件
  16. 微信公众号对接网课查题系统
  17. MarkdownPad 2 使用手册
  18. 用什么办法可以解决失眠?
  19. 大学计算机应用基础绩点,出国留学如何计算GPA平均分
  20. 读《Finger Vein Verification using Intrinsic and Extrinsic Features》

热门文章

  1. linux ubuntu配置要求,Ubuntu Server 14.04和Kylin 14.04 Enhanced Release amd64最低硬件配置要求...
  2. 保险智能理赔-医疗票据OCR识别解决方案
  3. 国家著作权: DNA 计算公式, 肽展定理公式与 变嘧啶 推导.
  4. 猛犸Winform分页控件
  5. 点评:洞悉2020年AI产业新趋势,青年科学家们如是说道翰天琼认知智能机器人大脑API接口平台。
  6. IBM ServerGuide 9.40
  7. matlab逐步积分,第17章 隐式逐步积分法.ppt
  8. DBeaver 工具的使用
  9. 2022秋季 电影&书单
  10. 突破网管的局域网网络限制方法大全