WEBサイト制作の勉強

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

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

bxsliderとハンバーガーメニューの実装

index.html

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>bxsliderの導入</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/jquery.bxslider.css">
<script src="js/jquery.min.js"></script>
<script src="js/jquery.bxslider.js"></script>
<script>
$(document).ready(function(){
  $('.bxslider').bxSlider();
});

$(function(){
 $('#gnav').hide();//まず隠す
 $(window).on('load resize', function(){
    if($(window).innerWidth() < 768 ){
      //スマホの時
     $('#gnav').hide();
    }else{
      //スマホ以外の時
      $('#gnav').show();
      $('#btn').removeClass('anime');
    }
 });
 $('#btn').on('click',function(){
    $(this).toggleClass('anime');
    $('#gnav').slideToggle(200);
   });
 });
</script>
</head>
<body>
<header>
<h1>タイトル</h1>
<p id="btn"><span></span></p>
<nav id="gnav">
<ul>
<li><a href="#">ボタン1</a></li>
<li><a href="#">ボタン2</a></li>
<li><a href="#">ボタン3</a></li>
<li><a href="#">ボタン4</a></li>
</ul>
</nav>
</header>
<ul class="bxslider">
<li><img src="img/slide_01.jpg" alt=""></li>
<li><img src="img/slide_02.jpg" alt=""></li>
<li><img src="img/slide_03.jpg" alt=""></li>
</ul>
</body>
</html>


スタイルシート

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

html,body,h1,p,ul,li {
  margin:0;
  padding:0;
  line-height:1.0;
}
ul {
  list-style:none;
}
a {
  text-decoration:none;
}
img {
  vertical-align:bottom;
}

/*PCレイアウト*/
h1 {
  text-align:center;
  padding:20px;
  font-size:40px;
}
#gnav {
  width:100%;
  background:#2749E4;
  margin-bottom:40px;
}
#gnav ul {
  display:flex;
  max-width:960px;
  margin:0 auto;
}
#gnav ul li {
  width:25%;
  height:50px;
  border-right:1px solid #FFF;
  box-sizing:border-box;
}
#gnav ul li a {
  display:block;
  text-align:center;
  background:#576FBC;
  line-height:50px;
  color:#FFF;
}
#gnav ul li:last-child {
    border-right:none;
}
#gnav ul li a:hover {
  background:#1D4196;
}
#btn {
  display:none;
}
@media screen and (max-width:767px){
 header {
   width:100%;
   height:70px;
 }
 h1 {
   text-align:left;
   font-size:30px;
 }
#btn {
  display:block;
  width:50px;
  height:50px;
  border-radius:4px;
  border:2px solid #2E74EF;
  position:absolute;
  right:20px;
  top:8px;
}
#btn>span {
  display:block;
  width:30px;
  height:2px;
  background:#2E74EF;
  position:absolute;
  top:0;
  right:0;
  bottom:0;
  left:0;
  margin:auto;
  transition:0.1s linear;
}
#btn>span:before {
  display:block;
  content:"";
  width:30px;
  height:2px;
  background:#2E74EF;
  position:absolute;
  top:-20px;
  right:0;
  bottom:0;
  left:0;
  margin:auto;
  transition:0.2s  linear;
}
#btn>span:after {
  display:block;
  content:"";
  width:30px;
  height:2px;
  background:#2E74EF;
  position:absolute;
  top:0;
  right:0;
  bottom:-20px;
  left:0;
  margin:auto;
  transition:0.2s linear;
}
#btn.anime>span {
  background:transparent;
}
#btn.anime>span:before {
  transform:rotate(45deg);
  top:0;
}
#btn.anime>span:after {
  transform:rotate(135deg);
  bottom:0;
}
#gnav {
  position:relative;
  z-index:9999;
  width:100%;
  height:calc(100vh - 70px);
}
#gnav ul {
  display:block;
  max-width:960px;
  margin:0 auto;
}
#gnav ul li {
  width:100%;
  height:50px;
  border-right:none;
  border-bottom:1px solid #FFF;
  box-sizing:border-box;
}
#gnav ul li a {
  display:block;
  text-align:center;
  background:#576FBC;
  line-height:49px;
  color:#FFF;
}
#gnav ul li:last-child {
    border-bottom:none;
}
#gnav ul li a:hover {
  background:#1D4196;
}
}

