file
要素は、<input type="file">
を囲む簡単なインタラクティブラベルです。いくつかのサブ要素で構成されます
-
file
主要なコンテナー
-
file-label
要素の実際のインタラクティブでクリックできる部分
file-input
ネイティブのファイル入力で、スタイルの設定を目的として非表示になっています
-
file-cta
アップロードの呼び出し用メッセージ
file-icon
オプションのアップロードアイコン
file-label
「ファイルを選択...」のテキスト
file-name
選択したファイル名のコンテナー
HTML
<div class="file">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
</label>
</div>
修飾子 #
has-name
修飾子を file-name
要素と組み合わせることで、選択したファイル名のプレースホルダーを追加できます。
<div class="file has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
is-right
修飾子を使用すると、CTA の右側に移動できます。
<div class="file has-name is-right">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
is-fullwidth
修飾子を使用すると、名前を展開してスペースを埋められます。
<div class="file has-name is-fullwidth">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
is-boxed
修飾子を使用すると、ボックスブロックを持つことができます。
<div class="file is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
</label>
</div>
has-name
と is-boxed
を組み合わせることができます。
<div class="file has-name is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
0 カラー修飾子のいずれかを追加することで、ファイル要素のスタイルを設定できます
HTML
<div class="file is-primary">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Primary file… </span>
</span>
</label>
</div>
HTML
<div class="file is-info has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Info file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-warning is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-cloud-upload-alt"></i>
</span>
<span class="file-label"> Warning file… </span>
</span>
</label>
</div>
HTML
<div class="file is-danger has-name is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-cloud-upload-alt"></i>
</span>
<span class="file-label"> Danger file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
サイズ #
利用可能な 4 つのサイズのいずれかを追加できます
-
is-small
is-normal
(既定)
-
is-medium
-
is-large
HTML
<div class="file is-small">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Small file… </span>
</span>
</label>
</div>
HTML
<div class="file is-normal">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Normal file… </span>
</span>
</label>
</div>
HTML
<div class="file is-medium">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Medium file… </span>
</span>
</label>
</div>
HTML
<div class="file is-large">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Large file… </span>
</span>
</label>
</div>
HTML
<div class="file is-small has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Small file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-normal has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Normal file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-medium has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Medium file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-large has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Large file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-small is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Small file… </span>
</span>
</label>
</div>
HTML
<div class="file is-normal is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Normal file… </span>
</span>
</label>
</div>
HTML
<div class="file is-medium is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Medium file… </span>
</span>
</label>
</div>
HTML
<div class="file is-large is-boxed">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Large file… </span>
</span>
</label>
</div>
HTML
<div class="file is-small is-boxed has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Small file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-normal is-boxed has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Normal file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-medium is-boxed has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Medium file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-large is-boxed has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Large file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
アライメント #
ファイル入力を配置できます
- 中央に
is-centered
修飾子を使用して配置します
- 右に
is-right
修飾子を使用して配置します
HTML
<div class="file is-centered is-boxed is-success has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Centered file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
HTML
<div class="file is-right is-info">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Right file… </span>
</span>
<span class="file-name"> Screen Shot 2017-07-29 at 15.54.25.png </span>
</label>
</div>
JavaScript #
ファイルアップロード入力には、選択したファイル名を取得するためのJavaScriptが必要です。これを行う方法の例を次に示します。
HTML
<div id="file-js-example" class="file has-name">
<label class="file-label">
<input class="file-input" type="file" name="resume" />
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label"> Choose a file… </span>
</span>
<span class="file-name"> No file uploaded </span>
</label>
</div>
<script>
const fileInput = document.querySelector("#file-js-example input[type=file]");
fileInput.onchange = () => {
if (fileInput.files.length > 0) {
const fileName = document.querySelector("#file-js-example .file-name");
fileName.textContent = fileInput.files[0].name;
}
};
</script>
Sass変数
|
CSS変数
|
値
|
$file-radius
|
var(--bulma-file-radius)
|
var(--bulma-radius)
|
$file-cta-color
|
var(--bulma-)
|
var(--bulma-text)
|
$file-cta-hover-color
|
var(--bulma-)
|
var(--bulma-text-strong)
|
$file-cta-active-color
|
var(--bulma-)
|
var(--bulma-text-strong)
|
$file-name-border-color
|
var(--bulma-file-name-border-color)
|
var(--bulma-border)
|
$file-name-border-style
|
var(--bulma-file-name-border-style)
|
solid
|
$file-name-border-width
|
var(--bulma-file-name-border-width)
|
1px 1px 1px 0
|
$file-name-max-width
|
var(--bulma-file-name-max-width)
|
16em
|
$file-colors
|
var(--bulma-)
|
shared.$form-colors
|
SassとCSS変数 #
Sass変数
|
CSS変数
|
値
|
$file-radius
|
var(--bulma-file-radius)
|
var(--bulma-radius)
|
$file-cta-color
|
var(--bulma-)
|
var(--bulma-text)
|
$file-cta-hover-color
|
var(--bulma-)
|
var(--bulma-text-strong)
|
$file-cta-active-color
|
var(--bulma-)
|
var(--bulma-text-strong)
|
$file-name-border-color
|
var(--bulma-file-name-border-color)
|
var(--bulma-border)
|
$file-name-border-style
|
var(--bulma-file-name-border-style)
|
solid
|
$file-name-border-width
|
var(--bulma-file-name-border-width)
|
1px 1px 1px 0
|
$file-name-max-width
|
var(--bulma-file-name-max-width)
|
16em
|
$file-colors
|
var(--bulma-)
|
shared.$form-colors
|