単なるCSSリセットではなく、レスポンシブ対応のWeb制作を見据えたテクニックがいろいろ盛りこまれたスタイルシート -Marx
Post on:2015年5月7日
CSSリセットと呼ぶべきか、もしくはフレームワークと呼ぶべきか、非常に迷うのですが、そのどちらにも利用できるスタイルシート「Marx」を紹介します。
単なるCSSリセットに留まらず、レスポンシブ対応の最近のWebサイトの制作を見据えたさまざまなテクニックが盛りこまれており、コードを一行ずつ勉強したいですね。
Marxの特徴
- JavaScriptやclass付けを使用しないraw CSS
- すべてのブラウザに一貫したレンダリングを提供
- クリーンなタイポグラフィ
- ナビゲーションやボタン、フォームなど、カスタマイズ可能
- レスポンシブ対応
- シンプルでミニマルなデザイン
- ファイルサイズは、7.7kb
CSSリセットとしてはスタイルが少し多く、ページ作成のフレームワークとしては足りない感じです。
Marxのデモ
デモページでは、HTMLのさまざまな要素にMarxを適用した様子を見ることができます。
まずは、ページの要となるmain要素とセクショニングコンテンツ。
デフォルトでは幅60%のarticleと40%のasideで、2カラムレイアウトになっています。ここらへんはもちろんカスタマイズが簡単にできます。
Marxのデモ: 1/2
見出しやパラグラフやリスト、フォームやボタンなどもシンプルにスタイルされています。
Marxのデモ: 2/2
Marxの中身
Marx バージョン1.0.8(2015/5/6)の中身です。
ダウンロードファイルにはカテゴリごとに分けられたScssなども含まれており、カスタマイズにも優れています。
:root { box-sizing: border-box; cursor: default; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, 'Lucida Grande', sans-serif; line-height: 1.4; -ms-overflow-style: -ms-autohiding-scrollbar; overflow-y: scroll; text-rendering: optimizeLegibility; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; text-size-adjust: 100%; } audio:not([controls]) { display: none; } details { display: block; } input[type="number"] { width: auto; } input[type="search"] { -webkit-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } main { display: block; } summary { display: block; } pre { overflow: auto; } progress { display: inline-block; } small { font-size: 75%; } big { font-size: 125%; } template { display: none; } textarea { overflow: auto; resize: vertical; } [hidden] { display: none; } [unselectable] { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } *, ::before, ::after { border-style: solid; border-width: 0; box-sizing: inherit; } * { font-size: inherit; line-height: inherit; margin: 0; padding: 0; } ::before, ::after { text-decoration: inherit; vertical-align: inherit; } a { text-decoration: none; } audio, canvas, iframe, img, svg, video { vertical-align: middle; } button, input, select, textarea { background-color: transparent; border: .1rem solid #ccc; color: inherit; font-family: inherit; font-style: inherit; font-weight: inherit; min-height: 1.4em; } code, kbd, pre, samp { font-family: Menlo, Monaco, Consolas, 'Courier New', monospace, monospace; } nav ol, nav ul { list-style: none; } table { border-collapse: collapse; border-spacing: 0; } ::-moz-selection { background-color: #b3d4fc; text-shadow: none; } ::selection { background-color: #b3d4fc; text-shadow: none; } :focus { outline: none; } ::-moz-focus-inner { border: 0; } button::-moz-focus-inner { border: 0; } @media screen { [hidden~="screen"] { display: inherit; } [hidden~="screen"]:not(:active):not(:focus):not(:target) { clip: rect(0 0 0 0) !important; position: absolute !important; } } body { color: #444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, 'Lucida Grande', sans-serif; font-size: 1.6rem; font-style: normal; font-weight: 400; } p { margin: 0 0 1.6rem; } h1, h2, h3, h4, h5, h6 { font-family: 'Lato', 'Open Sans', 'Helvetica Neue', Helvetica, 'Lucida Grande', sans-serif; margin: 2rem 0 1.6rem; } h1 { border-bottom: 1px solid rgba(0, 0, 0, 0.2); font-size: 3.6rem; font-style: normal; font-weight: 500; } h2 { border-bottom: 1px solid rgba(0, 0, 0, 0.2); font-size: 3rem; font-style: normal; font-weight: 500; } h3 { font-size: 2.4rem; font-style: normal; font-weight: 500; } h4 { font-size: 1.8rem; font-style: normal; font-weight: 600; margin-bottom: 0.4rem; } h5 { font-size: 1.4rem; font-style: normal; font-weight: 600; margin-bottom: 0.4rem; } h6 { color: #777; font-size: 1.2rem; font-style: normal; font-weight: 600; margin-bottom: 0.4rem; } small { color: #777; } pre { background: #efefef; color: #444; display: block; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 1.4rem; margin-bottom: 1.6rem; padding: 1.6rem; word-break: break-all; word-wrap: break-word; } code { background: #efefef; color: #444; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 1.4rem; word-break: break-all; word-wrap: break-word; } a { color: #1271db; } a:hover, a:focus { text-decoration: none; } dl { margin-bottom: 1.6rem; } dd { margin-left: 4rem; } ul, ol, menu { margin-bottom: 1.6rem; -webkit-padding-start: 4rem; } blockquote { border-left: 2px solid #1271db; font-family: Georgia, Times, 'Times New Roman', serif; font-style: italic; margin: 1.6rem 0; padding-left: 1.6rem; } figcaption { font-family: Georgia, Times, 'Times New Roman', serif; } html { font-size: 62.5%; } body { padding: 0; } main, header, footer, nav, article, section, aside, details, summary { display: block; height: auto; margin: 0 auto; width: 100%; } main { display: block; margin: 0 auto; max-width: 76.8rem; padding: 0 1.6rem 1.6rem; } article { clear: left; display: inline-block; float: left; margin-bottom: 1.6rem; max-width: calc(60% - 1rem); } aside { clear: right; display: inline-block; float: right; margin-bottom: 1.6rem; max-width: calc(40% - 1rem); } section { clear: both; display: inline-block; float: left; margin-bottom: 1.6rem; max-width: 100%; } footer { border-top: .1rem solid rgba(0, 0, 0, 0.2); clear: both; display: inline-block; float: left; max-width: 100%; padding: 1rem 0; text-align: center; } hr { border-top: .1rem solid rgba(0, 0, 0, 0.2); display: block; margin-bottom: 1.6rem; width: 100%; } img { height: auto; max-width: 100%; vertical-align: baseline; } @media screen and (max-width: 40rem) { article, section, aside { clear: both; display: block; max-width: 100%; } img { margin-right: 1.6rem; } } input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="date"], input[type="month"], input[type="time"], input[type="datetime"], input[type="datetime-local"], input[type="week"], input[type="number"], input[type="search"], input[type="tel"], input[type="color"], select, textarea { border: .1rem solid #ccc; border-radius: 0; display: inline-block; padding: 0.8rem; vertical-align: middle; } input:not([type]) { -webkit-appearance: none; background-clip: padding-box; background-color: #fff; border: .1rem solid #ccc; border-radius: 0; color: #444; display: inline-block; padding: 0.8rem; text-align: left; } input[type="color"] { padding: 0.8rem 1.6rem; } input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, select:focus, textarea:focus { border-color: #b3d4fc; outline: 0; } input:not([type]):focus { border-color: #b3d4fc; outline: 0; } input[type="radio"], input[type="checkbox"] { vertical-align: middle; } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: .1rem solid thin #129fea; } input[type="text"][disabled], input[type="password"][disabled], input[type="email"][disabled], input[type="url"][disabled], input[type="date"][disabled], input[type="month"][disabled], input[type="time"][disabled], input[type="datetime"][disabled], input[type="datetime-local"][disabled], input[type="week"][disabled], input[type="number"][disabled], input[type="search"][disabled], input[type="tel"][disabled], input[type="color"][disabled], select[disabled], textarea[disabled] { background-color: #efefef; color: #777; cursor: not-allowed; } input:not([type])[disabled] { background-color: #efefef; color: #777; cursor: not-allowed; } input[readonly], select[readonly], textarea[readonly] { background-color: #efefef; border-color: #ccc; color: #777; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { border-color: #e9322d; color: #b94a48; } input[type="file"]:focus:invalid:focus, input[type="radio"]:focus:invalid:focus, input[type="checkbox"]:focus:invalid:focus { outline-color: #ff4136; } select { background-color: #fff; border: .1rem solid #ccc; outline: 0; } select[multiple] { height: auto; } label { line-height: 2; } fieldset { border: 0; margin: 0; padding: 0.8rem 0; } legend { border-bottom: .1rem solid #ccc; color: #444; display: block; margin-bottom: 0.8rem; padding: 0.8rem 0; width: 100%; } textarea { display: block !important; margin-bottom: 0.8rem; } input[type=submit], button { background-color: transparent; border: 2px solid #444; border-radius: 0; color: #444; cursor: pointer; display: inline-block; margin-bottom: 0.8rem; margin-right: 0.4rem; padding: 0.8rem 1.6rem; text-align: center; text-decoration: none; text-transform: uppercase; -webkit-transition: .25s ease; transition: .25s ease; -webkit-user-drag: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; vertical-align: baseline; } input[type=submit] a, button a { color: #444; } input[type=submit]::-moz-focus-inner, button::-moz-focus-inner { padding: 0; } input[type=submit]:hover, button:hover { background: #444; border-color: #444; color: #fff; } input[type=submit]:hover a, button:hover a { color: #fff; } input[type=submit]:focus, button:focus { outline: 0; } input[type=submit]:active, button:active { background: #6a6a6a; border-color: #6a6a6a; color: #fff; } input[type=submit]:active a, button:active a { color: #fff; } input[type=submit]:disabled, button:disabled { box-shadow: none; cursor: not-allowed; opacity: .40; } nav { display: block; } nav ul, nav ol { background: #fff; display: inline-block; height: auto; list-style: none; margin: 0; margin-bottom: 0.8rem; padding: 0; text-align: center; } nav ol { float: right; width: auto; } nav ol li { margin-left: 2rem; } nav li { float: right; margin: 0.8rem 0; } nav a { border-bottom: 2px solid transparent; color: #444; padding: 0.8rem 0; text-decoration: none; -webkit-transition: .25s ease; transition: .25s ease; } nav a:hover { border-color: rgba(0, 0, 0, 0.2); } nav a:active { border-color: rgba(0, 0, 0, 0.56); } @media screen and (max-width: 40rem) { nav ul { display: inline-block; margin-left: -.5rem; text-align: center; width: 100%; } nav ol { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; float: none; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } nav ol li { margin: 0; } nav li { float: none; margin-left: 1rem; } } table { margin-bottom: 1.6rem; } caption { padding: 0.8rem 0; } thead th { background: #efefef; color: #444; } tr { background: #fff; margin-bottom: 0.8rem; } th, td { border: .1rem solid #ccc; padding: 0.8rem 1.6rem; text-align: center; vertical-align: inherit; } tfoot tr { background: none; } tfoot td { color: #efefef; font-size: 0.8rem; font-style: italic; padding: 1.6rem 0.4rem; }
sponsors