jQueryでクリックする度にテキストを切り替える

ボタンを押すたびに「もっと見る」と「閉じる」が切り替わるようにjqueryを設定します。
ボタンを押すたびにON・OFFを切り替えるスイッチ的な物は以前であれば「Toggle」を使って簡単に出来ましたが、jQuery1.9以降で廃止されたので、代わりに「flg」を使ってON・OFFのスイッチを作ります。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script>
$(function(){
  var flg = "off";
  $('#btn').on('click', function(){
    if(flg == "off"){
      $(this).text("閉じる");
      flg = "on";
    }else{
      $(this).text("もっと見る");
      flg = "off";
    }
  });
});
</script>
</head>

<body>
<p id="btn">もっと見る</p>

</body>

厚木にあるエステサロン|ワミレスサロン厚木 beglad

厚木にあるエステサロン、ワミレスサロン厚木begladのホームページです。私達ワミレスサロン厚木begladは、オールハンドが売りのフェイシャルエステサロンです。肌のこと、メイクのこと、化粧品のことなど、なんでもお気軽にご相談ください。アットホームな店内でお待ちしております。


f:id:yachin29:20180804191248j:plain

http://beglad.html.xdomain.jp/

jQueryとCSS3を使ったアニメーション

HTML5 × CSS3 × jQueryのハイブリッドアニメーション

f:id:yachin29:20160427010604j:plain


最近のWebアニメーションはスマホで表示する事も考慮し、動きの軽いアニメーションが求められています。その為には単一のスクリプトではなく複数のスクリプトを合わせる必要があります。

jQueryの特徴の1つであるアニメーション機能を使うと、手軽にアニメーションを実装することができてとても便利です。しかし、jQueryによるアニメーションを多用すると処理がどうしても重くなります。
特にスマホなどでは、元々アニメーションがネイティブアプリのUIに多く使われているため、jQueryによるアニメーションがもっさりとした動きになる事が多いです。
jQueryのアニメーションは、通常CPUにより処理されています。CUPはアニメーションだけでなくコンピュータ全体の演算を担っているため、CPUでアニメーション処理を行うとどうしても処理が遅くなってしまいます。

CSS3の「transformプロパティ」を使用したアニメーションはGPUが処理を行います。GPU「 Graphcs Prosessing Unit」は画像の処理が得意なので、描画をGPUで行う事でCPUの負担が軽減され、結果としてページ全体の表示も早くなります。

jQueryとCSS3を上手く使うことで、滑らかで負荷のかからないアニメーションを制作しましょう。


使用するjQueryメソッド

addClassメソッド

指定した要素に引数で設定したクラス(class属性)を追加します。引数にはfunctionを指定することも可能で、条件によって追加するクラスを変更するなど高度な処理にも対応できます。

removeClassメソッド

指定した要素から引数に設定したクラス(class属性)を削除します(引数を設定しない場合には全てのクラスを削除します)。引数にはfunctionを指定することも可能で、条件によって削除するクラスを変更するなど高度な処理にも対応できます。

parentメソッド

指定した要素の「親」要素を選択します。親要素とは階層構造(入れ子構造)において直上にある要素のことです。
名前が似ているparentsメソッドはparentメソッドと異なり「先祖」要素も選択します。

siblingsメソッド

指定した要素の兄弟要素(同じ階層の要素)を選択します。引数を設定しない場合はすべての兄弟要素を選択します。

toggleClassメソッド

指定したCSSクラスが要素に無ければ追加し、あれば削除する。


CSS3によるアニメーション

CSS3によるアニメーションは大きく分けて、トランジション(transition)とアニメーション(animation)の2つに別ける事が出来ます。

CSS3におけるトランジション(transition)とアニメーション(animation)の違い

「transition」
  • 動かすために:hoverなどのきっかけが必要
  • トランジションでは実行後に元のプロパティ値に戻る
  • 比較的簡単な記述で動かす事が可能
