php文件上传前端页面样式,input file上传文件样式支持html5的浏览器解决方案_html5教程技巧...

最近在使用画布处理图像像素时用到了file上传控件,发现了file上传控件的两个兼容性问题。一个是file上传控件在火狐下无法通过css改变width,另一个是file上传控件在不同的浏览器下的外观和行为都不一样。

下面是file上传控件在IE10,firefox16,chrome22,opera12,safari5.1.7里的截图:

cf26867951255aa837d0d7702020a9c3.png

在IE10里,双击输入框或者单击按钮都弹出文件选择框。在其他浏览器里单击输入框,按钮或文字都可以触发文件选择框。

鉴于这种混乱情况,有必要要统一样式和行为。下面是我的兼容性方案。

先看一下最终结果在各浏览器的截图:

e6bdcf6ec55e5bbda7cc7d78d66d5b6c.png

基本思路:创建输入框和按钮模拟file上传控件。将file上传控件设置成透明。让file上传控件与用于模拟的按钮右对齐。修改元素的堆叠顺序,让按钮处于下面,file上传控件在中间,输入框在上面。在文件选择完毕后将file上传控件里的值赋给用于模拟的输入框。

原理:在不同的浏览器里,file上传控件的按钮的height都是可调的,而且file上传控件的右侧都是可以单击的。所以通过调节file上传控件的height,并调整file上传控件的位置(右对齐),可以让file上传控件的可单击区域与用于模拟的按钮完全覆盖。当file上传控件透明时用户单击用于模拟的按钮就触发了文件选择框。但同时file上传控件的堆叠顺序不能先于用于模拟的输入框,不然当用户将鼠标置于所见的输入框上时可能会看到光标不是指示文本而是为一个箭头(而且为一个箭头时单击会弹出文件选择框),用户将感到困惑。

实现:先看看html部分的代码。

复制代码代码如下:

然后是css部分的代码。

复制代码代码如下:

#file {

position:relative;

width:226px;

height:25px;

border:1px #99f solid;

}

#file input {

font-size:16px;

margin:0;

padding:0;

position:relative;

vertical-align:middle;

outline:none;

}

#file input[type="text"] {

border:3px none;

width:172px;

z-index:4;

}

#file input[type="button"] {

width:54px;

height:25px;

z-index:2;

}

#file input[type="file"] {

position:absolute;

right:0px;

height:25px;

opacity:0;

z-index:3;

}

最后javascript部分,用于把file上传控件获得的文件路径显示到可见的输入框里。

复制代码代码如下:

window.οnlοad=function(){

var file=document.querySelector("#file input[type='file']");

var text=document.querySelector("#file input[type='text']");

file.addEventListener("change",assign,false);

function assign(){

text.value=file.value;

}

}

欢迎留言交流或指正。

相关标签:样式 浏览器

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值