HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)


Posted in HTML / CSS onJanuary 05, 2017

上传基本是项目中经常出现的,一般采用:

1、form提交

2、flash

3、HTML5

form提交会刷新页面,很难做到异步上传;flash可能是用得比较多了,因为可以兼顾到几乎所有的浏览器,我之前一直会用jQuery的uploadify作为项目中的上传工具,uploadify也有基于Html5好像是收费的,大家可以去官网看看;当然了,现在html5提供了API以及File,FileReader,XMLHttpRequest等强大的API,为我们拖放实现上传提供了可能。

效果图1:

HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)

效果图2:

HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)

由于本地上传实在太快,录了个80M的gif,终于可以看到上传的细节效果了,是不是还是很不错的。

由于代码比较多:

这一片主要讲一下HTML和CSS:

HTML代码:

<!DOCTYPE html>  
<html>  
<head>  
    <title></title>  
    <meta charset="utf-8"/>  
    <link href="reset.css" type="text/css" rel="stylesheet"/>  
    <link href="01.css" type="text/css" rel="stylesheet"/>  
  
</head>  
<body>  
  
  
<div id="uploadBox">  
    <ul>  
        <li>  
            <img src="images/pic1.jpg"/>  
            <span class="progress"></span>  
            <span class="percentage"></span>  
        </li>  
  
  
        <li>  
            <img src="images/pic2.jpg"/>  
            <span class="progress"></span>  
            <span class="percentage">12%</span>  
        </li>  
  
  
        <li class="done">  
            <img src="images/pic2.jpg"/>  
            <span class="progress"></span>  
            <span class="percentage"></span>  
        </li>  
  
        <div class="clearfix"></div>  
    </ul>  
  
</div>  
  
</body>  
</html>

还是很简洁的:

a、一个div#uploadBox,里面ul li 代表每个上传图片单元

b、li img 图片

c、li span.progress用于显示进度,有种水上涨的效果,从height:0% -100%;

d、li span.percentage 用于在图片中央显示 1% 到100%数字,当到达100%时,显示一个正确的图片

CSS:

body  
{  
    background: #eee;  
}  
  
#uploadBox  
{  
    width: 622px;  
    height: 362px;  
    background-color: #fff;  
    border: 1px solid #777;  
    margin: 120px auto;  
}  
  
#uploadBox ul li  
{  
    float: left;  
    position: relative;  
    margin-left: 5px;  
    margin-top: 5px;  
}  
  
#uploadBox  li img  
{  
    border: 1px solid #D1D1D1;  
    width: 198px;  
    height: 112px;  
    vertical-align: middle;  
}  
  
#uploadBox  li  .percentage  
{  
    width: 69px;  
    height: 69px;  
    position: absolute;  
    left: 50%;  
    top: 50%;  
    margin-left: -34.5px;  
    margin-top: -34.5px;  
    text-align: center;  
    font-size: 18px;  
    line-height: 69px;  
    color: #fff;  
    border-radius: 34.5px;  
    background: rgba(0, 0, 0, .8);  
}  
  
#uploadBox  li.done .percentage  
{  
    background: url("images/done.png") no-repeat 0 0;  
    text-indent: -1000em;  
}  
  
#uploadBox li .progress  
{  
    position: absolute;  
    height: 22.4px;  
    bottom: 0px;  
    width: 200px;  
    background: #000;  
    opacity: .5;  
}  
  
.clearfix  
{  
    clear: both;  
}

都是比较简单的,基本就是定位的简单使用~大家自己看下~

最后效果图:

HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
Feb 07 HTML / CSS
利用css3制作3D样式按钮实现代码
Mar 18 HTML / CSS
CSS3媒体查询(Media Queries)介绍
Sep 12 HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
Sep 12 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
你不知道的5个HTML5新功能
Jun 28 HTML / CSS
5个你不知道的HTML5的接口介绍
Aug 07 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
canvas绘制视频封面的方法
Feb 05 HTML / CSS
详解webapp页面滚动卡顿的解决办法
Dec 26 HTML / CSS
AmazeUI 点击元素显示全屏的实现
Aug 25 HTML / CSS
html+css实现赛博朋克风格按钮
May 26 HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 #HTML / CSS
HTML5 File接口在web页面上使用文件下载
Feb 27 #HTML / CSS
使用phonegap检测网络状态的方法
Mar 30 #HTML / CSS
HTML5文档结构标签
Apr 21 #HTML / CSS
HTML5的文档结构和新增标签完全解析
Apr 21 #HTML / CSS
html5的localstorage详解
May 09 #HTML / CSS
基于HTML5 Canvas 实现弹出框效果
Jun 05 #HTML / CSS
You might like
php比较两个字符串长度的方法
2015/07/13 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
记React connect的几种写法(小结)
2018/09/18 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
详解python中list的使用
2019/03/15 Python
python实现手机销售管理系统
2019/03/19 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
Python实现不规则图形填充的思路
2020/02/02 Python
Python如何使用input函数获取输入
2020/08/06 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
俞敏洪一分钟演讲稿
2014/08/26 职场文书
大学生入党群众意见书
2015/06/02 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
讨论nginx location 顺序问题
2022/05/30 Servers