「animation」
  • transitionより細かい設定が可能
  • 記述が複雑
  • 「@keyframes」の記述が必要


cssanimation.rocks

transitionで指定出来るプロパティ

transition-property

アニメーションしたいプロパティの名前を指定。ここに指定したプロパティだけが、トランジションによりアニメーションします。それ以外のプロパティの変更は即座に反映されます。

transition-duration

トランジションの実行にかける所要時間を指定。

transition-timing-function

トランジションの中間状態における動き方を指定。
簡単に言うと、動き方の変化の指定です。
timing-functionは大きく分けると5種類あり、違いを理解する事で適切な動き方を表現できるようになるので、しっかり覚えましょう。

・linear
一定の速度で変化します。

・ease
最初と最後がゆっくり滑らかに変化します。

・ease-in
ゆっくり始まり、徐々に速くなります。
・ease-out
速く始まり、徐々に遅くなります。

・ease-in-out
動きはeaseと同じく、最初と最後がゆっくり滑らかに変化します。
違いは速度です。ease-in-outの方がよりゆっくり始まりゆっくり終わります。



CSS3のtransition-timing-functionの動きをサンプルで理解しよう|Webpark

transition-delay

トランジションの実行が開始されるまでの待ち時間。

求職者支援訓練 webサイト制作科 2018年9月開講クラス募集中

f:id:yachin29:20180723194421j:plain


東京池袋のフェリカテクニカルアカデミーでは、只今平成30年9月6日より 開講する「Webサイト制作科」の受講生を募集しています。
600時間を超える講座を無料で受講出来、プロになるために必要なスキルを身につける事が出来ます。また、職業訓練受講給付金として給付金を受け取ることが出来ます。(受給資格がありますので、ご確認下さい。)
詳細に関してはフェリカテクニカルアカデミーに直接お問い合わせ下さい。TEL:03-3981-7201

募集期間:8月9日まで

訓練期間:2018年9月6日 ~ 2019年3月5日

訓練時間:15時55分 ~ 20時50分

フェリカテクニカルアカデミーでは、施設見学会を行っていきます。
施設見学会へのご予約はwebフォームでも受付けております。

ご予約フォームはこちらから

www.felica.info



求職者支援訓練とは?

求職者支援制度とは、職業訓練による能力形成を通じ、真剣に就職を目指そうとする方のための制度です。雇用保険を受給できない失業者の方に対し、無料の職業訓練(求職者支援訓練)を実施し、一定の支給要件を満たす場合は、職業訓練の受講を容易にするための給付金を支給するとともに、ハローワークにおいて強力な就職支援を実施することにより、安定した「就職」を実現するための制度です。

求職者支援訓練の受講を希望される方は、まずは求職者支援訓練を受講できる資格があるかご確認ください。不明なことがございましたら、フェリカテクニカルアカデミーに問い合わせいただくか、最寄のハローワークに直接問い合わせしてご確認ください。

 


Web制作の現場に行けるインターンシップ制度の導入

フェリカでは、Web制作会社を中心にインターンシップ制度を導入しています。学校に通いながら、空き時間に実際の職場へ行き、現場で求められるスキルや会社の雰囲気を肌で感じる機会を設けています。インターン先で就職というケースも実績として非常に多いです。入校した際には是非チャレンジしてください。

どんな授業を行うの?

現場で求められるスキルを身に付ける事がこのクラスの一番の課題です。GitやSASSといった、現場で求められる新しいスキルなども積極的に授業で取り入れていきます。


クライアントワーク

実際のクライアントワークを通し、サイト制作の企画からローンチ後の検証までを自身で体験し、サイト制作に必要なノウハウを養います。また架空サイトでは無い、実際のサイト制作を通して学んだ事をポートフォリオに記載する事で、就職活動の上でもクライアントワークはアピールにもなります。

過去の受講生の作品

www.felica.info


既存サイトのトレース

既存のサイトをトレースする事で製作者がどういった意図でそのサイトを作ったかが、より明確になります。まずは既存のサイトをトレースする事で、色々なパターンのデザインを覚えて、オリジナルサイトの制作に活かしていきます。

作例
http://yachin29.webcrow.jp/bloom/


