博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
做一个假文件上传按钮
阅读量:4554 次
发布时间:2019-06-08

本文共 727 字,大约阅读时间需要 2 分钟。

由于浏览器自带的文件上传元素太丑,我们大多数情况下都是将它隐藏起来,用一个漂亮的按钮来代替。

今天我就碰到了这么一个需求,一开始觉得不就是把input不透明度设为0,然后覆盖在button上嘛,有什么难的。

2018-1-22更新:

采用label的for属性,然后将input元素隐藏,这样,点击label就能触发打开文件的操作,才是最佳方案。for属性指向input元素的id。代码如下:

以下原文。

但实现的过程中才发现对我的css提出了考验。

基础结构:

请选择文件

点击无效

接下来我们会发现点击文字没有效果,这是因为input文字下面,所以第一步,就要把文字移上去。这里要用到相对定位了。

:position:relative;

相对定位是元素相对于它在正常流中的位置进行移动的。
把opacity属性设置为20方便观察:

请选择文件

于是我们就发现file元素相对于原来的位置向上移动了40px;

1016471-20170417224757102-1626899047.gif

文字居中

这时发现文字没有居中,不能忍,于是给p加上一个text-align:center属性,然后用line-height实现垂直居中。

请选择文件

1016471-20170418213308634-560623960.gif

height=0的用处

这个时候,按道理已经实现要求了,但是缺点就在于高度都被写死了,改成这样:

请选择文件

将p的高度改为0,p就不占用div的高度。也就不用偏移input元素了。关于line-height不得不看张鑫旭大神的这篇文章:

转载于:https://www.cnblogs.com/imgss/p/6723822.html

你可能感兴趣的文章
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
urllib 中的异常处理
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
比较:I/O成员函数getline() 与 get()(第二种用法)的用法异同
查看>>
7.内部类(一)之详解内部类
查看>>
1.messager消息提示框
查看>>
C teaching
查看>>
分隔指定内容,提取章节数
查看>>
this point
查看>>
验证登录信息是否合法
查看>>
线程池
查看>>
git版本控制器的基本使用
查看>>
Redis 笔记与总结4 set 和 zset 类型
查看>>
jQuery Ajax 回调函数中调用$(this)的问题 [ 转 ]
查看>>
thymeleaf:字符串拼接+输出单引号
查看>>
springboot:集成fastjson(教训)
查看>>
网络流 Edmons-Karp 算法讲解
查看>>