WEBサイト制作の勉強

WEBサイト制作の勉強の為の解説ブログです。

フェリカテクニカルアカデミー

コーディングルールの設定

複数人でコーディング作業を進める場合、共通のルールや約束事を「コーディング規約」として事前に決めておきます。例えば担当者が独自の勝手なルールでコーディング作業を進めてしまうと、その担当者以外の者がコーディング作業する事が出来なくなってしまうため、サイトの「保守性」や「持続性」などを考えると、ルールが必要になってきます。また自身が制作したサイトでも、一度完成させた数年後に改修を行う事も珍しくないので、やはりルールを設定しておく必要があります。
ただ、あまり厳しいルールを設けると、逆に効率が落ちてしまい、結果として守られないルールになってしまうケースがあるので、その辺のバランスを上手くとる必要があります。


コーディング規約を大きく分けると「命名規則」「コーディング規則」「禁止事項」の3つに分類する事が出来ます。

命名規則

「id・class名」や「ファイル名」などをつける時に適当な名前にするのではなく、チームの他の人間が見た時に意味の解る物にする必要があります。

コーディング規則

インデントの付け方やネストのパターン、コメントアウトの方法など、コーディングする際の細かいルールも明文化しておく事で、サイトの「保守性」の高める事が出来ます。

禁止事項

禁止事項の場合も、出来るだけ具体的に挙げる事でサイトの「保守性」や効率を高める事が出来ます。



コーディング規約の実例

企業などが採用している実際のコーディング規約を参考にして見ましょう。コーディング規約やスタイルガイドは公開している企業はいくつかあるので、色々と参考にして見ましょう。

googleのコーディング規約

Google HTML/CSS Style Guide

githubのコーディング規約

github.com

東村山市の工務店 相羽建設のa-plan(エープラン)

相羽建設a-plan

東村山市工務店の規格住宅(企画住宅)で、自然素材を使ったあたたかい家です。子育て世代のためのOMソーラーやパッシブデザインを用いたシンプルな暮らしを「相羽建設」がご提案します。木造ドミノ住宅やi-works(アイワークス)をベースに、暮らしを豊かにする家づくり「a-plan(エープラン)」のご紹介です。

東村山市工務店の規格住宅(企画住宅)です。子育て世代のための、暮らしを豊かにする家づくり「a-plan(エープラン)」を「相羽建設」がご提案します。




www.aibaeco.co.jp



f:id:yachin29:20180226103730j:plain


http://www.aibaeco.co.jp/a-plan/

スプリットレイアウト(Split Layout)

スプリットレイアウト(Split Layout)とは

スプリットレイアウトとは、中央などの境界線をもとにコンテンツを分割したレイアウトの事です。例えば左右に分割し、画面を大きく使用することで、制約のあるウェブページを有効に使うことができ、また各コンテンツにおいて統一したデザインでなくてもうまくはまりやすく、クリエイティビティを表現しやすいのが特徴です。


f:id:yachin29:20170215112552p:plain




縦書きとrubyタグの使い方

「webは横書きが当たり前」そんな常識は変化しつつあります。
実はwebにおける縦書きの取り組みは、Internet Explorer5.5(2000年)が独自に実装していましたが、他のブラウザーでは実装されていませんでした。CSS3の策定を機会に最新の主要なウェブブラウザは縦書きを表現できるようになっています。

「writing-modeプロパティ」を使用し、縦書きにします。2016年11月現在、Firefoxも含めて、IEChromeSafariと主要ブラウザー全てに対応しているので、積極的に使っていきましょう。またWebkit系とIEは共にベンダープレフィックスが必要なので、Firefoxには必要ないのでそちらも注意が必要です。

また、この機会に最新の明朝体に最適化されたfont-familyの指定もしっかり覚えておきましょう。

p {
  -webkit-writing-mode: vertical-rl; /*ChromeとSafari用のベンダープレフィックス*/
  -ms-writing-mode: tb-rl; /*IE用のベンダープレフィックス*/
  writing-mode: vertical-rl; /*Firefox用はベンダープレフィックス無し*/
}

明朝体を使用する際のfont-family 2016年版

font-family: "游明朝", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", "HG明朝E", serif;




www.fieldcorp.jp



www.miyama-sansou.com


81-web.com


tategaki.github.io


ルビの使い方

