123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779 |
- ---
- title: File upload
- layout: documentation
- doc-tab: form
- doc-subtab: file
- file_name: "Screen Shot 2017-07-29 at 15.54.25.png"
- variables_keys:
- - file-border-color
- - file-radius
- - file-cta-background-color
- - file-cta-color
- - file-cta-hover-color
- - file-cta-active-color
- - file-name-border-color
- - file-name-border-style
- - file-name-border-width
- - file-name-max-width
- ---
- {% capture file %}
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Choose a file…
- </span>
- </span>
- </label>
- </div>
- {% endcapture %}
- {% capture 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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Choose a file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- {% endcapture %}
- {% capture file_name_right %}
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Choose a file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- {% endcapture %}
- {% capture file_name_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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Choose a file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- {% endcapture %}
- {% capture file_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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Choose a file…
- </span>
- </span>
- </label>
- </div>
- {% endcapture %}
- {% capture file_boxed_name %}
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Choose a file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- {% endcapture %}
- {% capture file_colors %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Primary file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Info file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-cloud-upload"></i>
- </span>
- <span class="file-label">
- Warning file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-cloud-upload"></i>
- </span>
- <span class="file-label">
- Danger file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% capture file_sizes %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Small file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Normal file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Medium file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Large file…
- </span>
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% capture file_sizes_name %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Small file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Normal file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Medium file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Large file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% capture file_sizes_boxed %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Small file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Normal file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Medium file…
- </span>
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Large file…
- </span>
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% capture file_centered %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Centered file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% capture file_right %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Right file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% capture file_sizes_boxed_name %}
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Small file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <div class="file 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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Normal file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Medium file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- <div class="field">
- <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="fa fa-upload"></i>
- </span>
- <span class="file-label">
- Large file…
- </span>
- </span>
- <span class="file-name">
- {{ page.file_name }}
- </span>
- </label>
- </div>
- </div>
- {% endcapture %}
- {% include subnav-form.html %}
- <section class="section">
- <div class="container">
- <h1 class="title">File upload</h1>
- <h2 class="subtitle">
- A custom <strong>file upload</strong> input, without JavaScript
- </h2>
- {%
- include meta.html
- experimental=true
- since="0.5.1"
- colors=true
- sizes=true
- variables=true
- %}
- <hr>
- <div class="content">
- <p>
- The <code>.file</code> element is a simple <strong>interactive label</strong> that wraps an <code><input type="file"></code>. It comprises several sub-elements:
- </p>
- <ul>
- <li>
- <code>.file</code> the main <strong>container</strong>
- <ul>
- <li>
- <code>.file-label</code> the actual <strong>interactive</strong> and clickable part of the element
- <ul>
- <li>
- <code>.file-input</code> the <strong>native</strong> file input, hidden for styling purposes
- </li>
- <li>
- <code>.file-cta</code> the upload <strong>call-to-action</strong>
- <ul>
- <li>
- <code>.file-icon</code> an optional <strong>upload</strong> icon
- </li>
- <li>
- <code>.file-label</code> the "Choose a file…" text
- </li>
- </ul>
- </li>
- <li>
- <code>.file-name</code> a container for the <strong>chosen file</strong> name
- </li>
- </ul>
- </li>
- </ul>
- </li>
- </ul>
- </div>
- {% include snippet.html content=file %}
- {% include anchor.html name="Modifiers" %}
- <div class="columns">
- <div class="column">
- <div class="content">
- <p>
- With the <code>.has-name</code> modifier combined with the <code>.file-name</code> element, you can add a <strong>placeholder</strong> for the selected file name.
- </p>
- </div>
- <div class="bd-example">
- {{ file_name }}
- </div>
- </div>
- <div class="column highlight-full">
- {% highlight html %}{{ file_name }}{% endhighlight %}
- </div>
- </div>
- <div class="columns">
- <div class="column">
- <div class="content">
- <p>
- You can move the CTA to the <strong>right side</strong> with the <code>.is-right</code> modifier.
- </p>
- </div>
- <div class="bd-example">
- {{ file_name_right }}
- </div>
- </div>
- <div class="column highlight-full">
- {% highlight html %}{{ file_name_right }}{% endhighlight %}
- </div>
- </div>
- <div class="columns">
- <div class="column">
- <div class="content">
- <p>
- You can also <strong>expand</strong> the name to fill up the space with the <code>.is-fullwidth</code> modifier.
- </p>
- </div>
- <div class="bd-example">
- {{ file_name_fullwidth }}
- </div>
- </div>
- <div class="column highlight-full">
- {% highlight html %}{{ file_name_fullwidth }}{% endhighlight %}
- </div>
- </div>
- <div class="columns">
- <div class="column">
- <div class="content">
- <p>
- You can have a <strong>boxed block</strong> with the <code>.is-boxed</code> modifier.
- </p>
- </div>
- <div class="bd-example">
- {{ file_boxed }}
- </div>
- </div>
- <div class="column highlight-full">
- {% highlight html %}{{ file_boxed }}{% endhighlight %}
- </div>
- </div>
- <div class="columns">
- <div class="column">
- <div class="content">
- <p>
- You can <strong>combine</strong> <code>.has-name</code> and <code>.is-boxed</code>.
- </p>
- </div>
- <div class="bd-example">
- {{ file_boxed_name }}
- </div>
- </div>
- <div class="column highlight-full">
- {% highlight html %}{{ file_boxed_name }}{% endhighlight %}
- </div>
- </div>
- {% include anchor.html name="Colors" %}
- <div class="content">
- <p>
- You can style the file element by appending one of the <strong>9 color modifiers</strong>:
- </p>
- <ul>
- {% for color in site.colors %}
- <li>
- <code>is-{{ color }}</code>
- </li>
- {% endfor %}
- </ul>
- </div>
- {% include snippet.html content=file_colors clipped=true %}
- {% include anchor.html name="Sizes" %}
- <div class="content">
- <p>
- You can append one of <strong>3 additional sizes</strong>:
- </p>
- <ul>
- <li>
- <code>.is-small</code>
- </li>
- <li>
- <code>.is-medium</code>
- </li>
- <li>
- <code>.is-large</code>
- </li>
- </ul>
- </div>
- {% include snippet.html content=file_sizes clipped=true %}
- {% include snippet.html content=file_sizes_name clipped=true %}
- {% include snippet.html content=file_sizes_boxed clipped=true %}
- {% include snippet.html content=file_sizes_boxed_name clipped=true %}
- {% include anchor.html name="Alignment" %}
- <div class="content">
- <p>
- You can <strong>align</strong> the file input:
- </p>
- <ul>
- <li>
- to the <strong>center</strong> with the <code>is-centered</code> modifier
- </li>
- <li>
- to the <strong>right</strong> with the <code>is-right</code> modifier
- </li>
- </ul>
- </div>
- {% include snippet.html content=file_centered %}
- {% include snippet.html content=file_right %}
- {% include anchor.html name="JavaScript" %}
- <div class="content">
- <p>
- A file upload input requires JavaScript to <strong>retrieve</strong> the <strong>selected file name</strong>.
- <br>
- User <a href="https://github.com/chintanbanugaria"><strong>@chintanbanugaria</strong></a> on GitHub <a href="https://github.com/jgthms/bulma/issues/280#issuecomment-294099510">has provided</a> a simple solution <a href="https://jsfiddle.net/chintanbanugaria/uzva5byy/">on JSFiddle</a>.
- </p>
- </div>
- {% include anchor.html name="Variables" %}
- <div class="content">
- <p>
- You can use <a href="{{ site.github | append: '/blob/master/sass/elements/form.sass#L25,L36' }}" target="_blank">these variables</a> to <strong>customize</strong> this element. Simply set one or multiple of these variables <em>before</em> importing Bulma. <a href="{{ site.url }}/documentation/overview/customize/">Learn how</a>.
- </p>
- </div>
- <table class="table is-bordered">
- <thead>
- <tr>
- <th>Name</th>
- <th>Default value</th>
- </tr>
- </thead>
- <tfoot>
- <tr>
- <th>Name</th>
- <th>Default value</th>
- </tr>
- </tfoot>
- <tbody>
- {% for key in page.variables_keys %}
- {% assign variable = site.data.variables.elements.form.vars[key] %}
- <tr>
- <td>
- <code>{{ variable.name }}</code>
- </td>
- <td>
- <code>{{ variable.value }}</code>
- </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </div>
- </section>
|