http://yoshi1004.webcrow.jp/content/kirin/



生徒の作例
http://yoshi1004.webcrow.jp/content/kaguya/

スマホサイト制作

最近では、Google検索を使用しているほとんどのユーザーは、モバイル端末から検索を行うようになっています。Googleだけでなく、多くのサイトでPCよりもスマートフォン利用者の方が多い現在、今まで以上にスマホサイトが重要になってきます。
授業ではGoogleが推奨する「レスポンシブデザイン」や「動的な配信」でのサイト制作を学ぶ事が出来ます。
また、モバイルファーストインデックス (MFI)といった、最近の考え方やアルゴリズムも学び、よりスマートフォンに適したUI・UX設計を行っていきます。




アプリ開発

クラウドベースのスマホアプリ開発プラットフォームを使用し、HTML5・CSS3とJavaScriptを用いて、iOSAndroidの両方に対応したハイブリッドアプリの開発を行います。実際にアプリストアに並べる為に必要なワークフローを体感してもらいます。

f:id:yachin29:20180103222000p:plain

既存サイトのトレース

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フルスクリーンレイアウト</title>
<link rel="stylesheet" href="css/style.css">
</head>

<body>
<h1>ロゴ</h1>
<div class="top top-L">
<a href="#">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">モードのハイライトをプレイバック!<br>VOGUE JAPAN撮りおろしのアーカイブビジュアル集。</p>
<p class="more">view more</p>
</div>
</a>
</div>
<div class="top top-R">
<a href="#">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">モードのハイライトをプレイバック!<br>VOGUE JAPAN撮りおろしのアーカイブビジュアル集。</p>
<p class="more">view more</p>
</div>
</a>
</div>
<div class="btm btm-L">
<a href="#">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">モードのハイライトをプレイバック!<br>VOGUE JAPAN撮りおろしのアーカイブビジュアル集。</p>
<p class="more">view more</p>
</div>
</a>
</div>
<div class="btm btm-C">
<a href="#">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">モードのハイライトをプレイバック!<br>VOGUE JAPAN撮りおろしのアーカイブビジュアル集。</p>
<p class="more">view more</p>
</div>
</a>
</div>
<div class="btm btm-R">
<a href="#">
<div class="cap">
<h2>タイトル</h2>
<p class="txt">モードのハイライトをプレイバック!<br>VOGUE JAPAN撮りおろしのアーカイブビジュアル集。</p>
<p class="more">view more</p>
</div>
</a>
</div>
</body>
</html>


スタイルシート

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

html,body,h1,h2,p {
  margin:0;
  padding:0;
  line-height:1.0;
}

/*PCレイアウト*/
h1 {
  width:160px;
  height:160px;
  background:url(../img/logo-0717.svg) no-repeat center center/cover;
  position:absolute;
  top:0;
  right:0;
  bottom:0;
  left:0;
  margin:auto;
  z-index:1000;
  text-indent:100%;
  white-space:nowrap;
  overflow:hidden;
}
.top {
  width:50%;
  height:50vh;
  float:left;
  position:relative;
  overflow:hidden;
}
.btm {
  width:33.33%;
  height:50vh;
  float:left;
  position:relative;
  overflow:hidden;
}
.top-L {
  background:url(../img/L1.png) no-repeat center center/cover;
}
.top-R {
  background:url(../img/L2.png) no-repeat center center/cover;
}
.btm-L {
  background:url(../img/S1.png) no-repeat center center/cover;
}
.btm-C {
  background:url(../img/S2.png) no-repeat center center/cover;
}
.btm-R {
  background:url(../img/S3.png) no-repeat center center/cover;
}

/*キャプションレイヤー*/
.cap {
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:50vh;
  padding-top:100px;
  background:rgba(255,0,51,0);
  text-align:center;
  color:#FFFFFF;
  transition:0.2s;
}
.top:hover .cap {
  padding-top:0;
  background:rgba(255,0,51,1);
}
.btm:hover .cap {
  padding-top:0;
  background:rgba(255,0,51,1);
}
.cap h2 {
  font-size:28px;
  padding: 80px 0 50px;
}
.cap .txt {
  font-size:18px;
  margin-bottom:60px;
  line-height:1.5;
}
.cap .more {
  width:30%;
  margin: 0 auto;
  padding: 10px 0;
  border-top: 1px solid #FC3;
  border-bottom: 1px solid #FC3;
}

