0

重複の可能性:
Styling <input type="file">
スタイル入力型ファイル?

css で作成されたボタンを使用して、デフォルトの input type="file" ボタンを変更しようとしています。これは私のhtmlコードです:

<input type="file" name="name" value="" />
<a href="#" class="button">Browse</a>

...そしてこれは私のcssボタンコードです:

.button {
    display:inline;
    -moz-box-shadow:inset 0px 1px 0px 0px #fff6af;
    -webkit-box-shadow:inset 0px 1px 0px 0px #fff6af;
    box-shadow:inset 0px 1px 0px 0px #fff6af;
    background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #ffec64), color-stop(1, #f3b415) );
    background:-moz-linear-gradient( center top, #ffec64 5%, #f3b415 100% );
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec64', endColorstr='#f3b415');
    background-color:#ffec64;
    -moz-border-radius:6px;
    -webkit-border-radius:6px;
    border-radius:6px;
    border:1px solid #f3b415;
    display:inline-block;
    color:#333333;
    font-family:arial;
    font-size:15px;
    font-weight:bold;
    padding:6px 24px;
    text-decoration:none;
    text-shadow:1px 1px 0px #ffee66;
}
.button:hover {
    background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f3b415), color-stop(1, #ffec64) );
    background:-moz-linear-gradient( center top, #f3b415 5%, #ffec64 100% );
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3b415', endColorstr='#ffec64');
    background-color:#f3b415;
}
.button:active {
    position:relative;
    top:1px;
}​

また、こちらでもご確認いただけます

4

4 に答える 4

2

QuirksModeで与えられたトリックに従ってDemoをビルドします。説明のためにそれを読んでください。

HTML

<div class="fileinputs">
    <input type="file" class="file" />
    <div class="fakefile">
        <a href="#" class="button">Browse</a>

    </div>
</div>

CSS

.button {
    display:inline;
    -moz-box-shadow:inset 0px 1px 0px 0px #fff6af;
    -webkit-box-shadow:inset 0px 1px 0px 0px #fff6af;
    box-shadow:inset 0px 1px 0px 0px #fff6af;
    background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #ffec64), color-stop(1, #f3b415) );
    background:-moz-linear-gradient( center top, #ffec64 5%, #f3b415 100% );
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec64', endColorstr='#f3b415');
    background-color:#ffec64;
    -moz-border-radius:6px;
    -webkit-border-radius:6px;
    border-radius:6px;
    border:1px solid #f3b415;
    display:inline-block;
    color:#333333;
    font-family:arial;
    font-size:15px;
    font-weight:bold;
    padding:6px 24px;
    text-decoration:none;
    text-shadow:1px 1px 0px #ffee66;
}
.button:hover {
    background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f3b415), color-stop(1, #ffec64) );
    background:-moz-linear-gradient( center top, #f3b415 5%, #ffec64 100% );
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3b415', endColorstr='#ffec64');
    background-color:#f3b415;
}
.button:active {
    position:relative;
    top:1px;
}


div.fileinputs {
    position: relative;
}

div.fakefile {
    position: absolute;
    top: 0px;
    left: 0px;
    z-index: 1;
}

input.file {
    position: relative;
    text-align: right;
    -moz-opacity:0 ;
    filter:alpha(opacity: 0);
    opacity: 0;
    z-index: 2;
}​
于 2012-10-31T18:17:46.127 に答える
0

私の知る限り、「参照」ボタンにスタイリングを行うことはできません。ここでの唯一の回避策は、Z-Index を使用してこれに別のボタンを重ねることです。これはあまり良い習慣ではないかもしれません。

于 2012-10-31T18:02:42.747 に答える
0

ファイル入力はオペレーティング システムによってレンダリングされ、HTML 仕様の一部ではありません。

于 2012-10-31T18:02:45.277 に答える
0

入力をボタンに調整してから、ファイルを表示するための jQuery 関数を記述できます。

 <input type="button" name="name" value="Browse" class="button"/>
于 2012-10-31T18:04:05.333 に答える