input file样式包装

初次使用html5的新标签inputp[type="file"]那时,看见标签样式的那一刻我是沉默的,怎么可以这么丑?所以我就动动小手,准备美化一下。于是写下了以下代码:

<!--html-->
<input type="file" id="style"/>

/*css*/
#style{
    width: 168px;
    height: 38px;
    background: #fff;
    border: 1px #CFCFCF solid;
    border-radius: 5px;
}

摇头晃脑轻松自在地打开chrome,脑袋里已经自动播放样式了,然而看到的样式还是...辣么丑。

丑丑的input

于是我就发挥我的聪明才智Google了一下,发现大多人的做法都是相差无几的,做法如下:
1.在input外边包装一层a标签 ,并设置绝对定位

  1. input的透明度设置为0
  2. 把要出现的2文字写在input旁边并设置相对定位
  3. 把样式写给a标签,但是不能设置宽高,不然点击就会直接点a标签,而input就被覆盖了。
    嘻嘻,写个小demo:
<!--html-->
<a href="javascript:(void)" class="upload-wrap">
    <input id="upload" type="file"/>
    <span class="upload-icon">上传文件</span>
</a>

/*css*/
#upload {
    opacity: 0;
    width: 138px;
    height: 38px;
}
.upload-wrap {
    position: relative;
    display: inline-block;
}
.upload-icon {
    position: absolute;
    top: 7px;
    left: 24px;
    color: black;
}
最终样式

好的,然后我们会发现,选择文件后的路径也被opacity为0了,这是后就要用到我们强大的js了。哈哈哈哈哈好吧,其实也只有几行代码。如下:

var upload = document.getElementById('upload');
upload.onchange = function(){
      console.log(this.value);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,686评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,463评论 19 139
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    前端进阶之旅阅读 16,697评论 32 459
  • HTML5 标签comment 注释标签用于在源文档中插入注释。注释内容不会被浏览器显示。为代码编写注释的好处是...
    才気莮孒阅读 9,530评论 1 25
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 8,672评论 1 41