2017.04.27 Thu

フォームの見た目をcssで変更する方法

search

こんにちは。増田です。

私事ではありますが、ここ最近お茶をよく飲みます。
急須に茶葉を入れたティーバッグを入れ、熱湯を注いで温かいお茶を飲んでいます。
ほうじ茶や玄米茶、緑茶などを日替わりや気分で回しています。
急須ではなく、インスタントの紅茶やミルクティーなども身体があたたまるのでいいですよね。

ここ最近は暖かくなってきたこともあり、毎日飲むということはなくなってしまいましたが、2日に一度は口にしたくなる今日このごろです。

前置きはここまでにしておいて、
皆さんはフォームをご存知でしょうか?
昔からいろんなサイトに実装されているもので、webページ製作においてはずせない存在ですよね。
今回はこのフォームをCSSで自分好みに設定する方法をご紹介致します。

フォームと聞いて、難しそうだと感じる方もいらっしゃるかもしれません。
しかし、フォームの実装自体はそんなに手間もかからず、割とあっという間にお問い合わせページなどが作れてしまいます。
wordpressであればプラグインもありますし、Web上では作成ツールもあるようです。
今回は一例としてmailformproの参考URLを記載しておきます。興味があれば一度御覧ください。
https://www.synck.com/contents/download/cgi-perl/mailformpro.html

さて、フォームを実装できたはいいものの、なんだかデフォルトの状態ってなにか物足りないように感じますよね。
デザインを自分好みに変えてやろう!と意気込んでCSSを編集してみたものの、見た目が変わらず「あれ?」と感じたことのある方もいらっしゃることと思います。

なにかフォームをCSSで調整する方法は無いものか……….あるんです!

そもそもなぜフォームのCSSは効かないのかというと、
「各ブラウザにおける自動CSSが効いてしまっているから」
なんです。
そのCSSの効果を無効化できれば、自分で設定したCSSが効くようになります。

各ブラウザごとに自動で効果が掛かってしまわないようにするには、
リセットCSS
と呼ばれるものを使用します。
リセットCSSはネットからダウンロードでき、ダウンロードしたファイルの中のCSSファイルを内に読み込ませることで使用できます。
ちなみにリセットCSSは、フォームだけでなく、フォントサイズやマージンなど、すべてのCSSを無効化するため、コーディング開始時に読み込んでおくことをおすすめします。

リセットCSSにも種類があります。
今回はその中で3つのリセットCSSをご紹介したいと思います。

リセットCSSの紹介


 

1.Eric Meyer’s CSS Reset

Eric Meyer氏が作成したリセットCSSです。古いものですが、まだ海外でも多く使われ、一般的なリセットCSSです。

====================
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers
*/
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: ”;
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
====================

参考:http://meyerweb.com/eric/tools/css/reset/

2.HTML5 Doctor CSS ResetGet The Code

前述のEric Meyers CSS resetを元にして改変されたリセットCSSです。HTML5で廃止された要素を排除し、新要素も加えて設定されています。

====================
/*
html5doctor.com Reset Stylesheet
v1.6.1
Last Updated: 2010-09-17
Author: Richard Clark – http://richclarkdesign.com
Twitter: @rich_clark
*/html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}

body {
line-height:1;
}

article,aside,details,figcaption,figure,
footer,header,hgroup,menu,nav,section {
display:block;
}

nav ul {
list-style:none;
}

blockquote, q {
quotes:none;
}

blockquote:before, blockquote:after,
q:before, q:after {
content:”;
content:none;
}

a {
margin:0;
padding:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}

/ change colours to suit your needs /
ins {
background-color:#ff9;
color:#000;
text-decoration:none;
}

/ change colours to suit your needs /
mark {
background-color:#ff9;
color:#000;
font-style:italic;
font-weight:bold;
}

del {
text-decoration: line-through;
}

abbr[title], dfn[title] {
border-bottom:1px dotted;
cursor:help;
}

table {
border-collapse:collapse;
border-spacing:0;
}

/* change border colour to suit your needs
*/
hr {
display:block;
height:1px;
border:0;
border-top:1px solid #cccccc;
margin:1em 0;
padding:0;
}

input, select {
vertical-align:middle;
}
====================

参考:http://html5doctor.com/html-5-reset-stylesheet/

3.normalize.css

こちらもHTML5に対応したリセットCSSです。説明が記載してある点や、有用なタグについてはそのまま残してある点が特徴です。

====================
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css
*//**
* 1. Change the default font family in all browsers (opinionated).
* 2. Prevent adjustments of font size after orientation changes in IE and iOS.
*/

html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}

/**
* Remove the margin in all browsers (opinionated).
*/

body {
margin: 0;
}

/* HTML5 display definitions
========================================================================== */

/**
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
* 2. Add the correct display in IE.
*/

article,
aside,
details, /* 1 */
figcaption,
figure,
footer,
header,
main, /* 2 */
menu,
nav,
section,
summary { /* 1 */
display: block;
}

