选择文件输入的 Firefox 呈现问题
Firefox rendering issue for Choose File input
我们有一个“选择文件”按钮,可以很好地与 Chrome 和 Edge 配合使用。但是 Firefox 无法从 data-content 属性中提取按钮标题。
.choose-file { width: 25%; margin-right: 8px; align-items: center; }
.choose-file > button { width: 100%; }
span.cabinet {
display: block;
height: 30px;
position: fixed;
overflow: hidden;
top: 3px;
width: 88px;
}
span.cabinet input.file {
filter: alpha(opacity = 0);
height: 100%;
opacity: 0;
width: auto;
}
.custom-file-input::-webkit-file-upload-button {
visibility: hidden;
}
.custom-file-input::before {
content: attr(data-content);
margin-top: 5px;
margin-bottom:5px;
padding-bottom: 1px;
display: inline-block;
padding: 5px 8px;
outline: none;
color: #606060;
font-family: Arial,Helvetica,sans-serif;
font-size: 0.8rem;
background-color: #EFF0F4;
border-radius: 3px;
border: 1px solid #ABB8C5;
}
.custom-file-input:hover::before {
content: attr(data-content);
margin-top: 5px;
padding-bottom: 1px;
display: inline-block;
padding: 5px 8px;
outline: none;
font-family: Arial,Helvetica,sans-serif;
font-size: 0.8rem;
background-color: #606060 !important;
color: #EFF0F4;
border-radius: 3px;
border: 1px solid #EFF0F4;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="choose-file">
<span id="span" class="cabinet">
<input tabindex="-1" type="file" id="UploadButton" name="Upload" class="custom-file-input" data-content="Choose File" accept=".xlsx, .xls">
<br>
</span>
</div>
Mozilla 声明 FireFox 不支持 -webkit-file-upload-button.
他们提供用标签包装输入并使用更经典的 HTML 方法。
label {
margin-top: 5px;
margin-bottom:5px;
padding-bottom: 1px;
display: inline-block;
padding: 5px 8px;
outline: none;
color: #606060;
font-family: Arial,Helvetica,sans-serif;
font-size: 0.8rem;
background-color: #EFF0F4;
border-radius: 3px;
border: 1px solid #ABB8C5;
}
label:hover {
background-color: #606060;
color: #EFF0F4;
border-color: #EFF0F4;
}
label input[type=file] { display: none }
<label>
Choose file
<input type=file>
</label>
我们有一个“选择文件”按钮,可以很好地与 Chrome 和 Edge 配合使用。但是 Firefox 无法从 data-content 属性中提取按钮标题。
.choose-file { width: 25%; margin-right: 8px; align-items: center; }
.choose-file > button { width: 100%; }
span.cabinet {
display: block;
height: 30px;
position: fixed;
overflow: hidden;
top: 3px;
width: 88px;
}
span.cabinet input.file {
filter: alpha(opacity = 0);
height: 100%;
opacity: 0;
width: auto;
}
.custom-file-input::-webkit-file-upload-button {
visibility: hidden;
}
.custom-file-input::before {
content: attr(data-content);
margin-top: 5px;
margin-bottom:5px;
padding-bottom: 1px;
display: inline-block;
padding: 5px 8px;
outline: none;
color: #606060;
font-family: Arial,Helvetica,sans-serif;
font-size: 0.8rem;
background-color: #EFF0F4;
border-radius: 3px;
border: 1px solid #ABB8C5;
}
.custom-file-input:hover::before {
content: attr(data-content);
margin-top: 5px;
padding-bottom: 1px;
display: inline-block;
padding: 5px 8px;
outline: none;
font-family: Arial,Helvetica,sans-serif;
font-size: 0.8rem;
background-color: #606060 !important;
color: #EFF0F4;
border-radius: 3px;
border: 1px solid #EFF0F4;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="choose-file">
<span id="span" class="cabinet">
<input tabindex="-1" type="file" id="UploadButton" name="Upload" class="custom-file-input" data-content="Choose File" accept=".xlsx, .xls">
<br>
</span>
</div>
Mozilla 声明 FireFox 不支持 -webkit-file-upload-button.
他们提供用标签包装输入并使用更经典的 HTML 方法。
label {
margin-top: 5px;
margin-bottom:5px;
padding-bottom: 1px;
display: inline-block;
padding: 5px 8px;
outline: none;
color: #606060;
font-family: Arial,Helvetica,sans-serif;
font-size: 0.8rem;
background-color: #EFF0F4;
border-radius: 3px;
border: 1px solid #ABB8C5;
}
label:hover {
background-color: #606060;
color: #EFF0F4;
border-color: #EFF0F4;
}
label input[type=file] { display: none }
<label>
Choose file
<input type=file>
</label>