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

先上几个效果饱饱眼福:

使用方法

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

@H_502_27@ HTML结构

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

Choose a file

@H_502_27@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;

}

@H_502_27@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;

});

});

@H_502_27@浏览器禁用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实现文件上传表单域美化特效,希望对大家的学习有所帮助。

总结

以上是编程之家为你收集整理的js实现文件上传表单域美化特效全部内容,希望文章能够帮你解决js实现文件上传表单域美化特效所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

html js文件域val,js实现文件上传表单域美化特效相关推荐

  1. php 美化js文件,js实现文件上传表单域美化特效_javascript技巧

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

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

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

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

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

  4. SpringMVC之多文件上传表单

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

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

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

  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. Android之如何以最简单方式开启闪光灯
  2. abb机器人指令手册_ABB机器人编程之程序流程指令(含案例)
  3. java请求怎么获取token,如何获取变量token的值
  4. requests---requests简介
  5. 走进异步世界:博客程序的异步化改造以及发布后的不理想情况
  6. 架构设计杂谈004——架构师
  7. 复旦大学计算机学院博士生王斌,复旦大学计算机科学技术学院博士生刘鹏飞荣获...
  8. “约见”面试官系列之常见面试题之第九十九篇之router的钩子函数(建议收藏)
  9. 两步路轨迹文件位置_最新Uber ATG的轨迹预测方法LiRaNet介绍
  10. Qt工作笔记-三种方式解决Qt5中文编码问题
  11. mysql手机客户端_图解MySQL索引--B-Tree(B+Tree)
  12. 解决Ubuntu下VNC客户端无法输入s和m的方法
  13. ConcurrentHashMap1.7到1.8变化
  14. 中国科学院大学2013年数学分析高等代数考研试题
  15. 杰里之1T8 烧写器使用文档【篇】
  16. 2010第六届中国移动互联网TOP50
  17. 拯救你的SD卡,找回丢失的文件
  18. Android结课大作业报告
  19. 模仿努比亚网站二(广告区域)
  20. TcaplusDB X 黎明觉醒,探索不止,黎明将至

热门文章

  1. js Array Map and Set
  2. Python合并多个Excel数据
  3. Django ORM那些相关操作
  4. DPM Server切换
  5. w3wp trace文件Debug
  6. java中的static方法可以被重写吗?(从方法调用过程理解)
  7. 25.计算机和计算器的区别
  8. Qt DOM读写XML文件
  9. 全球超算500强榜单更新:美国Summit居首,中国上榜227台
  10. “AI独角兽”半年巨亏52亿 旷视科技的IPO之路会好走吗?