Web网页页面中,在必须提交文档时基础都会用到<input type="file">元素,它的默认设置款式:
chrome下:
IE下:
无论是上面哪样,款式都较为简易,和许多网页页面的设计风格都不太融洽。
依据客户的要求,设计方案设计风格,更改其显示信息款式的场所就较为多了。
假如,要像下面1样做1个bootstrap设计风格的提交按钮该怎样完成。
构建提交按钮所需的基础元素
实际效果(chrome):
如今看到的分两行显示信息。
外围之因此沒有换为div,是由于在IE7-访问器中,要是并不是设成inline,它的宽度统统会撑开到能撑到的宽度。假如设成inline,那元素的宽度就没法调剂,因此这里用span随后设成inline-block能处理这样的难题。
提升款式将两行变为1行
css:
实际效果:
默认设置是沒有浅蓝色边框,仅有电脑鼠标去点一下后,才会显示信息,这里显示信息出来是以便看得清晰。
根据将外围的span设成display:relative,将input设成display:absolute的方法让她们都摆脱文本文档流。
根据将input限制出外围的span中开展肯定精准定位的方法让原本两行显示信息的变为1行显示信息。
具体上这里早已overflow了,真实的宽度是“提交”文本的宽度,改动fileinput-button款式提升overflow: hidden
实际效果:
很成心思,能看到上边后右侧的蓝色边框了吧,实际上便是把左侧和下边的外溢一部分给掩藏了。
这时候候用电脑鼠标去点一下“提交”两个字具体上是点在input上,可以显示信息“开启”会话框,由于显示信息等级上input要比“提交”更挨近客户。
留意input精准定位中的right,为何无需left精准定位。
当大家改为left后。
实际效果(chrome):
实际效果(IE):
在chrome下input元素中的挑选按钮露出来,可是没事儿,能够根据后边的设全透明的方法把它全透明掉。
可是在IE下确是会把键入框露出来,重要是电脑鼠标移到键入框上时,指针会变为键入情况,这个就很无法解决了。
根据right的精准定位方法把键入框移到左侧去的方法,能够在IE下次避出現电脑鼠标指针变为键入态的状况。
全透明input元素
css:
实际效果:
input彻底看不到了踪迹,点一下“提交”仍然合理。
能够适用IE8+。
引进bootstrap,并加上按钮款式
head中提升外界css和js的引入。
提升按钮款式。
实际效果:
处理尺寸难题
假如为fileinput-button款式提升width:100px,将外围的span设成宽100px,会发现点一下下部是沒有反映的,缘故便是input是默认设置尺寸,没法遮盖下部。
能够根据为input设定1个很大的字号将其撑大的方法来处理遮盖难题,这里就设个200px。
这样就可以处理遮盖难题。
进行。
参照:jQuery-File-Upload
假如是要适配IE7-能够参照jQuery-File-Upload中的写法。
编码:
- <!DOCTYPE html>
- <html>
- <head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf⑻">
- <link rel="stylesheet" href="bootstrap/bootstrap.css">
- <link rel="stylesheet" href="bootstrap/bootstrap-theme.css">
- <script src="bootstrap/jquery⑴.10.2.js"></script>
- <script src="bootstrap/bootstrap.js"></script>
- <style>
- .fileinput-button {
- position: relative;
- display: inline-block;
- overflow: hidden;
- }
- .fileinput-button input{
- position:absolute;
- right: 0px;
- top: 0px;
- opacity: 0;
- -ms-filter: 'alpha(opacity=0)';
- font-size: 200px;
- }
- </style>
- </head>
- <body style="padding: 10px">
- <div align="center">
- <span class="btn btn-success fileinput-button">
- <span>提交</span>
- <input type="file">
- </span>
- </div>
- </body>
- </html>