WEBサイト制作の勉強

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

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

タイムラインをサイトに埋め込む

年表や沿革などで使うタイムラインを作ってみましょう。cssのみで作れるシンプルな物のありますが、今回は「CodyHouse Framework」というフレームワークを使ったアニメーションタイムラインを作成してみます。


Vertical Timeline

codyhouse.co



さらにCodyHouse Framework 本体のデータも必要なのでgithubからダウンロードしておきましょう。

github.com



<div class="cd-timeline js-cd-timeline">
<div class="container max-width-lg cd-timeline__container">


<div class="cd-timeline__block">
<div class="cd-timeline__img cd-timeline__img--picture">
<img src="img/cd-icon-picture.svg" alt="Picture">
</div> <!-- cd-timeline__img -->

<div class="cd-timeline__content text-component">
<h2>Title of section 1</h2>
<p class="color-contrast-medium"></p>
<div class="flex justify-between items-center">
<span class="cd-timeline__date">2019/10</span>
</div>
</div> <!-- cd-timeline__content -->
</div> <!-- cd-timeline__block -->




<div class="cd-timeline__block">
<div class="cd-timeline__img cd-timeline__img--picture">
<img src="img/cd-icon-picture.svg" alt="Picture">
</div> <!-- cd-timeline__img -->

<div class="cd-timeline__content text-component">
<h2>Title of section 2</h2>
<p class="color-contrast-medium"></p>
<div class="flex justify-between items-center">
<span class="cd-timeline__date">2020/03</span>
</div>
</div> <!-- cd-timeline__content -->
</div> <!-- cd-timeline__block -->


</div><!-- container -->
</div><!-- cd-timeline -->

トップページ

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portfolio</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Josefin+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
</head>
<body>
<header>
<div class="header-inner">
<h1>
<span>P</span>
<span>O</span>
<span>R</span>
<span>T</span>
<span>F</span>
<span>O</span>
<span>L</span>
<span>I</span>
<span>O</span>
</h1>
</div>
<p class="lead">Lorem ipsum dolor sit amet consectetur adipisicing elit. Non iusto aspernatur excepturi tenetur architecto corporis obcaecati? Libero consectetur aspernatur delectus.</p>
</header>

<div class="nav-wrapper">
<h2>FELICA</h2>
<nav id="g-nav">
<ul>
<li><a href="#">Top</a></li>
<li><a href="#concept">Concept</a></li>
<li><a href="#works">Works</a></li>
<li><a href="#about">About</a></li>
</ul>
</nav>
</div>


<main>
<div id="concept" class="content">
<h2>Concept</h2>
</div>

<div id="works" class="content">
<h2>Works</h2>
<div class="main-works-wrapper">
<div class="main-works-box">
<a href="#"><img src="img/works01.jpg" alt=""></a>
</div><!-- /.main-works-box -->
<div class="main-works-box">
<a href=""><img src="img/works02.jpg" alt=""></a>
</div><!-- /.main-works-box -->
</div><!-- /.main-works-wrapper -->
</div><!-- /#works -->

<div id="about" class="content">
<h2>About</h2>
</div>
</main>

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js'></script>
<script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
</body>
</html>


作品ページ

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>作品ページ01</title>
<link rel="stylesheet" href="../css/style.css">
</head>
<body>
<div class="work-wrapper">
<div class="work-txt">
<h1>作品名</h1>
<p>作品の簡単な説明文</p>

<div class="work-inner">
<div class="work-list">
<h2 class="heading11" data-number="01">作業時間</h2>
<p>画像制作:1時間</p>
</div>
<div class="work-list">
<h2 class="heading11" data-number="02">使用言語</h2>
<p>HTML</p>
<p>CSS</p>
<p>JavaScript</p>
</div>
</div>
<div class="work-list">
<h2 class="heading11" data-number="03">ポイント</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Et molestiae, officiis eaque quae quidem impedit officia maiores in sit vitae.</p>
</div>

<button class="work-btn"><a href="#" target="_blank">作品へ</a></button>
</div><!-- /.work-txt -->

<div class="work-photo">
<img src="../img/works01.jpg" alt="">
</div>
</div><!-- /.work-wrapper -->
</body>
</html>


style.css

@charset "utf-8";