/**
* Add the correct display in IE 9-.
*/

audio,
canvas,
progress,
video {
display: inline-block;
}

/**
* Add the correct display in iOS 4-7.
*/

audio:not([controls]) {
display: none;
height: 0;
}

/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/

progress {
vertical-align: baseline;
}

/**
* Add the correct display in IE 10-.
* 1. Add the correct display in IE.
*/

template, /* 1 */
[hidden] {
display: none;
}

/* Links
========================================================================== */

/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/

a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}

/**
* Remove the outline on focused links when they are also active or hovered
* in all browsers (opinionated).
*/

a:active,
a:hover {
outline-width: 0;
}

/* Text-level semantics
========================================================================== */

/**
* 1. Remove the bottom border in Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/

abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}

/**
* Prevent the duplicate application of bolder by the next rule in Safari 6.
*/

b,
strong {
font-weight: inherit;
}

/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/

b,
strong {
font-weight: bolder;
}

/**
* Add the correct font style in Android 4.3-.
*/

dfn {
font-style: italic;
}

/**
* Correct the font size and margin on h1 elements within section and
* article contexts in Chrome, Firefox, and Safari.
*/

h1 {
font-size: 2em;
margin: 0.67em 0;
}

/**
* Add the correct background and color in IE 9-.
*/

mark {
background-color: #ff0;
color: #000;
}

/**
* Add the correct font size in all browsers.
*/

small {
font-size: 80%;
}

/**
* Prevent sub and sup elements from affecting the line height in
* all browsers.
*/

sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}

sub {
bottom: -0.25em;
}

sup {
top: -0.5em;
}

/* Embedded content
========================================================================== */

/**
* Remove the border on images inside links in IE 10-.
*/

img {
border-style: none;
}

/**
* Hide the overflow in IE.
*/

svg:not(:root) {
overflow: hidden;
}

/* Grouping content
========================================================================== */

/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd em font sizing in all browsers.
*/

code,
kbd,
pre,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}

/**
* Add the correct margin in IE 8.
*/

figure {
margin: 1em 40px;
}

/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/

hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}

/* Forms
========================================================================== */

/**
* 1. Change font properties to inherit in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/

button,
input,
select,
textarea {
font: inherit; /* 1 */
margin: 0; /* 2 */
}

/**
* Restore the font weight unset by the previous rule.
*/

optgroup {
font-weight: bold;
}

/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/

button,
input { /* 1 */
overflow: visible;
}

/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/

button,
select { /* 1 */
text-transform: none;
}

/**
* 1. Prevent a WebKit bug where (2) destroys native audio and video
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/

button,
html [type=”button”], /* 1 */
[type=”reset”],
[type=”submit”] {
-webkit-appearance: button; /* 2 */
}

/**
* Remove the inner border and padding in Firefox.
*/

button::-moz-focus-inner,

[type=”submit”]::-moz-focus-inner {
border-style: none;
padding: 0;
}

/**
* Restore the focus styles unset by the previous rule.
*/

button:-moz-focusring,

[type=”submit”]:-moz-focusring {
outline: 1px dotted ButtonText;
}

/**
* Change the border, margin, and padding in all browsers (opinionated).
*/

fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}

/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from fieldset elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* fieldset elements in all browsers.
*/

legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}

/**
* Remove the default vertical scrollbar in IE.
*/

textarea {
overflow: auto;
}

/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/

[type=”checkbox”],
[type=”radio”] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}

/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/

[type=”number”]::-webkit-outer-spin-button {
height: auto;
}

/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/

[type=”search”] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}

/**
* Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
*/

[type=”search”]::-webkit-search-decoration {
-webkit-appearance: none;
}

/**
* Correct the text style of placeholders in Chrome, Edge, and Safari.
*/

::-webkit-input-placeholder {
color: inherit;
opacity: 0.54;
}

/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to inherit in Safari.
*/

::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
====================

参考:https://necolas.github.io/normalize.css/

今回はリセットCSSについてご紹介しました。
前述の通り、フォームの改修だけでなく、各ブラウザで勝手に効果がかかってしまうものを無効化できるため、自分の思い通りにサイトをコーディングしていくことができるようになります。
使用するのはとても簡単なので、もしコーディングで困った際はリセットCSSを利用してみて下さい。
それでは、今回はこのへんで失礼させていただきます。

WRITERこの記事を書いた人

増田

a-blogやWordPressを使用したサイト制作に携わっています。 もっといろんなCMSを扱えるようになれるよう勉強中です。

a-blogやWordPressを使用したサイト制作に携わっています。 もっといろんなCMSを扱えるようになれるよう勉強中です。

FREE DOWNLOAD

顧客獲得に成功した24社の成功事例を1冊にまとめました。
顧客獲得にお困りの方も、そうでない方も、一度お読みいただくことをお勧めします。

MORE VIEW