Textarea CSS
Basic textarea
<textarea class="bf-textarea"></textarea>
<textarea class="bf-textarea"></textarea>
Label all fields
Always include a readable label, preferably through a visible, connected
<textarea>
element, or alternatively through a hidden aria-label
attribute.
Wrap the associated elements together in .bf-textarea-container
, for layout
purposes.
<div class="bf-textarea-container"> <label for="uniqueTextareaId" class="bf-label">Label element</label> <textarea id="uniqueTextareaId" class="bf-textarea" placeholder="Labelled textarea" ></textarea> </div> <textarea class="bf-textarea" aria-label="Hidden label" placeholder="Hidden aria-label" ></textarea>
<div class="bf-textarea-container"> <label for="uniqueTextareaId" class="bf-label">Label element</label> <textarea id="uniqueTextareaId" class="bf-textarea" placeholder="Labelled textarea" ></textarea> </div> <textarea class="bf-textarea" aria-label="Hidden label" placeholder="Hidden aria-label" ></textarea>
Description
Additional information can be added on a .bf-label-description
element.
<div class="bf-textarea-container"> <label for="descTextarea" class="bf-label">Label element</label> <div class="bf-label-description">Additional information</div> <textarea id="descTextarea" class="bf-textarea"></textarea> </div>
<div class="bf-textarea-container"> <label for="descTextarea" class="bf-label">Label element</label> <div class="bf-label-description">Additional information</div> <textarea id="descTextarea" class="bf-textarea"></textarea> </div>
Feedback
You can provide dynamic feedback below the textarea with the
.bf-label-feedback
class.
<div class="bf-textarea-container"> <label for="feedbackTextarea" class="bf-label">Label element</label> <textarea id="feedbackTextarea" class="bf-textarea"></textarea> <div class="bf-label-feedback">Feedback text</div> </div>
<div class="bf-textarea-container"> <label for="feedbackTextarea" class="bf-label">Label element</label> <textarea id="feedbackTextarea" class="bf-textarea"></textarea> <div class="bf-label-feedback">Feedback text</div> </div>
Disabled
Disable the field using .bf-textarea-disabled
on the container and
disabled
attribute on the textarea element.
<div class="bf-textarea-container bf-textarea-disabled"> <label for="disabledTextarea" class="bf-label">Label element</label> <textarea disabled id="disabledTextarea" class="bf-textarea"></textarea> </div>
<div class="bf-textarea-container bf-textarea-disabled"> <label for="disabledTextarea" class="bf-label">Label element</label> <textarea disabled id="disabledTextarea" class="bf-textarea"></textarea> </div>
Icon
Textareas cannot wrap around other elements, making it tricky to place icons.
Therefore you need a few extra elements and classes to make sure everything
looks correctly:
<div class="bf-textarea-container"> <label for="iconTextarea" class="bf-label">Warning icon</label> <div class="bf-textarea-icon-container"> <textarea id="iconTextarea" class="bf-textarea"></textarea> <i class="fa-solid fa-triangle-exclamation bf-textarea-icon"></i> </div> </div>
<div class="bf-textarea-container"> <label for="iconTextarea" class="bf-label">Warning icon</label> <div class="bf-textarea-icon-container"> <textarea id="iconTextarea" class="bf-textarea"></textarea> <i class="fa-solid fa-triangle-exclamation bf-textarea-icon"></i> </div> </div>
Alert state
Render a red underline when there's something wrong with the textarea,
using .bf-textarea-alert
on the container, preferably along with a feedback
message letting the user know what's wrong.
<div class="bf-textarea-container bf-textarea-alert"> <label for="alertTextarea" class="bf-label">Label element</label> <div class="bf-textarea-icon-container"> <textarea id="alertTextarea" class="bf-textarea"></textarea> <i class="fa-solid fa-triangle-exclamation bf-textarea-icon"></i> </div> <div class="bf-label-feedback">Invalid value</div> </div>
<div class="bf-textarea-container bf-textarea-alert"> <label for="alertTextarea" class="bf-label">Label element</label> <div class="bf-textarea-icon-container"> <textarea id="alertTextarea" class="bf-textarea"></textarea> <i class="fa-solid fa-triangle-exclamation bf-textarea-icon"></i> </div> <div class="bf-label-feedback">Invalid value</div> </div>