html{box-sizing:border-box;-webkit-text-size-adjust:100%}*,:after,:before{background-repeat:no-repeat;box-sizing:inherit}:after,:before{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0;box-sizing:border-box;}audio:not([controls]){display:none;height:0}hr{overflow:visible}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}summary{display:list-item}small{font-size:80%}[hidden],template{display:none}abbr[title]{border-bottom:1px dotted;text-decoration:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[role=button],[type=button],[type=reset],[type=submit],button{cursor:pointer}[disabled]{cursor:default}[type=number]{width:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:0;padding:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button:-moz-focusring{outline:1px dotted ButtonText}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button,select{text-transform:none}button,input,select,textarea{background-color:transparent;border-style:none;color:inherit}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;max-width:100%;white-space:normal}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}img{border-style:none;vertical-align: bottom}progress{vertical-align:baseline}svg:not(:root){overflow:hidden}audio,canvas,progress,video{display:inline-block}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled]{cursor:default}::-moz-selection{background-color:#b3d4fc;color:#000;text-shadow:none}::selection{background-color:#b3d4fc;color:#000;text-shadow:none}ul,ol{list-style:none;}a{text-decoration:none;}.wrapper{overflow:hidden;}body{overflow-y:scroll;}img{max-width: 100%;}

.header-inner{
width: 100%;
height: 70vh;
background-color: #f5e0d1;
display: flex;
justify-content: center;
align-items: center;
/* animation: bg-color 10s infinite linear; */
}
@keyframes bg-color{
0%{background-color: #f5e0d1;}
25%{background-color: #134492;}
50%{background-color: #d40b3d;}
75%{background-color: #d36516;}
100%{background-color: #f5e0d1;}
}

h1{
font-family: 'Josefin Sans', sans-serif;
font-size: 120px;
display: flex;
overflow: hidden;
}
h1>span{
display: block;
transform: translateY(120%);
animation: txt-anime 0.5s 0.5s forwards;
}
@keyframes txt-anime{
0%{transform: translateY(120%);}
100%{transform: translateY(0);}
}
h1>span:nth-of-type(2){
animation: txt-anime 0.5s 0.6s forwards;
}
h1>span:nth-of-type(3){
animation: txt-anime 0.5s 0.7s forwards;
}
h1>span:nth-of-type(4){
animation: txt-anime 0.5s 0.8s forwards;
}
h1>span:nth-of-type(5){
animation: txt-anime 0.5s 0.9s forwards;
}
h1>span:nth-of-type(6){
animation: txt-anime 0.5s 1.0s forwards;
}
h1>span:nth-of-type(7){
animation: txt-anime 0.5s 1.1s forwards;
}
h1>span:nth-of-type(8){
animation: txt-anime 0.5s 1.2s forwards;
}
h1>span:nth-of-type(9){
animation: txt-anime 0.5s 1.3s forwards;
}
.lead{
width: 50%;
font-size: 18px;
line-height: 1.8;
margin: 40px auto;
}

/* ナビゲーション部分 */
.nav-wrapper{
width: 100%;
height: 80px;
background-color: #FFF;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 40px;
position: fixed;
top: 0;
left: 0;
}
#g-nav{
width: 50%;
}
#g-nav>ul{
display: flex;
justify-content: center;
}
#g-nav li{
margin: 0 30px;
}
#g-nav a{
color:#222;
padding: 20px 30px;
}
#g-nav a:hover{
text-decoration: underline 3px #bd0f3a;
text-underline-offset: 3px;
}

/* コンテント部分 */
.content{
height: 100vh;
padding-top: 100px;
}
.content>h2{
text-align: center;
font-size: 40px;
}

/* works部分 */
.main-works-wrapper{
max-width: 1080px;
margin: 50px auto 100px;
display: flex;
flex-wrap: wrap;
background-color: #b3d4fc;
gap: 20px;
}
.main-works-box{
width: calc((100% - 40px) / 3);
}



/* 作品ページ部分 */
.work-wrapper{
display: flex;
max-width: 1200px;
margin: 30px auto 0;
padding: 0 10px;
}
.work-txt>h1{
font-size: 40px;
text-align: center;
align-items: center;
margin: 30px 0 10px;
}
.work-txt>h1::before,
.work-txt>h1::after {
	content: '';
	width: 70px;
	height: 4px;
	background-color: #bd0f3a;
}
.work-txt>h1::before {
	margin-right: 20px;
}
.work-txt>h1::after {
	margin-left: 20px;
}
.work-inner{
display: flex;
}
.work-inner>.work-list{
margin-right: 40px;
}
.work-list{
margin: 20px 0;
}
.work-list>h2{
font-size: 28px;
}
.heading11 {
	position: relative;
	font-size: 26px;
}
.heading11::before {
	content: attr(data-number);
	display: block;
	color: #bd0f3a;
	font-size: 28px;
  margin-bottom: 10px;
}

.heading11::after {
	content: '';
	position: absolute;
	top: 32px;
	left: 0;
	width: 100px;
	height: 2px;
	background-color: #bd0f3a;
}
.work-btn{
display: block;
width: 240px;
margin: 50px auto;
}
.work-btn a {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 auto;
  padding: 0.6em 2em;
  width: 100%;
  color: #175d7a;
  font-size: 18px;
  font-weight: 700;
  border: 2px solid #175d7a;
}
.work-btn a::after {
  content: '';
  width: 5px;
  height: 5px;
  border-top: 3px solid #175d7a;
  border-right: 3px solid #175d7a;
  transform: rotate(45deg);
}
.work-btn a:hover {
  color: #333333;
  text-decoration: none;
  background-color: #a0c4d3;
}
.work-btn a:hover::after {
  border-top: 3px solid #333333;
  border-right: 3px solid #333333;
}

モックアップを使ってみる

Facebookが、誰でも無料で利用可能なAppleSamsungGoogle・HTC・Microsoftの各メーカーのスマートフォンタブレット・スマートウォッチ・スマートTVのモックアップとして使えるビットマップ画像集を公開しています。ファイル形式はPNGとSketchとなっています。これ一つでほとんどのデバイスを網羅出来ています。

f:id:yachin29:20160204112109p:plain


もちろん必要なデバイスだけを選らんでダウンロードすることも可能です。
f:id:yachin29:20160204112242p:plain



design.facebook.com



f:id:yachin29:20210419005158j:plain



www.anthonyboyd.graphics



photoshopvip.net

jQueryとは

jQuery(ジェイクエリー)とは、ウェブブラウザー用のJavaScriptコードをより容易に記述できるようにするために設計された軽量なJavaScriptライブラリである。ジョン・レシグが、2006年1月にリリースした。様々な場面で活用されており、JavaScriptライブラリのスタンダードと呼ぶ者もいる

f:id:yachin29:20160425030539j:plain
https://jquery.com/



jQueryの特徴

jQueryの使い方

jQueryを使用する際には、jQuery本体をダウンロード、もしくはCDN(Content Delivery Network)を使い、HTMLファイルにリンクさせる必要があります。

jQueryのバージョン

jQuery本体はバージョンが1系、2系、3系に分類されていて、新しいバージョンは古いブラウザーに対応させる記述を無くしている分、データが軽くなっています。



本体をダウンロードして使う場合

上記のjQuery公式サイトからダウンロードしましょう。jQueryはバージョンにより動かないメソッドがあるのでバージョンコントロールが必要です。

古いjQueryのバージョンはこちらからダウンロード出来ます
code.jquery.com


また、公式サイトからダウンロードする際に「compressed」と「uncompressed」の2種類のファイルが用意されています。

  • compressed~……改行などを除去してファイルサイズを抑えたファイル
  • uncompressed~……圧縮前の元ファイル。構造が見やすいがファイルサイズは大きい

通常、jQuery本体の記述を触る事はほとんど無いので、ファイルにサイズの軽い「compressed」版を使用しましょう。

本体をCDNで使う場合

CDN(Content Delivery Network)とは、ネットワーク経由でコンテンツを提供するサービスで、jQuery本体をダウンロードする事無くネットワーク上にあるjQuery本体を使用する方法です。
CDNを使用する場合のメリットは、他のサイトでも同じCDNjQuery本体を使用している場合、ユーザーがそのサイトを先に閲覧してればブラウザにキャッシュされるのでjQueryを読み込む必要が無い。つまり、使うサイトが多いほど事前にキャッシュされてる可能性が上がります。
CDNの場合、一見メリットだらけのように見えますが、CDN元でシステムトラブルがあったり、ネットワークが不安定な所では動かないので注意が必要です。またCDNの場合は、Minified(改行が除かれた圧縮版)を使用しましょう。


CDNjQueryの公式サイト以外にもGoogleMicrosoftにも用意されています。


developers.google.com


www.asp.net



記述方法

HTMLファイルは上から順番に読み込まれるという原則から、jQueryを使用する際は必ずjQuery本体を最初に記述しましょう。



CDNの場合
<body>
 ・・・
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</body>

coco-factory.jp

javascriptとは

f:id:yachin29:20200713193026p:plain

JavaScriptとは、米Netscape Communicationsによって開発されたスクリプト言語です。JavaScriptは主にWebブラウザ上で動作します。クリックすると画像が変わったり、要素が消えたり、現れたりというHTMLやCSSでは出来ない、いわゆるサイトの動的な部分を担当しているスクリプト言語です。
Webサイト・Webアプリ・バックエンド・デスクトップアプリ・モバイルアプリなど、ブラウザからサーバー、デスクトップからスマートフォンまで使用場面は多岐にわたっています。

それどころか、今やJavaScriptは宇宙船のUIにも使用されています。
note.com


JavaScriptと似た名前のプログラミング言語に「Java」というものがありますが、まったく関係がありません。なので混同しないようにしましょう。

スクリプト言語

JavaScriptスクリプト言語です。ではスクリプト言語とはどういうものか?
簡単に言うとスクリプト言語とは簡易版のプログラミング言語で、特に実行環境を整える必要も無く、ソースコードをその場で順を追って解釈する「インタープリタ方式」の言語です。

プログラム初学者にとっては特に難しい設定をしなくて済み、手軽に使えるのがこのJavaScriptです。


なぜJavaScript?

主なJavaScriptフレームワークやライブラリー

AngularJS

f:id:yachin29:20200713193426p:plain

React

f:id:yachin29:20200713193551p:plain

Vue.js

f:id:yachin29:20200713193624p:plain

jQuery


また、サーバーサイドでJavascriptを動かす事が出来る「node.js」やSNSとの通信で使用する「JSON」などjavascriptはとにかく汎用性が高く、便利な言語です。

JavaScriptで出来る事

演算処理

プログラミングの基本である演算処理。単純な四則演算のほか、三角関数や円周率等を使用したり、年齢を算出したり、日数を割り出したりなど、さまざまな用途で使用します

ドキュメント操作

Webページに文字を表示したり、非表示にする。文字や背景の色を指定する。 Webページを切り替える、など、html内のドキュメントを操作する事が出来ます。

マウス等のイベント処理

クリックやマウスオーバー、Webページそのものロード時など、その他様々なタイミングで処理を行わせることができます。
サムネイル画像をクリックすると大きい画像が表示されるようなものから、メニュー項目をクリックすると下の階層のメニューが開くようなナビゲーションまで、このようなイベント処理を行っています。

DOMを使用した処理

DOM(Document Object Model)を使用することで、HTML文をツリー構造のように扱うことができます。
これを上記のイベント処理等と組み合わせて使用することで、サイト内に新しいコンテンツを挿入したり、書き換えたり、削除することが出来ます。


上記以外にも最近ではVR(仮想現実)やブラウザーゲームなどにもjsは使われていて、汎用性はますます上がっています。


ja.monaca.io

スマホ時にナビゲーションメニューが出ている時はbody要素を固定にする

スマホ時にハンバーガーメニューなどでナビゲーションを表示させた際に、後ろのコンテンツが動かないようにするにはbody要素に「overflow: hidden;」をかけ、固定する必要があります。
ただ、そのままでは場合によってはPC時の時までbody要素が固定になってしまうため注意が必要です。


作例
felica29.starfree.jp



index.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>navgationの作成その1</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/hamburgers.css">
</head>
<body>
<header>
<h1>FELICA</h1>
<p>未経験からプロになる!</p>
<nav id="g-nav">
<ul>
<li><a href="#">BLOG<span>ブログ</span></a></li>
<li><a href="#">SERVICE<span>サービス</span></a></li>
<li><a href="#">RECRUIT<span>採用情報</span></a></li>
<li><a href="#">COMPANY<span>会社案内</span></a></li>
<li><a href="#">CONTACT<span>お問い合わせ</span></a></li>
<li><input type="text"><a href="#">検索</a></li>
</ul>
</nav>
<p class="hamburger hamburger--stand" id="btn">
  <span class="hamburger-box">
    <span class="hamburger-inner"></span>
  </span>
</p>
</header>
<main>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quaerat quia a amet incidunt ipsam fugiat nostrum, magni iste dignissimos harum minima eaque voluptas debitis magnam! Beatae assumenda modi iure magni corrupti quo consequuntur accusamus aspernatur vitae delectus cumque quibusdam et ullam sunt, recusandae quisquam earum voluptate odio minus, sed possimus? Inventore aliquid rerum, magnam esse, animi consectetur laudantium cumque doloremque dolorum minus harum molestias quidem quam sunt dicta temporibus magni similique placeat omnis facere veritatis! Earum dolorum deserunt a. Sit aut quod ab distinctio itaque, voluptatem veritatis debitis tempore aliquam quo optio! Laudantium tenetur natus corporis, provident assumenda quaerat ea dolor dicta animi! Excepturi, quae. Sunt minus itaque iste quibusdam earum amet obcaecati voluptatum, nihil, rerum incidunt deserunt! Id, non.</p>
</main>
<footer></footer>

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js'></script>
<script>
$(function(){

//リサイズイベント
$(window).on('load resize',function(){
$('#btn').removeClass('is-active');
$('body').removeClass('fixed');

if(window.matchMedia('(max-width:900px)').matches){
//スマホの時
$('#g-nav').hide();
}else{
//PCの時
$('#g-nav').show();
}
});

//クリックイベント
$('#btn').on('click',function(){
$(this).toggleClass('is-active');
$('#g-nav').fadeToggle(200);
$('body').toggleClass('fixed');
});
});
</script>
</body>
</html>



style.css

@charset "utf-8";
html{box-sizing:border-box;-webkit-text-size-adjust:100%}*,:after,:before{background-repeat:no-repeat;box-sizing:inherit}:after,:before{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0;box-sizing:border-box;}audio:not([controls]){display:none;height:0}hr{overflow:visible}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}summary{display:list-item}small{font-size:80%}[hidden],template{display:none}abbr[title]{border-bottom:1px dotted;text-decoration:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[role=button],[type=button],[type=reset],[type=submit],button{cursor:pointer}[disabled]{cursor:default}[type=number]{width:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:0;padding:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button:-moz-focusring{outline:1px dotted ButtonText}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button,select{text-transform:none}button,input,select,textarea{background-color:transparent;border-style:none;color:inherit}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;max-width:100%;white-space:normal}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}img{border-style:none;vertical-align: bottom}progress{vertical-align:baseline}svg:not(:root){overflow:hidden}audio,canvas,progress,video{display:inline-block}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled]{cursor:default}::-moz-selection{background-color:#b3d4fc;color:#000;text-shadow:none}::selection{background-color:#b3d4fc;color:#000;text-shadow:none}ul,ol{list-style:none;}a{text-decoration:none;}.wrapper{overflow:hidden;}body{overflow-y:scroll;}img{max-width: 100%;}


header{
width: 100%;
height: 80px;
background-color: #333;
display: flex;
align-items: center;
color: #FFF;
padding: 0 40px;
}
h1{
margin-right: 20px;
}
header>p{
margin-right: auto;
}
#g-nav{
width: 60%;

}
#g-nav>ul{
display: flex;
}
#g-nav li{
width: 16.66%;
}
#g-nav a{
display: block;
height: 80px;
color: #FFF;
text-align: center;
padding-top: 26px;
font-weight: bold;
}
#g-nav span{
display: block;
font-size: 13px;
font-weight: normal;
}
#g-nav span::after{
display: block;
content: "";
width: 70%;
height: 4px;
margin: 0 auto;
background-color: #FFF;
transform: scale(0);
transition: 0.2s;
}
#g-nav a:hover>span::after{
transform: scale(1);
}
#g-nav li:last-of-type>a{
background: url(../img/icon.svg)no-repeat center center/30px;
white-space: nowrap;
text-indent: 100%;
overflow: hidden;
}
#g-nav a:hover>span{
/* text-decoration:4px underline;
text-underline-offset: 3px; */
}
input,#btn{
display: none;
}

