Испытание: UI-кит для формы [18/18] 100% Проверка

Всем привет! С селекторами трудновато. Если не сложно, прошу проверить, высказать замечания если есть недочеты.

body {
width: 550px;

}

form {
width: 400px;
margin: 0 auto;
padding: 20px;
border-radius: 10px;
background-color: #ffffff;
box-shadow: 0 0 10px #cccccc;
}

fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}

fieldset legend {
color: #34495e;
}

.half-width {
display: inline-block;
width: 50%;
margin-right: -4px;
}

label {
display: block;
margin-bottom: 5px;
margin-top: 10px;
}

input[type=“radio”], input[type=“checkbox”] {
display: none;
}

input[id=“radio-2”] + label, input[id=“checkbox-2”] + label {
vertical-align: middle;
color: #7f8c8d;
}

input[type=“radio”] + label::before, input[type=“checkbox”] + label::before {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #bdc3c7;
}

input[type=“radio”] + label::before{
border-radius: 50%;
}

input[type=“radio”]:checked + label::before, input[type=“checkbox”]:checked + label::before{
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input[type=“radio”]:checked + label, input[type=“checkbox”]:checked + label {
color: #1abc9c;
}

input[type=“radio”]:disabled +label::before ,input[type=“checkbox”]:disabled +label::before {
box-shadow: 0 0 0 3px #ecf0f1;
}

input[type=“radio”]:disabled + label, input[type=“checkbox”]:disabled + label {
color: #ecf0f1;
}

input[type=“text”] {
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input[type=“text”]:required {
border-color: #e74c3c;
}

input[type=“text”]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}

input[value=“Неверные данные”] {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;
}

Первый момент:

input[id="radio-2"] + label, input[id="checkbox-2"] + label {
}

Здесь не нужно указывать стиль по id. Этот стиль должен работать для всех не выбранных, но активных элементов. Правильней будет написать с :enabled (без него тоже будет работать в данном примере):

input[type="radio"]:enabled + label, input[type="checkbox"]:enabled + label {
}

Второй момент:

input[value="Неверные данные"] {
}

Для такого случая есть псевдокласс :invalid:

input[type=text]:invalid {
}

Если введенная строка не попадет под условие атрибута pattern, то сработает этот стиль.

2 лайка

Спасибо огромное!

странно, но если сделать не по айди, а по тайпу, то результат показывает 99%

    body {
width: 550px;

}

form {
width: 400px;
margin: 0 auto;
padding: 20px;
border-radius: 10px;
background-color: #ffffff;
box-shadow: 0 0 10px #cccccc;
}

fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}

fieldset legend {
color: #34495e;
}

.half-width {
display: inline-block;
width: 50%;
margin-right: -4px;
}

label {
display: block;
margin-bottom: 5px;
margin-top: 10px;
}

input:not([type=“text”]){
display: none;
}

input:not([type=“text”])+label{
vertical-align: middle;
color: #7f8c8d;
}

input:not([type=“text”])+label::before {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #bdc3c7;
}

input[type=“radio”]+label::before{
border-radius: 50%;
}

