【ソースコード】中級編:ストアサイト(インテリア)/グリッドレイアウト
style.css
style.css
@charset "UTF-8";
html {
font-size: 100%;
}
/*
フッターを画面下に配置するために、
「position: relative;」を設定
「min-height」で最小の高さを画面の高さにあわせる
*/
body {
color: #333;
font-size: 0.875rem;
min-height: 100vh;
position: relative;
}
a {
color: #333;
text-decoration: none;
transition: all 0.5s;
}
a:hover {
opacity: 0.7;
}
img {
max-width: 100%;
}
li {
list-style: none;
}
/*
コンテンツ幅を設定するための共通クラス
*/
.wrapper {
width: 100%;
max-width: 1360px;
margin: 0 auto;
padding: 0 40px;
}
.content {
padding-top: 120px;
padding-bottom: 160px;
}
.site-title a {
width: 180px;
line-height: 1px;
display: block;
}
.page-title {
font-size: 0.875rem;
font-weight: normal;
margin-bottom: 30px;
}
/*-------------------------------------------
ヘッダー
-------------------------------------------*/
/*
「position: fixed;」でヘッダーを固定し、「z-index: 10;」で前面に表示
※他のコンテンツでpositionをrelative、absolute、fixedのいずれかに
設定している場合は、z-indexの数値が大きい方が前面に表示される
*/
#header {
width: 100%;
height: 80px;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
position: fixed;
left: 0;
right: 0;
z-index: 10
}
/*
ハンバーガーメニュー
メニューが閉じている時は、「left: -300px;」で画面左に隠し、
「opacity: 0;」で非表示にしている
*/
#navi {
position: fixed;
top: 0;
left: -300px;
width: 300px;
color: #fff;
padding: 36px 50px;
transition: all 0.5s;
z-index: 20;
opacity: 0;
}
#navi a {
color: #fff;
}
#navi li {
margin-bottom: 14px;
}
/*
ハンバーガーメニュー
メニューが開いている時は、「left: 0;」「opacity: 1;」で
画面左に表示する
*/
.open #navi {
left: 0;
opacity: 1;
}
.toggle_btn {
width: 30px;
height: 30px;
position: relative;
transition: all 0.5s;
cursor: pointer;
z-index: 20;
}
/*
ハンバーガーメニューの線の設定(メニューが閉じている時)
*/
.toggle_btn span {
display: block;
position: absolute;
width: 30px;
height: 2px;
background-color: #333;
border-radius: 4px;
transition: all 0.5s;
}
/*
1本目の線の位置を設定
*/
.toggle_btn span:nth-child(1) {
top: 10px;
}
/*
2本目の線の位置を設定
*/
.toggle_btn span:nth-child(2) {
bottom: 10px;
}
/*
ハンバーガーメニューの線の設定(メニューが開いている時)
線の色を白に変更
*/
.open .toggle_btn span {
background-color: #fff;
}
/*
1本目の線を-45度回転
*/
.open .toggle_btn span:nth-child(1) {
-webkit-transform: translateY(4px) rotate(-45deg);
transform: translateY(4px) rotate(-45deg);
}
/*
2本目の線を45度回転
*/
.open .toggle_btn span:nth-child(2) {
-webkit-transform: translateY(-4px) rotate(45deg);
transform: translateY(-4px) rotate(45deg);
}
#mask {
display: none;
transition: all 0.5s;
}
/*
メニューを開いている時は、全体を黒背景にする
*/
.open #mask {
display: block;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: .8;
z-index: 10;
cursor: pointer;
}
/*-------------------------------------------
TOP、PRODUCTS
-------------------------------------------*/
#top {
padding-top: 80px;
padding-bottom: 160px;
}
.product-list {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 35px;
}
/*
vertical-align: top;
画像の下にできる隙間を消す
*/
.product-list img {
margin-bottom: 10px;
vertical-align: top;
}
.product-list p {
font-size: 0.75rem;
}
.link-text {
display: block;
margin-top: 40px;
text-align: center;
}
.pagination {
display: flex;
justify-content: center;
margin-top: 40px;
}
.pagination li {
padding: 0 20px;
}
/*-------------------------------------------
ITEM
-------------------------------------------*/
#item {
max-width: 800px;
display: flex;
justify-content: space-between;
margin-bottom: 60px;
}
#item .item-text {
width: 42%;
}
/*
text-align: justify;
テキストの両端を揃える
*/
#item .item-text p {
margin-bottom: 30px;
text-align: justify;
}
#item .item-text dl {
display: flex;
flex-wrap: wrap;
}
#item .item-text dt {
width: 30%;
}
#item .item-text dd {
width: 70%;
}
#item .item-img {
width: 50%;
}
/*-------------------------------------------
ABOUT
-------------------------------------------*/
#about {
max-width: 600px;
}
#about p {
line-height: 1.9;
margin-bottom: 30px;
}
/*-------------------------------------------
COMPANY
-------------------------------------------*/
#company {
max-width: 600px;
}
#company dl {
display: flex;
flex-wrap: wrap;
margin-bottom: 20px;
}
#company dt {
width: 30%;
border-bottom: solid 1px #dcdbdb;
padding: 20px 10px;
}
#company dt:last-of-type {
border-bottom: none;
}
#company dd {
width: 70%;
border-bottom: solid 1px #dcdbdb;
padding: 20px 10px;
}
#company dd:last-of-type {
border-bottom: none;
}
#company .map {
/* グーグルマップをグレースケールにする */
filter: grayscale(1);
}
/* グーグルマップのサイズを設定 */
#company .map iframe {
width: 100%;
height: 300px;
border: 0;
}
/*-------------------------------------------
フッター
-------------------------------------------*/
/*
「position: absolute;」を設定して、フッター位置を画面下に設定
「left: 0;」「right: 0;」で中央に配置
*/
#footer {
display: flex;
justify-content: space-between;
position: absolute;
bottom: 20px;
left: 0;
right: 0;
}
#footer .menu {
display: flex;
}
#footer .menu li {
font-size: 0.75rem;
margin-right: 30px;
}
#footer .copyright {
font-size: 0.625rem;
}
/*-------------------------------------------
SP
-------------------------------------------*/
@media screen and (max-width: 900px) {
/*-------------------------------------------
TOP、PRODUCTS
-------------------------------------------*/
.product-list {
grid-template-columns: repeat(2, 1fr);
gap: 40px 20px;
}
/*-------------------------------------------
ITEM
-------------------------------------------*/
#item {
flex-direction: column;
}
#item .item-text {
width: 100%;
}
#item .item-img {
width: 100%;
margin-bottom: 30px;
}
/*-------------------------------------------
COMPANY
-------------------------------------------*/
#company dl {
flex-direction: column;
}
#company dt {
width: 100%;
border-bottom: none;
padding-bottom: 5px;
}
#company dd {
width: 100%;
padding-top: 5px;
}
/*-------------------------------------------
フッター
-------------------------------------------*/
#footer {
flex-direction: column;
}
#footer .menu {
margin-bottom: 5px;
}
}
CodejumpからWeb制作の実践本が発売決定!
Codejumpが書籍化!
1月14日(火)全国の書店&Amazonで発売!
1月14日発売決定!
詳細を見る