HTML5から採用された「ruby」タグですが、以前はFirefoxで表示が出来なかったので実用的ではありませんでしたが、「Firefox 38」からルビ表示がサポートされるようになりました。(2015年8月1日現在、Firefoxの最新版は39)
このため、IEChromeSafariFirefoxの主要4ブラウザーで表示が出来るようになりました。今後の為にrubyタグの使い方をしっかりと覚えておきましょう。
http://yachin29.hatenablog.com/entry/2015/05/14/001720yachin29.hatenablog.com




rubyタグ対応前のFirefox

f:id:yachin29:20150513235308j:plain



rubyタグ対応後のFirefox(Ver.38以降)
f:id:yachin29:20150514000127j:plain








f:id:yachin29:20150801101806p:plain

index.html

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>縦書きとrubyタグ</title>
<style>
body {
  background: #D05A6E;
}
p {
  font-family:
    "ヒラギノ明朝 ProN",
    "HG明朝E",
    "MS P明朝",
    "MS 明朝",
    serif;
  margin: 0 auto;
  color: #FCFAF2;
  font-size: 22px;
  line-height:3;
  padding: 1em;
  letter-spacing: 0.15em;
  -webkit-writing-mode: vertical-rl; /*縦書きにする(右から左)*/
  -ms-writing-mode: tb-rl;
}
</style>
</head>
<body>
<p><ruby><rt>こころ</rt></ruby>にも<br>
あらでうき<ruby><rt></rt></ruby><br>
ながらえば<br>
<ruby><rt>こい</rt>しかるべき</ruby><br>
<ruby>夜半<rt>よか</rt></ruby><ruby><rt>つき</rt></ruby>かな</p>
</body>
</html>

今回はこれにCSS3アニメーションを追加してみましょう


見本サイト
http://yachin29.com/ruby/ruby.html



f:id:yachin29:20151130014437j:plain

Flexboxの使い方

Flexbox(Flexible Box Layout Module)はCSS3の新しいレイアウトモジュールで、複雑なレイアウトを今までより少ないコードでフレキシブルなボックスを組むことが出来ます。以前からあった技術ですが、各ブラウザーによって書き方が違ったり、仕様が変わったりと、イマイチ使いづらさがありましたが、最近のモダンブラウザーでは利用に難がなくなり充分使えるようになりました。IEのサポートポリシーの変更により、今後普及してくる技術の1つです。これを使う事でfloatを使って作っていたレイアウトが感覚的に作れるようになります。

視覚で見るのが非常に解りやすいです。
www.youtube.com

メリット
  • 少ない記述で簡単に横並びにできる!
  • 横並びになった要素の高さが最初から揃ってる!
  • 要素を上下左右、好きな順序に並び替えられる!
  • 高さの異なる横並びの要素を、簡単に上下中央揃え!

などなど、本来CSSでは出来ずにjQueryなどで行っていた事が非常に簡単に出来るようになります。

デメリット

無し!(強いて言えば一部のブラウザーにバグがあり)

ブラウザーのFlexboxのサポート状況
最新のサポート状況をhttp://caniuse.com/#search=flexboxなどで必ずチェックしましょう

f:id:yachin29:20161130115839j:plain
※2016年11月


Flexboxの基本

flexboxレイアウトを使うには親要素のdisplayプロパティに「flex」を指定するだけです。今回は「ul」要素を使います。

ul {
  display: flex;
}

f:id:yachin29:20160212221400j:plain

f:id:yachin29:20160212222603j:plain

flex-direction

flex-direction」プロパティを設定することにより、flexアイテムがflexコンテナでどのように配置されるか明示します。方向は2種類で、横列の水平、縦列の垂直に配置できます。
flex-direction: row; で左から右
       row-reverse; で右から左
       column; で上から下
       column-reverse; で下から上

ul {
  width:600px;
  margin: 20px;
  display: flex;
  flex-direction: row;
}
flex-wrap

flex-wrap」プロパティは、flexコンテナが複数のアイテムを一行、または複数行に配置することをコントロールします。

flex-wrap: nowrap;(初期値)は各アイテムの幅が親要素の幅に収まるように縮小される。
flex-wrap: wrap; 各アイテムの幅が親要素の幅に収まらない場合、下に回り込みます。

justify-content

「justify-content」プロパティは、flexアイテムを一行に配置します。(text-alignの指定と類似)