main>p{
width: 50%;
margin: 200px auto;
line-height: 3;
font-size: 20px;
}
footer{
height: 100px;
background-color: #344d6d;
}


@media (max-width:900px){
header{
height: 60px;
position: fixed;
top: 0;
left: 0;
padding: 0 10px;
}
#g-nav{
width: 100%;
height: calc(100vh - 60px);
background-color: rgba(52, 77, 109, 0.8);
position: fixed;
top: 60px;
left: 0;
padding:20px 40px;
}
#g-nav>ul{
display: block;
}
#g-nav li{
width: 100%;
}
#g-nav a{
height: 60px;
border-bottom: 1px solid #FFF;
}
#g-nav span{
display: inline;
margin-left: 10px;
}
#g-nav li:last-of-type{
display: flex;
padding-top: 20px;
}
#g-nav li:last-of-type>a{
width: 40px;
height: 40px;
background-color: #333;
border-bottom: 0;
}
#g-nav li:last-of-type>input{
background-color: #FFF;
width: calc(100% - 40px);
height: 40px;
display: block;
color: #222;
padding: 2px 4px;
}
#btn{
display: block;
}
body.fixed{
overflow: hidden;
}


}

3月11日作業データ カラムレイアウト

f:id:yachin29:20220311151558j:plain



