将input type=file替换为一张图片。
将input type=file替换为一张图片。
就和很多人一样,我想自定义丑陋的input type=file
,而我知道这只能通过一些黑客技巧或javascript
来实现。但是,问题是,在我的情况下,上传文件按钮只是用于上传图像 (jpeg|jpg|png|gif),所以我想知道是否可以使用一个“可点击的
”图片,它可以完全像一个一样操作(显示对话框并在提交的页面上使用相同的$_FILE)。
我在这里找到了一些解决方法(链接),还有这个有趣的方法(但在Chrome上不起作用 = /)。
当你想为你的文件按钮添加一些样式时,你会怎么做?如果你有任何观点,请点击回答按钮 😉
admin 更改状态以发布 2023年5月22日
实际上,它可以在纯CSS中完成,并且非常容易......
HTML代码
CSS样式
label.filebutton { width:120px; height:40px; overflow:hidden; position:relative; background-color:#ccc; } label span input { z-index: 999; line-height: 0; font-size: 50px; position: absolute; top: -2px; left: -700px; opacity: 0; filter: alpha(opacity = 0); -ms-filter: "alpha(opacity=0)"; cursor: pointer; _cursor: hand; margin: 0; padding:0; }
思路是在标签中绝对定位输入框。将输入框的字体大小设置为较大的值,这将增加“浏览”按钮的大小。然后,使用负的left / top属性进行一些试错,将输入浏览按钮置于标签后面。
定位按钮时,将alpha值设置为1。完成后将其设置为0(这样可以看到正在做什么!)
请确保跨浏览器进行测试,因为它们将以略微不同的大小呈现输入按钮。
这对我非常有效:
.image-upload>input { display: none; }
基本上,标签的for属性使得单击标签与单击指定的输入相同。
此外,设置显示属性为none,使得文件输入不会被渲染,完美地隐藏了它。
在Chrome上测试过,但根据web应该在所有主要浏览器上都可以使用。 🙂
编辑:
在此添加JSFiddle:https://jsfiddle.net/c5s42vdz/