Photoshopによるスライスとコーディング

既存のサイトを真似してコーディングしてみるのは、非常に良い練習なので、積極的にやりましょう。ただ、練習に向いているサイトとそうでないサイトがあるので、注意が必要です。

作業手順

1. 既存のサイトのキャプチャーを撮る
2. Photoshopで開き、各画像に沿ってガイドを引き、スライス
3. 見本を参考にコーディングしていく


http://yachin29.webcrow.jp/LOFT.zip


f:id:yachin29:20150212084927p:plain


index.html

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>スライスとコーディング</title>
<link rel="stylesheet" href="style.css">
</head>

<body>
<div class="container">
<header>
<h1>LOFT</h1>
<nav class="gnav">
<ul>
<li><a href="#"><img src="img/LOFT_nav01.gif" alt="sns一覧"></a></li>
<li><a href="#"><img src="img/LOFT_nav02.gif" alt="お店を探す"></a></li>
<li><a href="#"><img src="img/LOFT_nav03.gif" alt="メニューを見る"></a></li>
</ul>
</nav>
</header>

<div class="wrapper">
<div class="left">
<p><img src="img/LOFT_m1.jpg" alt=""></p>
<p><img src="img/LOFT_m2.jpg" alt=""></p>
<p><img src="img/LOFT_m3.jpg" alt=""></p>
</div>
<div class="right">
<ul>
<li><img src="img/LOFT_L01.jpg" alt=""></li>
<li><img src="img/LOFT_s01.jpg" alt=""></li>
<li><img src="img/LOFT_s02.jpg" alt=""></li>
<li><img src="img/LOFT_s03.jpg" alt=""></li>
<li><img src="img/LOFT_s04.jpg" alt=""></li>
<li><img src="img/LOFT_s05.jpg" alt=""></li>
<li><img src="img/LOFT_s06.jpg" alt=""></li>
<li><img src="img/LOFT_s07.jpg" alt=""></li>
<li><img src="img/LOFT_s08.jpg" alt=""></li>
<li><img src="img/LOFT_s09.jpg" alt=""></li>
<li><img src="img/LOFT_s10.jpg" alt=""></li>
<li><img src="img/LOFT_s11.jpg" alt=""></li>
<li><img src="img/LOFT_s12.jpg" alt=""></li>
<li><img src="img/LOFT_s13.jpg" alt=""></li>
<li><img src="img/LOFT_s14.jpg" alt=""></li>
</ul>
</div>
</div>
</div>
<footer><img src="img/LOFT_footer.jpg" alt=""></footer>
</body>
</html>

style.css

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

html,body,h1,p,ul,li {
  margin:0;
  padding:0;
}
ul {
  list-style:none;
}
a {
  text-decoration:none;
}
img {
  vertical-align:bottom;
}

body {
  background:#efa246;
  padding-top:9px;
}
.container {
  background:#eb8b36;
  width:960px;
  margin:0 auto 100px;
  overflow:hidden;
  position:relative;
}
header {
  width:120px;
  float:left;
}
h1 {
  width:120px;
  height:162px;
  background:url(img/LOFT_logo.gif) no-repeat;
  white-space:nowrap;
  text-indent:100%;
  overflow:hidden;
}
nav {
  width:120px;
  height:225px;
  position:absolute;
  bottom:0;
  left:0;
}
.wrapper {
  width:840px;
  float:right;
  overflow:hidden;
}
.left {
  width:240px;
  float:left;
  padding-top:9px;
}
.left p {
  margin:0 0 18px 12px;
}
.left p:last-child {
  margin-bottom:9px;
}
.right {
  width:600px;
  float:right;
}
.right ul {
  overflow:hidden;
}
.right li img {
  margin:9px 12px;
  float:left;
}
footer {
  width:100%;
  height:26px;
  background:#000000;
  text-align:right;
}


サイト制作のワークフローの一例
f:id:yachin29:20161020200618p:plain