Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Otto <markd.otto@gmail.com>2020-10-28 06:45:48 +0300
committerGitHub <noreply@github.com>2020-10-28 06:45:48 +0300
commit3e2f9ab237e0e338fbe497213ad2353e59fbee9c (patch)
treed1f1843ce62f3c5754e46f0df8eceb4d67a9b72d /site/content
parent582f52e9e147c5386d07f241a74a185175cc461d (diff)
v5: Floating labels (#30449)
* v5: Promote floating labels example to component - Adds new .form-floating - Stubs out basics of a docs page - Removes existing Example * Update floating labels to support .form-select, make inputs and selects more consistent - To do this, I made the .form-control and .form-select consistent in min-height vs height - Removed some unused variables now - Updated -color to be the -color because I don't know why this was any different before - Update page to include some examples for layout, validation, and value - Rewrite styles to not modify padding, but instead transform and opacity * Streamline and bulletproof some things - Apply some optimizations from code review - Removed unecessary properties from the label - Add some comments for what properties are required - Move from fixed height for labels to height 100% so we can support textareas - Improve docs a little bit, add ToC * Move some values to variables, switch from scaling font-size to scale, update transforms * Bring over changes from #30966 and add to them to tighten things up * Delete the now unused example images * Fix typo * Allowlist the calc function * Add transform-origin, update transform values * Test out autofill fix * Fix linter issue * Mention it in the migration guide * Bump bundlesize * Add one more variable per review * Shave .25rem off the height Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Diffstat (limited to 'site/content')
-rw-r--r--site/content/docs/5.0/examples/floating-labels/floating-labels.css101
-rw-r--r--site/content/docs/5.0/examples/floating-labels/index.html35
-rw-r--r--site/content/docs/5.0/forms/floating-labels.md104
-rw-r--r--site/content/docs/5.0/forms/overview.md2
-rw-r--r--site/content/docs/5.0/migration.md1
5 files changed, 107 insertions, 136 deletions
diff --git a/site/content/docs/5.0/examples/floating-labels/floating-labels.css b/site/content/docs/5.0/examples/floating-labels/floating-labels.css
deleted file mode 100644
index 9092659d06..0000000000
--- a/site/content/docs/5.0/examples/floating-labels/floating-labels.css
+++ /dev/null
@@ -1,101 +0,0 @@
-html,
-body {
- height: 100%;
-}
-
-body {
- display: flex;
- align-items: center;
- padding-top: 40px;
- padding-bottom: 40px;
- background-color: #f5f5f5;
-}
-
-.form-signin {
- width: 100%;
- max-width: 420px;
- padding: 15px;
- margin: auto;
-}
-
-.form-label-group {
- position: relative;
- margin-bottom: 1rem;
-}
-
-.form-label-group input,
-.form-label-group label {
- height: 3.125rem;
- padding: .75rem;
-}
-
-.form-label-group label {
- position: absolute;
- top: 0;
- left: 0;
- display: block;
- width: 100%;
- color: #495057;
- pointer-events: none;
- cursor: text; /* Match the input under the label */
- border: 1px solid transparent;
- border-radius: .25rem;
- transition: all .1s ease-in-out;
-}
-
-.form-label-group input::-webkit-input-placeholder {
- color: transparent;
-}
-
-.form-label-group input::-moz-placeholder {
- color: transparent;
-}
-
-.form-label-group input::-ms-input-placeholder {
- color: transparent;
-}
-
-.form-label-group input::placeholder {
- color: transparent;
-}
-
-.form-label-group input:not(:-moz-placeholder-shown) {
- padding-top: 1.25rem;
- padding-bottom: .25rem;
-}
-
-.form-label-group input:not(:placeholder-shown) {
- padding-top: 1.25rem;
- padding-bottom: .25rem;
-}
-
-.form-label-group input:not(:-moz-placeholder-shown) ~ label {
- padding-top: .25rem;
- padding-bottom: .25rem;
- font-size: 12px;
- color: #777;
-}
-
-.form-label-group input:not(:placeholder-shown) ~ label {
- padding-top: .25rem;
- padding-bottom: .25rem;
- font-size: 12px;
- color: #777;
-}
-
-/* Fallback for Edge
--------------------------------------------------- */
-@supports (-ms-ime-align: auto) {
- .form-label-group {
- display: flex;
- flex-direction: column-reverse;
- }
-
- .form-label-group label {
- position: static;
- }
-
- .form-label-group input::-ms-input-placeholder {
- color: #777;
- }
-}
diff --git a/site/content/docs/5.0/examples/floating-labels/index.html b/site/content/docs/5.0/examples/floating-labels/index.html
deleted file mode 100644
index e0e5320bc4..0000000000
--- a/site/content/docs/5.0/examples/floating-labels/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
----
-layout: examples
-title: Floating labels example
-extra_css:
- - "floating-labels.css"
-include_js: false
----
-
-<main class="form-signin">
- <form>
- <div class="text-center mb-4">
- <img class="mb-4" src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57">
- <h1 class="h3 mb-3 font-weight-normal">Floating labels</h1>
- <p>Build form controls with floating labels via the <code>:placeholder-shown</code> pseudo-element. <a href="https://caniuse.com/#feat=css-placeholder-shown">Works in latest Chrome, Safari, and Firefox.</a></p>
- </div>
-
- <div class="form-label-group">
- <input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
- <label for="inputEmail">Email address</label>
- </div>
-
- <div class="form-label-group">
- <input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
- <label for="inputPassword">Password</label>
- </div>
-
- <div class="checkbox mb-3">
- <label>
- <input type="checkbox" value="remember-me"> Remember me
- </label>
- </div>
- <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
- <p class="mt-5 mb-3 text-muted text-center">&copy; 2017-{{< year >}}</p>
- </form>
-</main>
diff --git a/site/content/docs/5.0/forms/floating-labels.md b/site/content/docs/5.0/forms/floating-labels.md
new file mode 100644
index 0000000000..16f7f08e07
--- /dev/null
+++ b/site/content/docs/5.0/forms/floating-labels.md
@@ -0,0 +1,104 @@
+---
+layout: docs
+title: Floating labels
+description: Create beautifully simple form labels that float over your input fields.
+group: forms
+toc: true
+---
+
+## Example
+
+Wrap a pair of `<input class="form-control">` and `<label>` elements in `.form-floating` to enable floating labels with Bootstrap's textual form fields. A `placeholder` is required on each `<input>` as our method of CSS-only floating labels uses the `:placeholder-shown` pseudo-element. Also note that the `<input>` must come first so we can utilize a sibling selector (e.g., `~`).
+
+This approach works in the new Microsoft Edge built on Chromium and gracefully degrades on older versions.
+
+{{< example >}}
+<div class="form-floating mb-3">
+ <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
+ <label for="floatingInput">Email address</label>
+</div>
+<div class="form-floating">
+ <input type="password" class="form-control" id="floatingPassword" placeholder="Password">
+ <label for="floatingPassword">Password</label>
+</div>
+{{< /example >}}
+
+When there's a `value` already defined, `<label>`s will automatically adjust to their floated position.
+
+{{< example >}}
+<form class="form-floating">
+ <input type="email" class="form-control" id="floatingInputValue" placeholder="name@example.com" value="test@example.com">
+ <label for="floatingInputValue">Input with value</label>
+</form>
+{{< /example >}}
+
+Form validation styles also work as expected.
+
+{{< example >}}
+<form class="form-floating">
+ <input type="email" class="form-control is-invalid" id="floatingInputInvalid" placeholder="name@example.com" value="test@example.com">
+ <label for="floatingInputInvalid">Invalid input</label>
+</form>
+{{< /example >}}
+
+## Textareas
+
+By default, `<textarea>`s with `.form-control` will be the same height as `<input>`s.
+
+{{< example >}}
+<div class="form-floating">
+ <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
+ <label for="floatingTextarea">Comments</label>
+</div>
+{{< /example >}}
+
+To set a custom height on your `<textarea>`, do not use the `rows` attribute. Instead, set an explicit `height` (either inline or via custom CSS).
+
+{{< example >}}
+<div class="form-floating">
+ <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea2" style="height: 100px"></textarea>
+ <label for="floatingTextarea2">Comments</label>
+</div>
+{{< /example >}}
+
+## Selects
+
+Other than `.form-control`, floating labels only available on `.form-select`s. They work in the same way, but unlike `<input>`s, they'll always show the `<label>` in its floated state.
+
+{{< example >}}
+<div class="form-floating">
+ <select class="form-select" id="floatingSelect" aria-label="Floating label select example">
+ <option selected>Open this select menu</option>
+ <option value="1">One</option>
+ <option value="2">Two</option>
+ <option value="3">Three</option>
+ </select>
+ <label for="floatingSelect">Works with selects</label>
+</div>
+{{< /example >}}
+
+## Layout
+
+When working with the Bootstrap grid system, be sure to place form elements within column classes.
+
+{{< example >}}
+<div class="row g-2">
+ <div class="col-md">
+ <div class="form-floating">
+ <input type="email" class="form-control" id="floatingInputGrid" placeholder="name@example.com" value="mdo@example.com">
+ <label for="floatingInputGrid">Email address</label>
+ </div>
+ </div>
+ <div class="col-md">
+ <div class="form-floating">
+ <select class="form-select" id="floatingSelectGrid" aria-label="Floating label select example">
+ <option selected>Open this select menu</option>
+ <option value="1">One</option>
+ <option value="2">Two</option>
+ <option value="3">Three</option>
+ </select>
+ <label for="floatingSelectGrid">Works with selects</label>
+ </div>
+ </div>
+</div>
+{{< /example >}}
diff --git a/site/content/docs/5.0/forms/overview.md b/site/content/docs/5.0/forms/overview.md
index 4311b4f623..7d30db3570 100644
--- a/site/content/docs/5.0/forms/overview.md
+++ b/site/content/docs/5.0/forms/overview.md
@@ -18,6 +18,8 @@ sections:
description: Replace browser default range inputs with our custom version.
- title: Input group
description: Attach labels and buttons to your inputs for increased semantic value.
+ - title: Floating labels
+ description: Create beautifully simple form labels that float over your input fields.
- title: Layout
description: Create inline, horizontal, or complex grid-based layouts with your forms.
- title: Validation
diff --git a/site/content/docs/5.0/migration.md b/site/content/docs/5.0/migration.md
index 05851b184f..b4eda11309 100644
--- a/site/content/docs/5.0/migration.md
+++ b/site/content/docs/5.0/migration.md
@@ -24,6 +24,7 @@ toc: true
### Forms
- The longstanding [Missing border radius on input group with validation feedback bug](https://github.com/twbs/bootstrap/issues/25110) is finally fixed by adding an additional `.has-validation` class to input groups with validation.
+- Promoted the Floating labels example to fully supported form component. [See the new Floating labels page.]({{< docsref "/forms/floating-labels" >}})
### Utilities