input:checked+label::before{
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input:checked+label {
color: #1abc9c;
}

input:disabled+label::before {
box-shadow: 0 0 0 3px #ecf0f1;
}

input:disabled+label {
color: #ecf0f1;
}

input[type=“text”] {
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input[type=“text”]:required {
border-color: #e74c3c;
}

input[type=“text”]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}

input[type=“text”]:invalid {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;

А так можно?

Дошел до этого испытания горе по полам и понимаю в голове каша просто,даже начать не смог. глаза разбегаются

3 лайка
body {
width: 550px;

}

form {
width: 400px;
margin: 0 auto;
padding: 20px;
border-radius: 10px;
background-color: #ffffff;
box-shadow: 0 0 10px #cccccc;
}

fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}

fieldset legend {
color: #34495e;
}

.half-width {
display: inline-block;
width: 50%;
margin-right: -4px;
}

label {
display: block;
margin-bottom: 5px;
margin-top: 10px;
}

input[type=“radio”],
input[type=“checkbox”]{
display: none;
}

input[type=“radio”]:enabled+label,
input[type=“checkbox”]:enabled+label {
vertical-align: middle;
color: #7f8c8d;
}

input[type=“radio”]+label::before,
input[type=“checkbox”]+label::before {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #bdc3c7;
}

input[type=“radio”]+label::before {
border-radius: 50%;
}

input[type=“radio”]:checked+label::before,
input[type=“checkbox”]:checked+label::before {
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input[name=“radio”]:checked+label,
input[type=“checkbox”]:checked+label {
color: #1abc9c;
}

input[type=“radio”]:disabled+label::before,
input[type=“checkbox”]:disabled+label::before {
box-shadow: 0 0 0 3px #ecf0f1;
}

input[type=“radio”]:disabled+label,
input[type=“checkbox”]:disabled+label {
color: #ecf0f1;
}

input{
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input[type=“text”]:required {
border-color: #e74c3c;
}

input[type=“text”]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}

input[type=“text”]:invalid {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;
}

у меня так вышло

Всем, привет!
Мой вариант решения.
Прохождение 100%.

body {
  width: 550px;
}

form {
  margin: 0 auto;
  padding: 20px;
  width: 400px;
  border-radius: 10px;
  background-color: #ffffff;
  box-shadow: 0 0 10px #cccccc;
}

fieldset {
  padding: 10px;
  border: 1px solid #34495e;
  border-radius: 5px;
}

fieldset legend {
  color: #34495e;
}

.half-width {
  display: inline-block;
  margin-right: -4px;
  width: 50%;
}

label {
  display: block;
  margin-top: 10px;
  margin-bottom: 5px;
}

input[type="checkbox"],
input[type="radio"] {
  display: none;
}

input[type="checkbox"] + label, 
input[type="radio"] + label {
  color: #333333;
  vertical-align: middle;
}

input[type="checkbox"] + label::before,
input[type="radio"]+ label::before {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 8px;
  vertical-align: middle;
  border: 3px solid #ffffff;
  box-shadow: 0 0 0 3px #a0a0a0;
}

input[type="radio"] + label::before {
  border-radius: 50%;
}

input[type="checkbox"]:checked + label::before,
input[type="radio"]:checked + label::before {
  background-color: #1abc9c;
  box-shadow: 0 0 0 3px #1abc9c;
}

input[type="checkbox"]:checked + label,
input[type="radio"]:checked + label {
  color: #1abc9c;
}

input[type="checkbox"]:disabled + label::before,
input[type="radio"]:disabled + label::before {
  box-shadow: 0 0 0 3px #cecece;
}

input[type="checkbox"]:disabled + label,
input[type="radio"]:disabled + label {
  color: #cecece;
}

input[type="text"] {
  width: 95%;
  height: 24px;
  margin-bottom: 10px;
  padding: 2px 5px;
  color: #000000;
  border: 2px solid #bdc3c7;
  border-radius: 5px;
  vertical-align: middle;
}

input:required {
  border-color: #e74c3c;
}

input:disabled {
  color: #bdc3c7;
  background-color: #f5f5f5;
  border-color: #ecf0f1;
}

input:invalid {
  color: #c0392b;
  background-color: #f2a097;
  border-color: #e74c3c;
}

P.S. Дополнительно “поковырял” на предмет оптимизации (сокращения) записи, но вроде - это самый оптимальный вариант.:sunglasses:

4 лайка

не, не самый оптимальный, можно вот так поправить:
input:not([type="text"]) + label
и остальные также поправить, чтобы в одну строчку было

Блин, да…чет я не подумал про :not.
Спасибо, за подсказку :wink:

Странно, что у вас эти селекторы сработали, потому что у меня не до конца.
Выдает буд-то слишком большие отступы между строчками и батоны и кнопки дублируются почему-то… все перепроверила по несколько раз.
Вписала те же селекторы что и здесь описываете - ноль результата. может виснет что-то.
ПОМОГИИИИИТЕ (((

Пришлите код вашего решения.

body {
width: 550px;
}

form {
margin: 0 auto;
padding: 20px;
width: 400px;
border-radius: 10px;
background-color: #ffffff;
box-shadow: 0 0 10px #cccccc;
}

fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}

fieldset legend {
color: #34495e;
}

.half-width {
display: inline-block;
margin-right: -4px;
width: 50%;
}

label {
display: block;
margin-top: 10px;
margin-bottom: 5px;
}

input[type=“radio”],
input[type=“checkbox”] {
display: none;
}

input[type=“radio”] + label,
input[type=“checkbox”] + label {
color: #333333;
vertical-align: middle;
}

input[type=“radio”] + label::before,
input[type=“checkbox”] + label::before {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #a0a0a0;
}

input[type=“radio”]+label::before {
border-radius: 50%;
}

input[type=“radio”]:checked+label::before,
input[type=“checkbox”]:checked+label::before {
background-color: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input[name=“radio”]:checked+label,
input[type=“checkbox”]:checked+label {
color: #1abc9c;
}

input[type=“radio”]:disabled+label::before,
input[type=“checkbox”]:disabled+label::before {
box-shadow: 0 0 0 3px #cecece;
}

input[type=“radio”]:disabled+label,
input[type=“checkbox”]:disabled+label {
color: #cecece;
}

input[type=“text”] {
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input:required {
border-color: #e74c3c;
}

input:disabled {
color: #bdc3c7;
background-color: #f5f5f5;
border-color: #ecf0f1;
}

input:invalid {
color: #c0392b;
background-color: #f2a097;
border-color: #e74c3c;
}

Добрый день!

Почему в данной строчке:
input[type=“radio”] + label::before {
border-radius: 50%;
}

без лабел не закругляются радиобаттоны?

Не до конца ясно, о чём идёт речь. Уточните, пожалуйста, пришлите скриншот.

Если вы имеете ввиду, что когда убираете + label::before стили не применяются, то дело в селекторе input[type='radio'] + label::before. Он означает, что стили применяются к label::before, если он в коде сразу после input[type='radio'].

100%, может поможет кому.

Код

body {
  width: 550px;
}

form {
  margin: 0 auto;
  padding: 20px;
  width: 400px;
  border-radius: 10px;
  background-color: #ffffff;
  box-shadow: 0 0 10px #cccccc;
}

fieldset {
  padding: 10px;
  border: 1px solid #34495e;
  border-radius: 5px;
}

fieldset legend {
  color: #34495e;
}

.half-width {
  display: inline-block;
  margin-right: -4px;
  width: 50%;
}

label {
  display: block;
  margin-top: 10px;
  margin-bottom: 5px;
}

input:not([type="text"]) {
  display: none;
}

input:not([type="text"]):enabled + label {
  color: #333333;
  vertical-align: middle;
}

input:not([type="text"]) + label::before {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 8px;
  vertical-align: middle;
  border: 3px solid #ffffff;
  box-shadow: 0 0 0 3px #a0a0a0;
}

input[type="radio"] + label::before {
  border-radius: 50%;
}

input:not([type="text"]):checked + label::before {
  background-color: #1abc9c;
  box-shadow: 0 0 0 3px #1abc9c;
}

input:not([type="text"]):checked + label {
  color: #1abc9c;
}

input:not([type="text"]):disabled + label::before {
  box-shadow: 0 0 0 3px #cecece;
}

input:not([type="text"]):disabled + label {
  color: #cecece;
}

input[type="text"] {
  width: 95%;
  height: 24px;
  margin-bottom: 10px;
  padding: 2px 5px;
  color: #000000;
  border: 2px solid #bdc3c7;
  border-radius: 5px;
  vertical-align: middle;
}

input[type="text"]:required {
  border-color: #e74c3c;
}

input[type="text"]:disabled {
  color: #bdc3c7;
  background-color: #f5f5f5;
  border-color: #ecf0f1;
}

input[type="text"]:invalid {
  color: #c0392b;
  background-color: #f2a097;
  border-color: #e74c3c;
}
1 лайк

body {
width: 550px;
}

form {
margin: 0 auto;
padding: 20px;
width: 400px;
border-radius: 10px;
background-color: #ffffff;
box-shadow: 0 0 10px #cccccc;
}

fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}

fieldset legend {
color: #34495e;
}

.half-width {
display: inline-block;
margin-right: -4px;
width: 50%;
}

label {
display: block;
margin-top: 10px;
margin-bottom: 5px;
}

input[type=“radio”],
input[type=“checkbox”] {
display: none;
}

input[type=“radio”] + label,
input[type=“checkbox”] + label {
color: #333333;
vertical-align: middle;
}

label[for^=“radio”]::before,
label[for^=“checkbox”]::before {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #ffffff;
box-shadow: 0 0 0 3px #a0a0a0;
}

label[for^=“radio”]::before {
border-radius: 50%;
}

input[type=“radio”]:checked + label:before,
input[type=“checkbox”]:checked + label:before {
background-color: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}

input[type=radio]:checked + label,
input[type=checkbox]:checked + label {
color: #1abc9c;
}

input[type=radio]:disabled + label:before,
input[type=checkbox]:disabled + label:before {
box-shadow: 0 0 0 3px #cecece;
}

input[type=radio]:disabled + label,
input[type=checkbox]:disabled + label{
color: #cecece;
}

/ТЕкстовые поля/

input[type=“text”] {
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}

input[value^=“Обя”] {
border-color: #e74c3c;
}

input[value^=“Заб”] {
color: #bdc3c7;
background-color: #f5f5f5;
border-color: #ecf0f1;
}

input[value^=“Нев”] {
color: #c0392b;
background-color: #f2a097;
border-color: #e74c3c;
}

1 лайк