フォーム内のテキストフィールドなどのパーツデザインのカスタマイズのまとめです。
サンプルはこちら

デザインは基本的にCSSのみで行なっています。セレクトボックスの下向き矢印のみSVG画像を使用しています。
フォームのHTMLはこちら。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<form>
<input type="text" placeholder="テキストフィールド">
<br>
<br>
<textarea placeholder="テキストエリア"></textarea>
<br>
<br>
<select>
<option value="0">セレクト1</option>
<option value="1">セレクト2</option>
<option value="2">セレクト3</option>
</select>
<br>
<br>
<label class="option"><input type="radio" name="radio" value="0"><span><i></i></span>ラジオボタン1</label>
<label class="option"><input type="radio" name="radio" value="1"><span><i></i></span>ラジオボタン2</label>
<label class="option"><input type="radio" name="radio" value="2"><span><i></i></span>ラジオボタン3</label>
<br>
<br>
<label class="option"><input type="checkbox" name="checkbox" value="0"><span><i></i></span>チェックボックス1</label>
<label class="option"><input type="checkbox" name="checkbox" value="1"><span><i></i></span>チェックボックス2</label>
<label class="option"><input type="checkbox" name="checkbox" value="2"><span><i></i></span>チェックボックス3</label>
<br>
<br>
<input type="button" value="汎用ボタン">
<input type="submit" value="送信ボタン">
</form>

CSSはこちら。ラジオボタン、チェックボックスでは本来のパーツを非表示にして、<span>タグで独自のパーツを作成しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
body {
	font-family: "Yu Gothic", YuGothic, "Hiragino Kaku Gothic ProN", Verdana, Meiryo, sans-serif;
}
input[type=text],
input[type=email],
input[type=password],
input[type=button],
input[type=submit],
textarea,
select {
	box-sizing: border-box;
	font-size: 16px;
	line-height: 30px;
	outline: none;
	border: none;
	margin: 0px;
	border-radius: 5px;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
}
input[type=text],
input[type=email],
input[type=password],
select,
textarea {
	background-color: #eeeeee;
}
input[type=text],
input[type=email],
input[type=password],
textarea {
	line-height: 20px;
}
input[type=text],
input[type=email],
input[type=password] {
	height: 30px;
	text-indent: 10px;
	padding: 5px 0px;
}
input[type=button],
input[type=submit] {
	display: inline-block;
	text-align: center;
	color: #ffffff;
	cursor: pointer;
	padding: 0px 10px;
	background-color: #666666;
	transition: 0.25s opacity ease;
}
input[type=button]:hover,
input[type=submit]:hover {
	opacity: 0.75;
}
label.option {
	margin-right: 20px;
}
label.option input[type=radio],
label.option input[type=checkbox] {
	display: none;
}
label.option input[type=radio] + span,
label.option input[type=checkbox] + span {
	display: inline-block;
	position: relative;
	width: 20px;
	height: 20px;
	vertical-align: middle;
	cursor: pointer;
	margin-right: 5px;
	background-color: #eeeeee;
}
label.option input[type=radio] + span {
	border-radius: 50%;
}
label.option input[type=checkbox] + span {
	border-radius: 5px;
}
label.option input[type=radio] + span i,
label.option input[type=checkbox] + span i {
	display: block;
	position: absolute;
	opacity: 0;
	transition: 0.25s opacity ease;
}
label.option input[type=radio] + span i {
	width: 10px;
	height: 10px;
	left: 5px;
	top: 5px;
	background-color: #666666;
	border-radius: 50%;
}
label.option input[type=checkbox] + span i {
	width: 5px;
	height: 10px;
	left: 6px;
	top: 1px;
	border-right: 3px solid #666666;
	border-bottom: 3px solid #666666;
	transform: rotate(45deg);
}
label.option input[type=radio]:checked + span i,
label.option input[type=checkbox]:checked + span i {
	opacity: 1;
}
select {
	height: 30px;
	padding: 0px 40px 0px 10px;
	background-image: url(images/arrow-select.svg);
	background-repeat: no-repeat;
	background-position: right 10px center;
	background-size: auto 10px;
}
select::-ms-expand {
	display: none;
}
textarea {
	padding: 5px 10px;
}