index.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Column-layout</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/lightbox.css">
</head>
<body>
<h1>Column-layout</h1>
<div class="container">
<div class="column">
<div class="column-box">
<a href="img/01.jpg" data-lightbox="gallery"><img src="img/01.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/02.jpg" data-lightbox="gallery"><img src="img/02.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/03.jpg" data-lightbox="gallery"><img src="img/03.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/04.jpg" data-lightbox="gallery"><img src="img/04.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/05.jpg" data-lightbox="gallery"><img src="img/05.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/06.jpg" data-lightbox="gallery"><img src="img/06.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/07.jpg" data-lightbox="gallery"><img src="img/07.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/08.jpg" data-lightbox="gallery"><img src="img/08.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/09.jpg" data-lightbox="gallery"><img src="img/09.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/10.jpg" data-lightbox="gallery"><img src="img/10.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/11.jpg" data-lightbox="gallery"><img src="img/11.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/12.jpg" data-lightbox="gallery"><img src="img/12.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/13.jpg" data-lightbox="gallery"><img src="img/13.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/14.jpg" data-lightbox="gallery"><img src="img/14.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/15.jpg" data-lightbox="gallery"><img src="img/15.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/16.jpg" data-lightbox="gallery"><img src="img/16.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/17.jpg" data-lightbox="gallery"><img src="img/17.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/18.jpg" data-lightbox="gallery"><img src="img/18.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/19.jpg" data-lightbox="gallery"><img src="img/19.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil repellendus non facilis, voluptatem recusandae ratione.</p>
</div><!-- /.column-box -->
<div class="column-box">
<a href="img/20.jpg" data-lightbox="gallery"><img src="img/20.jpg" alt=""></a>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div><!-- /.column-box -->
</div><!-- /.column -->
</div><!-- /.Column-layout -->

