Здравствуйте. Помогите с выполнением задания. Ни как не могу понять как изменить внешний вид радиобаттонов и чекбоксов. С текстом более-менее понятно, а с этими не могу справиться. Ума не приложу.
Внешний вид у них не меняется по сути. Просто создаются псевдоэлементы нужного размера и формы, а настоящие чекбоксы и радиобаттоны скрыты. Будет легче разбираться, если покажете, что вы уже сделали.
Пожалуйста, вот мой код. С текстом проблем нет. input`ы сделать не могу
body {
width: 550px;
}
form {
margin: 0 auto;
padding: 20px;
width: 400px;
border-radius: 10px;
background-color: #fff;
box-shadow: 0 0 10px #ccc;
}
fieldset {
padding: 10px;
border: 1px solid #34495e;
border-radius: 5px;
}
fieldset legend{
color: #34495e;
}
.half-width {
width: 50%;
display: inline-block;
margin-right: -4px;
}
label {
display: block;
margin-bottom: 5px;
margin-top: 10px;
}
input[type="radio"], input[type="checkbox"] {
display: none;
}
label[for$="-2"] {
color: #7f8c8d;
vertical-align: middle;
}
input:not([type="text"]) {
content: "";
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #fff;
box-shadow: 0 0 0 3px #bdc3c7;
}
selector {
border-radius: 50%;
}
#radio-1 {
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}
label[for$="-1"] {
color: #1abc9c;
}
input[id$="-3"] {
box-shadow: 0 0 0 3px #ecf0f1;
}
label[for$="-3"] {
color: #ecf0f1;
}
input[type="text"] {
margin-bottom: 10px;
padding: 2px 5px;
width: 95%;
height: 24px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
font-family: "Roboto";
}
input:required {
border-color: #e74c3c;
}
input:disabled {
border-color: #ecf0f1;
color: #bdc3c7;
background: #f5f5f5;
}
input[pattern] {
border-color: #e74c3c;
color: #c0392b;
background: #F2A097;
}
Вот в этом фрагменте:
input:not([type=“text”]) {
content: “”;
display: inline-block;
width: 7px;
height: 7px;
margin-right: 8px;
vertical-align: middle;
border: 3px solid #fff;
box-shadow: 0 0 0 3px #bdc3c7;
}
свойство content вам подсказывает, что это должен быть псевдоэлемент. Само поле чекбокса у вас скрыто (display: none;), а псевдоэлемент добавляется к label.
Селектор будет такой: input[type=“checkbox”] + label:before. По такому же принципу напишите селектор для радиобаттона.
Спасибо за помощь, все сделал на 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:not([type=“text”]) {
display: none;
}
input[type=“radio”] + label,
input[type=“checkbox”] + label{
vertical-align: middle;
color: #7f8c8d;
}
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 #bdc3c7;
}
label[for*=“radio”]::before {
border-radius: 50%;
}
input:checked + label[for*=“radio”]::before,
input:checked + label[for*=“checkbox”]::before {
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}
input:checked + label {
color: #1abc9c;
}
input:disabled + label[for*=“radio”]::before,
input:disabled + label[for*=“checkbox”]::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:required {
border-color: #e74c3c;
}
input[type=“text”]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}
input:invalid {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;
}
Вместо этого можно просто input:checked+label:before. Для disabled так же.
Проверьте, пожалуйста, мой код. Требуется критика. И есть вопрос: мы указываем рамки для текстовых полей, но при попытке редактировать содержимое поля подсвечивается дополнительная рамка синего цвета. Ее можно убрать?
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;
}
[type="radio"],
[type="checkbox"] {
display: none;
}
label[for] {
vertical-align: middle;
color: #7f8c8d;
}
label[for^="radio"]::before,
label[for^="check"]::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;
}
label[for^="radio"]::before {
border-radius: 50%;
}
:checked + label::before{
background: #1abc9c;
box-shadow: 0 0 0 3px #1abc9c;
}
:checked + label {
color: #1abc9c;
}
:disabled + label::before{
box-shadow: 0 0 0 3px #ecf0f1;
}
:disabled + label {
color: #ecf0f1;
}
[type="text"] {
width: 95%;
height: 24px;
margin-bottom: 10px;
padding: 2px 5px;
color: #000;
border: 2px solid #bdc3c7;
border-radius: 5px;
vertical-align: middle;
}
[type="text"]:required {
border-color: #e74c3c;
}
[type="text"]:disabled {
color: #bdc3c7;
background: #f5f5f5;
border-color: #ecf0f1;
}
[type="text"]:invalid {
color: #c0392b;
background: #f2a097;
border-color: #e74c3c;
}
Возможно, вы имеете в виду стилизацию полей при фокусировке.
Тогда примерно так:
input[type="text"]:focus {
border: none;
}
К коду испытания вопросов нет.
Да,уже заглянула в последующие курсы и обнаружила. Спасибо!
На счет кода: label[for] с ним тоже все нормально, можно так писать?
А, вы об этом… Теоретически, да, можно. Но всё же лучше дописать и значение атрибута.