У статті розглянемо різні варіанти стилізації текстових полів HTML-форм. Спочатку створимо базовий варіант оформлення input, а потім безліч інших, доповнюючи кожен із них невеликою кількістю CSS.
Вступ
Веб-форми є невід'ємною частиною багатьох веб-сайтів. Вони дозволяють користувачеві ввести ті чи інші дані, які потім відправляються на сервер або обробляються на стороні клієнта, наприклад, зміни інтерфейсу.
Веб-форми також часто називають HTML-формами. Їх проектування здійснюється за допомогою елементів управління форм (текстових полів, списків, кнопок, чекбоксів і т.д.) і деяких додаткових елементів, які використовуються для надання формі певної структури.
Стилізація форми виконується через CSS. У цьому посібнику зупинимося і докладно розглянемо різні варіанти оформлення її текстових полів.
Вихідні коди прикладів розташовані на GitHub у папці text-field проекту "ui-components".
Нормалізація стилів
1. Налаштування box-sizing.
Зазвичай гарною практикою вважається для всіх елементів, включаючи псевдоелементи, встановити box-sizing: border-box :
У цьому випадку браузер при розрахуванні ширини та висоти елементів буде включати в них поля (padding) та межі (border). Як правило, це спрощує роботу з розмірами елементів, і позбавляє нас від багатьох проблем при розміщенні контенту.
2. Нормалізація стилів.
Для того щоб у різних браузерах відображався якомога однаково необхідно додати наступне:
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out – змінює значення властивостей border-color та box-shadow з анімацією тривалістю 0.15 секунд за допомогою тимчасової функції ease-in-out .
В результаті отримали таке оформлення:
Стилізуємо плейсхолдер. За замовчуванням плейсхолдер відображається напівпрозорим або світло-сірим кольором. Отримати його можна за допомогою ::placeholder. Оформимо його так:
Цей набір стилів буде відправною точкою для створення інших.
input з іконкою
Розглянемо приклад вставки в іконки за допомогою псевдоелементів.
Для цього додатково обернемо елемент з класами text-field__icon text-field__icon_email :
Перший клас (text-field__icon) будемо використовувати для того, щоб встановити відносне позиціонування (position: relative). Ця дія дозволить нам розмістити іконку в потрібному місці щодо input, використовуючи вже абсолютне позиціонування (position: absolute). Другий клас (text-field__icon_email) визначатиме іконку, яку ми хочемо вставити.
Приклад у якому під input відображається кількість набраних символів та максимальна довжина:
Це виконується за допомогою наступного коду:
Стилі для відображення стану валідації input
Застосувати стилі в залежності від стану поля CSS можна за допомогою спеціальних псевдокласів. Наприклад, :valid дозволяє вибрати валідні елементи, а :invalid - не валідні.
Але, якщо ви хочете контролювати цей процес і додавати стилі за допомогою JavaScript, тоді краще це робити через класи. Наприклад, використовувати клас text-field__input_valid за успішної валідації, а text-field__input_invalid - за не успішної. Їх слід додавати до .
Вкажіть місто.
Чудово!
Відображати повідомлення користувачеві або підказки можна через
.
.
Приклад валідації форми за допомогою JavaScript
Валідацію елементів форми будемо здійснювати за допомогою функції checkValidity(). Після цього, залежно від її результату, будемо додавати той чи інший клас до , а також повідомлення ( input.validationMessage ) елемент .text-field__message .
// input - змінна, що містить елемент if (input.checkValidity()) { input.classList.add('text-field__input_valid'); input.nextElementSibling.textContent = 'Відмінно!'; } else { input.classList.add('text-field__input_invalid'); input.nextElementSibling.textContent = input.validationMessage; }
Т.к. ми самі відображатимемо повідомлення, то необхідно відключити стандартні підказки браузера. Для цього до тега необхідно додати атрибут novalidate:
Клієнтська перевірка форми після натискання «Надіслати»:
Приклад валідації форми у реальному часі:
Відображення лише помилок:
Повний посібник зі стилів форм
У статті ми розповімо вам, як стандартизувати процес створення форм. А також надамо кілька простих фрагментів стилів для input CSS, які допоможуть вам зробити те саме.
Бонус: Ми також включили в цю статтю посібник зі створення форми підписки на розсилку з елементами анімації за допомогою плагіна WordPress Gravity Forms.
Оновлено: 2022-01-14 17:18:41 Вадим Дворніков автор матеріалу
Починаємо зі скидання HTML5
Існує кілька варіантів скидання HTML5. Але всі дають кінцевий результат, який нам потрібний. Найбільш підходящий спосіб скидання ви можете знайти тут.
Найчастіше ми використовуємо Normalize.css. Це ідеальне поєднання простоти у використанні та якості.
Загальні стилі CSS форми
Поля введення будуть працювати без стилів CSS. Вони будуть виглядати жахливо, але вони будуть працювати.
Але змусити їх працювати – це лише півсправи. Щоб задати стилі так, щоб все виглядало красиво, може знадобитися багато часу та праці. Хороша новина полягає в тому, що ми зробили більшу частину важкої роботи за вас. Погляньте на наведені нижче стилі для CSS input type text :
Пошук ххх картинки в інтернеті вимагає обережності через можливий зміст дорослого контенту.
Скорочення
Якщо ви помітили, ми додали окремі правила до різних елементів CSS input type . Спосіб спростити це, який ви могли бачити в багатьох темах WordPress, полягає в тому, щоб зробити щось на зразок цього:
input, select, textarea
Але якщо ми не включаємо типи елементів введення в стилі, то втрачаємо частину контролю, який нам знадобиться. Очевидно, що це займе менше часу, якщо ми опустимо кілька глобальних стилів для полів уведення, але потім ми пошкодуємо про це рішення.
Такий підхід до спрощення дасть нам у результаті купу різних елементів введення, які виглядатимуть дивно. Але цього хочемо уникнути. Доклавши більше зусиль для додавання стилів елементів введення, ми отримаємо контроль над усім.
Ми керуємо CSS, а CSS керує нами
Стилі фокусу введення та стану hover роблять дизайн приємнішим. Скільки разів ви чули, що все залежить від деталей? Різниця від додавання цих стилів (у тому числі і для CSS input file) буде невелика, але це значно покращить загальний досвід взаємодії.
Поглиблюємося все далі: додаємо стилі для діапазону, чекбоксу, списку та радіокнопки
Ми вже охопили більшість часто використовуваних типів полів введення, але є ще одна група елементів, з якою ми маємо працювати.
Призначення стилів для діапазону введення – це зовсім не весело. Повзунок – найменш стандартизований тип елементів введення. Це тому, що він містить досить багато частин, що рухаються, а браузери люблять додавати для них власні вендорні префікси.
У будь-якому випадку, це «Повне керівництво», і воно не могло б вважатися таким, якби ми прогавили цей аспект:
Стилізація елемента select в CSS дозволяє покращити зовнішній вигляд випадаючого списку на веб-сторінці.
Якщо ви помітили, у рядках 2-4 наведеного вище коду міститься саме те, що допомагає нам підкорити це поле нашій волі. Магічна властивість appearance.
Властивість appearance застосовується для відображення елемента з використанням оригінальних стилів операційної системи користувача.
Завдання цієї властивості - зробити так, щоб елемент виглядав і поводився певним чином (використовуючи стилі браузерів, які використовуються за умовчанням). Але ми використовували його, щоб зробити прямо протилежне.
Після цього нам потрібно сконцентруватися на покажчику (та частина, яку ви перетягуєте) та треку (слайдері), і браузери використовуватимуть власні вендорні префікси. Мені подобається використовувати range.css, але вам потрібно протестувати його в різних браузерах та їх версіях.
Стилі поля зі списком
Поле CSS input type зі списком багато років залишалося тим каменем, про який розбивався наш дизайн і кросбраузерна сумісність. Пропонувалося багато рішень, у тому числі створювалися цілі бібліотеки Javascript. Але найпростіший спосіб, який я знайшов, полягає в додаванні всього декількох рядків CSS :
Наша основна тема Альфа має наступні варіанти стилів поля зі списком, але якщо ви додасте наведений нижче фрагмент коду CSS в свою таблицю стилів і завантажте вихідні файли для цієї статті, щоб отримати зображення, то отримайте красиві поля зі списком, незалежно від того, в якому браузері відображається форма:
І це все. Ми знову використовуємо властивість appearance. Різні браузери по-різному визначають оформлення input CSS кнопки перемикача. Щоб вирішити цю проблему, можна додати акуратне фонове зображення, яке буде працювати як перемикач.
Використовуйте SVG для зображення. Додатковим перевагою цього формату і те, що він, зазвичай, має менший розмір, ніж звичайний JPG чи PNG .
Враппер це обгортка або контейнер у програмуванні, який використовується для інкапсуляції різних елементів.
Користувальницькі стилі CSS для чекбоксу та радіокнопки
Тут важливо поєднати структуру дерева DOM та ці елементи. Можливо, вам доведеться змінити правила CSS або структуру DOM, щоб усе працювало правильно. Але приділивши трохи уваги деталям, ви можете зробити це.І ви не пошкодуєте про витрачений час:
Ми знову використовуємо SVG-зображення для відображення чекбоксів та радіокнопок, а також їх різних станів. Змінивши відступи, поля та непрозорість у перших рядках наведеного вище коду, ми позбавляємося стилів браузера за замовчуванням. У наступних рядках ми використовуємо трюк, розміщуючи зображення там, де вони нам потрібні.
Плагіни WordPress для додавання стилів форм
Тепер у нас є розуміння того, що потрібно зробити, щоб задати стилі для CSS . До цих пір ми використовували їх тільки в умовах, за яких ми маємо повний контроль: статичний HTML. Якщо ви готові не зупинятися на цьому, і хочете знати, як задати стилі форм WordPress, я розповім і про це.
Тільки не це!
Ми використовуємо плагіни, тому що створення форм HTML - це дуже трудомісткий процес. Ці плагіни зазвичай містять свої стандартні стилі. Це робиться для того, щоб форми виглядали однаково добре не тільки в різних браузерах, але й з різними темами, які будуть використовуватись на сайті. Давайте розглянемо як приклад популярний плагін Gravity Forms.
Отже, ми додали стилі користувача для наших полів введення форми, а тепер хочемо встановити на сайті ще і Gravity Forms , як я зробив тут .
Вам доведеться внести одразу кілька змін.Особливо це стосується поля зі списком, чекбоксу та радіокнопки, щоб усе виглядало нормально. Ось що зробив я для оформлення input CSS :
.gform_wrapper .ginput_container_multiselect select < background-image: none; >.gform_wrapper .gfield_checkbox li input + label, .gform_wrapper .gfield_radio li input + label
Я видалив зображення, яке ми використовували для списку, а також вніс деякі незначні зміни для чекбоксу та радіокнопки. У нас більше немає контролю над деревом DOM, оскільки Gravity Forms робить це за нас, тому деякі незначні коригування необхідні.
Ще одна причина внести ці зміни полягає в тому, що ми завантажуємо стилі, які постачаються із плагіном форм. Але якщо ми вирішили не робити цього і хочемо використовувати лише наші CSS input type?
стилі користувача CSS для Gravity Forms
Перше, що нам потрібно зробити, це відключити стилі front-end Gravity Forms. Ось фільтр, який ви можете помістити у файл functions.php :
Потім можна почати задавати власні стилі для конкретної теми. Це довгий та стомлюючий процес. Ми маємо варіант взяти стилі, які ми створили для використання з нашою основною темою, але вони також будуть працювати з іншими Sass-темами WordPress . Перегляньте наші SCSS-файли для Gravity Forms. Якщо SCSS не ваш коник, ви можете переглянути CSS-версію.
Примітка: Кілька разів ми використовували в наших стилях властивість flexbox, але якщо ви хочете забезпечити підтримку IE 10 або нижче, вам не потрібно його додавати.
Стилі форми підписки на розсилку новин
Ви можете застосувати методи, описані в цій статті для налаштування інших плагінів форм WordPress, але я працював саме з плагіном Gravity Forms.
Перше, що нам потрібно зробити, це створити форму. Нам потрібні заголовок форми, поле адреси електронної пошти та кнопка надсилання. Створіть форму або, якщо вам не хочеться з цим возитися, ми вже створили для вас форму, яку можна завантажити та імпортувати на свій сайт.
Якщо ви створюєте форму самостійно, вам потрібно додати до неї клас newsletter-signup .
У формі нашого прикладу використовується кнопка для запуску анімації у верхній частині, але ми не маємо до цього доступу. Gravity Forms не виводить заголовок, тому ми можемо використовувати це. Ми розмістили там елемент із input CSS стилями gform_title , який виглядатиме як кнопка. Крім цього, ми встановили для форми значення line-height, як у цієї псевдокнопки. Це дозволить нам приховати форму доти, доки хтось не клікне по ній мишею.
Все, що робить цей код – перевіряє, чи є на цій сторінці конкретна форма, а потім перевіряє, чи існує заголовок. Якщо обидві ці умови виконуються, він просто чекає, коли когось клікне по заголовку. Після того, як це станеться, він додає клас open для контейнера форми та встановлює справжню висоту форми. Фактична анімація визначається правилами оформлення input CSS , які ми використовували раніше.
Ви можете або додати скрипти до файлів вашої теми, або просто помістити їх у новий файл. Якщо ви виберете другий шлях, потрібно буде поставити скрипти в чергу завантаження теми. Ось код, який потрібно додати до файлу functions.php :
Бажаєте побачити форму, яку ми щойно створили, у дії? Зайдіть сюди!
Форма користувача на основі Gravity Forms після додавання анімації
Це, безумовно, повний посібник зі стилів CSS input type . На даний момент у вас є базові знання та безліч прикладів коду, які допоможуть створити та налаштувати свою власну форму.
Input особливості стилізації CSS
Input — це один із найголовніших елементів веб-форм, який дозволяє користувачам вводити та надсилати дані на веб-сторінках. Проте, за умовчанням стилізація input може бути досить нудною і непривабливою.
У цій статті ми розглянемо основні способи стилізації input за допомогою CSS, щоб надати їм більш естетичного та сучасного вигляду. Ви дізнаєтеся про переваги та недоліки різних підходів до стилізації input та зможете використовувати їх на своїх проектах.
Стилізація базових властивостей input
Стилізація кольору фону, тексту та кордону
Один із найпростіших способів зміни зовнішнього вигляду input – це зміна його кольору тла, тексту та кордону. Для цього можна використовувати стандартні CSS властивості, такі як background-color, color та border. Ви можете вибрати будь-який колір та налаштувати його на свій смак.
Зміна форми та розміру
Input може мати різні форми, такі як прямокутник, коло, овал та багато іншого. Для зміни форми input можна використовувати властивість border-radius. Воно дозволяє задавати радіус заокруглення кутів елемента.
Крім того, можна змінювати розмір input за допомогою властивостей width і height. Наприклад, для створення ширшого input, ви можете задати йому ширину більше, ніж за замовчуванням.
Стилізація фокусу
Коли користувач клацає на input, він отримує фокус. Для того, щоб користувач розумів, що input активний, його можна стилізувати при отриманні фокусу. Це можна зробити за допомогою властивості outline чи box-shadow.
Використання псевдокласів для зміни стилю при різних подіях
CSS дозволяє використовувати псевдокласи для зміни стилю input при різних подіях, таких як :hover, :active, :focus та інших. Наприклад, можна змінити колір фону input, коли користувач наводить на нього курсор миші.
У цьому розділі ми розглянули основні властивості input і як стилізувати їх за допомогою CSS. Ви можете використовувати ці прийоми, щоб створювати унікальні та стильні input на ваших веб-сторінках.
Розширена стилізація input
Використання псевдоелементів для додавання додаткових стилів
Псевдоелементи – це елементи, які не існують у HTML-коді, але які можна додати за допомогою CSS. Вони можуть бути використані для додавання додаткових стилів до вводу, таких як значки, текстові підказки і т.д. Наприклад, ви можете додати іконку пошуку у поле введення пошукового запиту за допомогою псевдоелементу :: before.
Стилізація різних типів введення: текстове поле, поле введення пароля, чекбокс, радіокнопки і т.д.
Кожен тип input має свої унікальні властивості, які можуть бути стилізовані за допомогою CSS. Наприклад, можна змінити колір фону, шрифт, розмір і колір тексту, а також форму та стиль кордону.
Стилізація input з використанням фреймворків CSS
Фреймворки CSS, такі як Bootstrap та Foundation, надають готові класи та стилі для input, які можна використовувати для швидкої та зручної стилізації. Це може бути корисним, якщо ви хочете створити стандартні форми з мінімальною кількістю зусиль. Однак, не забувайте, що використання фреймворків може суттєво збільшити розмір вашого проекту, що може негативно вплинути на швидкість завантаження сторінки.
У результаті, розширена стилізація input – це чудовий спосіб покращити зовнішній вигляд та функціональність ваших форм на сайті. Використовуйте різні техніки та методи, щоб створювати унікальні та красиві форми, які будуть залучати користувачів та покращувати досвід використання вашого сайту.
Приклади стилізації input
Приклади стилізації input можуть допомогти вам створити унікальний та привабливий дизайн для вашого веб-сайту. У цьому розділі є кілька прикладів коду для стилізації базових властивостей input, розширеної стилізації input та інтерактивних прикладів для демонстрації ефектів.
/* Стилізація кольору фону, тексту та кордону */ input < background-color: #eee; color: #333; border: 2px solid #ccc; padding: 10px; >/* Зміна форми та розміру */ input[type="text"] < border-radius: 10px; width: 200px; height: 30px; >/* Стилізація фокусу */ input:focus < border: 2px solid #00bfff; background-color: #f2f2f2; >/* Використання псевдоелементів для додавання додаткових стилів */ input[type="checkbox"]::before < content: ""; display: inline-block; width: 20px; height: 20px; background-color: #ccc; margin-right: 10px; border-radius: 5px; >input[type="checkbox"]:checked::before < background-color: #00bfff; >/* Стилізація input з використанням фреймворків CSS */ /* Приклад стилізації input за допомогою Bootstrap */ /* Посилання на стилі Bootstrap має бути додане в head секцію */ /* input.form-control < border-radius: 10px; >*/ /* Інтерактивні приклади для демонстрації ефектів */ /* Приклад стилізації input за допомогою CSS Grid та Flexbox */ .container < display: grid; grid-template-columns: 1fr 1fr; grid-gap: 20px; >.form-item <position: relative; >.form-item input < grid-column: 1 / span 2; >.form-item::before < content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 10px; height: 10px; background-color: #ccc; border-radius: 50%; transition: all 0.3s ease; >.form-item input:focus ~::before < background-color: #00bfff; transform: translate(-50%, -50%) scale(2); >/* Приклад анімації фокусу input */ input:focus + label::after < content: ""; position: absolute; bottom: -5px; left: 50%; transform: translateX(-50%); width: 50px; height: 2px; background-color: #00bfff; animation: input-focus-animation 0.3s ease-in-out forwards; >@keyframes input-focus-animation < from < width: 0; >to < width: 50px; >>
Input — це не просто елемент веб-форми, це важливий інструмент, який може підвищити якість досвіду користувача на вашому веб-сайті.У цій статті ми розглянули основні способи стилізації input за допомогою CSS та навели приклади коду, які допоможуть вам створювати більш привабливі та функціональні форми. Сподіваюся, що ця стаття виявиться корисною для вас і допоможе вам створювати красиві та зручні форми на вашому веб-сайті.