<button id="more"></button>

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js'></script>
<script src="js/lightbox.js"></script>
<script>
$(function(){
$('#more').on('click',function(){
$(this).toggleClass('close');
$('.column').toggleClass('click');
});
});
</script>
</body>
</html>


style.css

@charset "utf-8";

body{
background-color: #d1d1cf;
}
h1{
text-align: center;
margin: 40px 0 30px;
}
.column{
width: 90%;
columns: 4;
margin: 0 auto 30px;
}
.column-box{
background-color: #FFF;
padding: 16px;
border-radius: 6px;
margin-bottom: 20px;
break-inside: avoid;/* 文字の部分だけ改行されないようにする */
}
.column-box:hover{
background-color: #e1ebf6;
}
.column-box img{
border-radius: 6px;
margin-bottom: 10px;
}
.column-box p{
line-height: 1.5;
}

#more{
display: none;
}

@media (max-width:959px){
.column{
columns: 3;
}
}
@media (max-width:767px){
.column{
columns: 2;
}
}
@media (max-width:420px){
.column{
columns: 1;
}
/* 1列レイアウトになったら6個目以降のcolumn-boxを非表示にする */
.column-box:nth-of-type(n+6){
display: none;
}
.column.click>.column-box:nth-of-type(n+6){
/* #btnをon.clcikしたら、.columnに「click」をaddClass(toggleClass)する */
display: block;/* 非表示にしていたcolumn-boxを表示する */
}

#more{
display: block;
width: 70%;
padding: 14px 0;
margin: 0 auto 50px;
background-color: #4c64ad;
color: #FFF;
border-radius: 8px;
}
#more::before{
content: "もっと見る";
}
#more.close::before{
content: "閉じる";
}
#more::after{
display: inline-block;
content: "▶";
margin-left: 16px;
}
#more.close::after{
content: "▲";
}
}