justify-content: flex-start;(初期値)flexコンテナの左側に配置されます。
justify-content: flex-end; flexコンテナの右側に配置されます。
justify-content: center; 中央に配置されます。
justify-content: space-between; 最初と最後のアイテムは端に、残りは等間隔で配置されます。
justify-content: space-around; 全てのアイテムが等間隔に配置されます。

子要素に指定

order

「order」プロパティは、display: flexを指定している親要素に配置される子の順番をコントロールします。
order: 1;
order: 2;
order: 3;




www.webcreatorbox.com




http://coliss.com/articles/build-websites/operation/css/css3-flexbox-properties-by-scotch.html




今までfloatやpositionを多用しなければ出来なかった様なレイアウトが少ないコードで簡単に組めるので、ぜひ色々なレイアウトを実際に組んでみましょう。
実際に「order」プロパティを使って3カラムレイアウトを組んでみましょう。


<body>
<nav>
  <ul class="main-nav">
    <li><a href="#" class="logo">Logo</a></li>
    <li><a href="#">Menu 1</a></li>
    <li><a href="#">Menu 2</a></li>
    <li><a href="#">Menu 3</a></li>
  </ul>
</nav>

<div class="main">
<section class="col-1">
<h1>Column 1</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent fermentum id mauris eget commodo. Sed ex leo, porttitor sit amet lectus et, pretium eleifend ipsum.</p>
</section>

<section class="col-2">
<h1>Column 2</h1>
<p>Morbi non semper sapien. Suspendisse elementum interdum metus, in volutpat lectus consectetur id. Praesent vulputate ipsum eget lectus tempus tempus. Nullam ut lobortis risus, eu tempor tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p>
<p>Integer vel pellentesque elit. Sed faucibus magna vitae metus ornare, ut pulvinar leo blandit. Mauris tincidunt ante nec quam maximus iaculis ut id lorem. Integer nec ligula faucibus, sollicitudin elit at, maximus tortor.</p>
</section>

<section class="col-3">
<h1>Column 3</h1>
<p>Integer commodo, risus vel viverra bibendum, massa massa consectetur felis.</p>
</section>
</div>
</body>


スタイルシート

@charset "utf-8";
/* CSS Document */

/* reset */
html, body, div, h1, h2, h3, h4, h5, h6,p, blockquote, pre, 
address,ul, ol, li, dl, dt, dd,table, th, td, form, fieldset {
  margin: 0;
  padding: 0;
  line-height: 1.0;
  font-family:
    "Hiragino Kaku Gothic ProN",
    Meiryo, 
    sans-serif;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
ul, ol {
  list-style: none; /* マーカーを消す */
}
a {
  text-decoration: none; /* 下線を消す */
}
img {
  border: 0;
}
img, input {
  vertical-align: bottom;
}


/*Flexboxスタイル*/

.main-nav, .main {
  display: flex;
}
.main-nav li:first-child {
  margin-right: auto;
}
.main-nav a {
  margin: 10px;
  border-radius: 5px;
  background: #60B99A;
  color: #fff;
  display: block;
  padding: 15px;
}
.main-nav .logo {
  background: #4584b1;
}

/* Main contents */
.main section {
  flex: 1;
  margin: 10px;
  border-radius: 5px;
  background: #F5F0CF;
  padding: 15px;
}
.main .col-2 {
  flex: 2;
}
.main h1 {
  color: #E6AC27;
}
.main p {
  margin-top: 10px;
  font-size: 18px;
}


/* Mobile */
@media screen and (max-width: 767px) {
.main {
    flex-direction: column;
}
}

Search Consoleの設定

サーチコンソールとはGoogle 検索結果でのサイトのパフォーマンスを監視、管理できる Google の無料サービスのことです。自分のサイトが Google 検索結果に表示されるようにするために Search Console に登録する必要はありませんが、登録していただくとサイトが Google にどのように認識されるかを確認し、検索結果でのサイトのパフォーマンスを最適化できるようになります。


Search Console - ホーム




サーチコンソールで判ることは
・ページのクリック数
・クリック率や掲載順位
・クエリ(ユーザーが検索時に入力する単語)
などです。





liskul.com



careerhack.en-japan.com

jQueryでのcookieの指定

jQueryでのcookieのコントロールにはプラグインを使用するのが便利です。



github.com

<script>
  $(function(){
 if($.cookie("access")){
    $('.box').css({display:'none'});
    } else {
     $('.box').delay(2000).fadeOut(2000);
    };
     $(window).load(function(){
		$.cookie("access",$('body').addClass('access'));
  });
  });
 </script>