自定義input[type=file]的兼容樣式

input[type="file"]的樣式在各個瀏覽器中的表現不盡相同:

1. chrome:

2. firefox:

3. opera:

4. ie:

5. edge:

另外,當我們規定 input[type="file"] 的高度,并把它的行高設置成與其高度相等后,chrome中難看的樣式出現了:


“未選擇任何文件”這一行并沒有豎直居中。

這些瀏覽器中的表現不一致,我們必須做兼容處理。

思路:

1. 自定義與其中一個瀏覽器表現類似的樣式,將其放在下層;

2. 將瀏覽器本身的表現出來的樣式“隱藏掉”, opacity: ?0; 置于上層,這樣我們點擊的才是 input[type="file"] 響應的事件;

3. 選擇文件或改變文件后,改變顯示 file 的值。

<form action="" class="activityForm"><div class="file"><label for="file">文件:</label><div class="userdefined-file"><input type="text" name="userdefinedFile" id="userdefinedFile" value="未選擇任何文件"><button type="button">上傳</button></div><input type="file" name="file" id="file">            </div>
</form>
.file {position: relative;height: 40px;line-height: 40px;
}
.file label {display: inline-block;
}
.userdefined-file {position: absolute;top: 0;left: 60px;z-index: 2;width: 300px;height: 40px;line-height: 40px;font-size: 0;  /*應對子元素為 inline-block 引起的外邊距*/
}
.userdefined-file input[type="text"] {display: inline-block;vertical-align: middle;padding-right: 14px;padding-left: 14px;width: 220px;box-sizing: border-box;border: 1px solid #ccc;height: 40px;line-height: 40px;font-size: 14px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}
.userdefined-file button {display: inline-block;vertical-align: middle;width: 80px;text-align: center;height: 40px;line-height: 40px;font-size: 14px;background-color: #f54;border: none;color: #fff;cursor: pointer;
}
.file input[type="file"] {position: absolute;top: 0;left: 60px;z-index: 3;opacity: 0;width: 300px;height: 40px;line-height: 40px;cursor: pointer;
}
document.getElementById("file").onchange = function() {document.getElementById("userdefinedFile").value = document.getElementById("file").value;
}

這樣處理后,就在各個瀏覽器中表現一致了:

1. 未選擇任何文件時,在 chrome 中:

2. 在選擇文件后,在 firefox 中:

  

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Excel催化劑開源第37波-音視頻文件元數據提取(分辨率,時長,采樣率等)

上一篇提到圖片元信息Exif的提取&#xff0c;當然還有一類音視頻文件&#xff0c;也同樣存儲著許多寶貴的元數據&#xff0c;那就開源到底唄&#xff0c;雖然自己找尋過程也是蠻艱辛坎坷的&#xff0c;大家看后有收獲&#xff0c;只求多多傳播下&#xff0c;讓前人的工作可以更…

ECharts 雷達圖在類目值下面顯示數值

需要實現的效果&#xff1a; 官網里面的demo顯示數值&#xff0c;都是在拐點處&#xff1a; 【解決】 1、只顯示類目 <div id"mychart" style"width:300px;height:300px;margin:0 auto;"></div><script>var arr1 [60,73,85,40,60];var…

RecyclerView復用item導致數據混亂

一般recyclerview會復用item以讓recycler性能提升 但是我們有些時候會出現復用了之后混亂的情況 如何防止RecyclerView復用item呢 1 最好是每一個有判斷的地方&#xff0c;都要寫全所有情況&#xff0c;什么意思呢 if里textView設了一個值&#xff0c;false也必須設置一個值 2 …

echarts tooltip在圖表范圍內顯示

以下兩種解決方式&#xff0c;能夠應對大部分出現此類問題項目 tooltip.position: 提示框浮層的位置&#xff0c;默認不設置時位置會跟隨鼠標的位置。 可選&#xff1a;string, Array, Function 一、解決方法&#xff1a; 1、設置x軸固定不動 y軸上下跟隨 /*設置x軸左右固定…

Vue.js 動態為img的src賦值

在vue中動態給src賦值綁定圖片會顯示不出來 動態添加src被當做靜態資源處理了&#xff0c;沒有進行編譯 解決方法&#xff1a; 1、用網絡地址 把圖片放在cdn或自己的服務器上&#xff0c;把網絡地址存在imgUrl里&#xff0c;然后直接<img :src"Url"> 2.把圖片放…

項目打包部署到Tomcat

一、 使用 npm run build打包完成之后會出現一個dist文件夾&#xff0c;里面有static文件夾和一個index.html文件&#xff0c;一般我們部署在tomcat上面會將文件放在webapps文件夾下 如果不進行任何修改將dist文件夾放進去的話&#xff0c;會出現資源路徑錯誤的問題&#xff…

算法階段三總結

3月25日-4月4日這段時間里。我把字符串的一些基本操作和算法學了下。主要有串的基本操作&#xff0c;字符串的hash函數&#xff08;Rabin-Karp&#xff0c;ELFhash&#xff09;&#xff0c;還有KMP算法。總體感覺還是不錯的。尤其清明這三天沒出去&#xff0c;都呆在宿舍了&…

vue.config和editorconfig

我們在做項目的時候&#xff0c;應該給經常用到的文件配置它的別名&#xff0c;這樣做&#xff0c;既可以方便引用&#xff0c;也可以防止當文件位置發生改變的時候出現錯誤。 配置前: import bartar from ../../components/bartar 配置后(不用再關心文件層級關系): import bar…

Java生鮮電商平臺-訂單配送模塊的架構與設計

Java生鮮電商平臺-訂單配送模塊的架構與設計 生鮮電商系統最終的目的還是用戶下單支付購買&#xff0c; 所以訂單管理系統是電商系統中最為復雜的系統&#xff0c;其作為中樞決定著整個商城的運轉&#xff0c; 本文將對于生鮮類電商平臺的訂單設計做一個完整的分析&#xff0c;…

vue項目,webpack中配置src路徑別名及使用

默認會有‘’別名&#xff0c;指向src目錄&#xff0c;還可以添加自定義別名等等。 使用方法 使用別名一般就三種情況&#xff1a;在js中用&#xff0c;在css中用&#xff0c;在html文檔內用 js中用&#xff0c;最簡單: import {getName} from /util/namecss中使用&#xff0…

fastclick庫的介紹和使用

移動端點擊延遲事件 1. 移動端瀏覽器在派發點擊事件的時候&#xff0c;通常會出現300ms左右的延遲 2. 原因: 移動端的雙擊會縮放導致click判斷延遲 fastclick 是具有消除移動端瀏覽器上的點擊事件的 300ms 的延遲的作用。 注意幾點 1、PC端無效 2、Android 上的 Chrome …

toString()和String.valueOf()的區別(轉)

慣例廣告一發&#xff0c;對于初學真&#xff0c;真的很有用www.java1234.com&#xff0c;去試試吧&#xff01; 有的朋友在用這兩個的時候感覺差不多 其實&#xff0c;很多時候效果是差不多的 但是&#xff0c;有的時候用.toString()會報錯&#xff0c;而用String.valueOf()就…

kylin框架中使用postcss-px2rem

1.kylin框架的使用不做介紹 2.頁面中 html模板頁面中已經使用clientWidth/375*100px,已經賦值了html的fontsize隨頁面寬度而變化。 比如寬度375的屏 html的fontsize為100px kylin加載postcss-px2rem cnpm i --save-dev postcss-px2rem 在根目錄下的plugin.js中 var px2rem…

VS2005無法啟動解決方法(轉)

一直有一個問題困擾&#xff0c;VS2005用得好好滴&#xff0c;突然有一天開始就進不去了&#xff0c;啟動了以后&#xff0c;沒有任何界面的出現&#xff0c;但是打開任務管理器&#xff0c;卻能夠看到進程的存在&#xff0c;真是奇怪了&#xff0c;我試圖卸載并且重新安裝&…

kylinH5框架之項目組件理解

目錄 組件介紹 組件聲明結構 組件接口 script dependency template style 狀態注入 接口聲明 組件介紹 Component 擴充自 Vue 的組件, 提供了 Vue 組件對等的輸入參數能力。在代碼書寫時提供類 class 的裝飾器 Decorator 風格。 import { Component, Watch } from al…

Markdown 語法簡介

這是標題一 標題二 標題三 print(hello) 這是一個python 第一點 thiw dhaishd 第二點 轉載于:https://www.cnblogs.com/BlogOfEr/p/11229682.html

kylinH5框架之項目開發調試

進行開發調試&#xff0c;需要完成以下步驟&#xff1a; 安裝依賴開發調試構建生產 點擊 代碼示例&#xff0c;獲取 Kylin Demo&#xff0c;并完成以下操作。 安裝依賴 進入項目根目錄&#xff0c;使用 cnpm 安裝 npm 依賴&#xff1a; # 安裝npm依賴 cnpm install 開發調試…

Java生鮮電商平臺-深入訂單拆單架構與實戰

Java生鮮電商平臺-深入訂單拆單架構與實戰 Java生鮮電商中在做拆單的需求&#xff0c;細思極恐&#xff0c;思考越深入&#xff0c;就會發現里面涉及的東西越來越多&#xff0c;要想做好訂單拆單的功能&#xff0c;還是相當有難度&#xff0c; 因此總結了一下拆單功能細節&…

python3中Requests將verify設置為False后,取消警告的方式

import requests resp requests.get(https://www.***.com, verifyFalse)調用成功但是會有如下警告信息&#xff1a; InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedo…

kylinH5框架之項目腳手架

頁面介紹 Page 是一個 Webview 的邏輯抽象層&#xff0c;同時也是組件掛載的根節點。 代碼引入 import { Page } from ali/kylin-framework; 頁面聲明結構 一個Page包含的接口在頁面接口中聲明&#xff0c;提供了對 Vue 實例的完整控制能力&#xff0c;簡易的 Page 使用如…