ここで参照可能: http://web.cs.dal.ca/~selig/serverside/assignment2/
見栄えの良いファイルアップロードボタンを作成しようとしています。通常のデスクトップ ブラウザでは問題なく動作しますが、iOS ではクリックするとボタンの境界線の半径が変更され、基本的に別のボタンになります。
それをカスタマイズするための私の実装は非常に単純です。以下にコードを含めます。基本的に、元のボックスはカスタマイズされたボックスを絶対位置で覆い、幅と高さを設定し、不透明度を 0 に設定します。次に、jQuery を使用してクリック状態をカスタマイズします。
HTML:
<div class="upload">
<input type="file" class="file-input">
<input type="button" value="Browse">
<span class="filename">No file selected</span>
</div>
CSS:
.upload {
position: relative;
margin: 0 auto 15px auto;
width: 400px;
height: 50px;
background: #fffbed;
border: 1px solid #efdec4;
border-radius: 5px;
-webkit-box-shadow: 0px 2px 4px rgba(236, 229, 199, 0.3), inset 0px 0px 3px 1px rgba(236, 229, 199, 0.5);
box-shadow: 0px 2px 4px rgba(236, 229, 199, 0.3), inset 0px 0px 3px 1px rgba(236, 229, 199, 0.5);
}
input[type="file"] {
position: absolute;
width: 100%;
height: 100%;
cursor: pointer;
moz-opacity: 0;
opacity: 0;
}
input[type="button"] {
width: 120px;
height: 50px;
float: right;
border: 1px solid #4b2218;
border-radius: 5px;
color: #ffecf7;
font-size: 1em;
font-weight: bold;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.4);
background: #a35a47; /* Old browsers */
background: -moz-linear-gradient(top, #a35a47 0%, #a04731 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a35a47), color-stop(100%,#a04731)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #a35a47 0%,#a04731 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #a35a47 0%,#a04731 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #a35a47 0%,#a04731 100%); /* IE10+ */
background: linear-gradient(to bottom, #a35a47 0%,#a04731 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a35a47', endColorstr='#a04731',GradientType=0 ); /* IE6-8 */
}