ArashV
ArashV

Reputation: 84

Custom InputFile in Blazor

I want to replace the InputFile's rectangle with 'attach Icon'. I tried to set the URL of the icon to 'background-image' of InputFile but it had no effect. This only demonstrates how to change the color of InputFile, not exactly what I need.

Upvotes: 0

Views: 4096

Answers (3)

Jazz.
Jazz.

Reputation: 490

Try this:

<label for="inputFile" class="btn btn-secondary me-1">
    <InputFile id="inputFile" OnChange="@LoadFiles" class="d-none" />
    Upload File
</label>

CSS Classes from bootstrap, included by default in the Blazor templates.

Upvotes: 0

Brian Parker
Brian Parker

Reputation: 14533

I use something similar for a colour picker.

<label for="fileinput" class="label-wrapper">
    <span class="oi oi-paperclip"></span>
    <InputFile id="fileinput" class="custom-input-hide" />
</label>

<style>
    .label-wrapper:hover {
        cursor: pointer;
    }

    .custom-input-hide {
        width: 0;
        height: 0;
        overflow: hidden;
    }
</style>

BlazorRepl

Upvotes: 5

Jason D
Jason D

Reputation: 2087

I think maybe this is what you are looking for.

HTML/Razor code

<div class="file-input-zone">
    <InputFile />
</div>

CSS

<style>
.file-input-zone {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    color: black;
    cursor: pointer;
    position: relative;
    width: 120px;
    height: 120px;
    background-image: url('paper-clip.png');
}

    .file-input-zone:hover {
        background-color: lightblue;
    }

    .file-input-zone input[type=file] {
        position: absolute;
        width: 100%;
        height: 100%;
        opacity: 0;
        cursor: pointer;
    }
</style>

In the CSS code above, the file paper-clip.png is installed in wwwroot directory.

The button will look like a transparent paper-clip. In the image below, color changes on hover as well.

enter image description here

Upvotes: 2

Related Questions