サイト制作の始めからMVまでの基本形
まずはデザイナーからデザインカンプをもらう
現在のWeb制作では**「ほとんどの画像(ロゴ、写真、アイコンなど)を2倍サイズで書き出す」のが一般的**です。
1440pxのデザインで作っている場合、それをそのまま1x(1440px)で書き出すと、iPhoneやMacなどの高精細なディスプレイ
(Retinaディスプレイ)では画像がボヤけて見えてしまうためです。
ただし、すべてを2倍にする際には**「画像容量(重さ)」**との戦いになります。以下の基準で使い分けるのがベストです。
1.
2倍(またはそれ以上)で書き出すべきもの
ロゴ・アイコン: 少しでもボケると素人っぽく見えてしまいます。これはSVG形式(拡大してもボケない)
で書き出すのが理想です。
MVや重要な写真: サイトの顔となる部分は、2倍(2880px)で書き出して画質を優先します。
テキストが含まれる画像: バナーなど、文字が入っている画像はボケが非常に目立ちます。
2.
1倍(等倍)でも許容されるもの
背景に敷くうっすらとしたテクスチャ: ボケていてもデザイン上問題ないもの。
非常に大きな集合写真: 2倍にするとファイルサイズが数MBを超えてしまう場合。
実務でよく使う「賢い書き出し・実装」テクニック
2倍サイズで書き出すとサイトが重くなってしまうため、プロの現場では以下の工夫をセットで行います。
次世代フォーマット(WebP)を利用する
同じ画質でも、JPEGより圧倒的に軽い WebP(ウェッピー) 形式に変換して書き出します。
画像圧縮ツールを通す(これが一番ベター)
2倍で書き出した後、TinyPNG などのツールで画質を落とさずに容量だけを削ります。
htmlのmv部分まで
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>test2</title>
<meta name="description" content="これはTestページです" />
<meta name="keywords" content="test, サンプル, ウェブサイト" />
<!-- OGP -->
<meta property="og:type" content="website" />
<meta property="og:title" content="test3" />
<meta property="og:description" content="これはTestページです" />
<meta property="og:url" content="https://example.com/" />
<meta property="og:site_name" content="test3" />
<meta property="og:image" content="https://example.com/img/ogp.jpg" />
<!-- X Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="test3" />
<meta name="twitter:description" content="これはTestページです" />
<meta name="twitter:image" content="https://example.com/img/ogp.jpg" />
<!-- Favicon -->
<link rel="icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<!-- Google Fontsの読み込み -->
<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=Noto+Serif+JP:wght@200..900&display=swap"
rel="stylesheet"
/>
<!-- CSSファイルの読み込み -->
<link rel="stylesheet" href="css/normalize.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/header.css" />
<link rel="stylesheet" type="text/css" href="css/mv_mv.css" />
<link rel="stylesheet" type="text/css" href="css/product.css" />
</head>
<body>
<div id="overlay"></div>
<header class="site-header">
<div class="header-inner">
<div class="logo-area">
<img src="images/logo.svg" alt="ロゴ" class="logo-img" />
</div>
<nav class="main-nav">
<ul>
<li><a href="index.html">HOME</a></li>
<li><a href="mv.html">MV</a></li>
<li><a href="#">Test2</a></li>
<li><a href="#" class="active">Test3</a></li>
</ul>
<div class="main_btn">
<a href="#" class="main_btn_link">お問い合わせ</a>
</div>
</nav>
<div class="openbtn">
<span></span>
<span></span>
<span></span>
</div>
<nav id="g-nav">
<div id="g-nav-list">
<!--ナビの数が増えた場合縦スクロールするためのdiv※不要なら削除-->
<ul>
<li><a href="index.html">HOME</a></li>
<li><a href="mv.html">MV</a></li>
<li><a href="#">Test2</a></li>
<li><a href="#">Test3</a></li>
<div class="g_nav_btn">
<a href="#" class="g_nav_btn_link">お問い合わせ</a>
</div>
</ul>
</div>
</nav>
</div>
</header>
<main id="main">
<div class="main_visual">
<picture>
<source media="(max-width: 1023px)" srcset="images/MV_sp.png" />
<source media="(max-width: 1440px)" srcset="images/MV_pc.png" />
<img
src="images/MV_pc.png"
alt="メインビジュアル"
loading="lazy"
class="mv_image"
/>
</picture>
<!--基本系のpicture-->
<!--<picture>
<source media="(max-width: 450px)" srcset="images/MV_sp.png" />
<source media="(max-width: 768px)" srcset="images/MV_tab.png" />
<source media="(max-width: 1023px)" srcset="images/MV_pc.png" />
<img
src="images/MV_pc.png"
alt="メインビジュアル"
loading="lazy"
class="mv_image"
/>
</picture>-->
<div class="detail_btn">
<a href="#" class="detail_btn_link">詳細を見る</a>
</div>
</div>
</main>
<footer>
<div class="footer_inner"></div>
</footer>
<!-- JavaScriptファイルの読み込み -->
<script src="js/navi.js"></script>
<script src="js/scroll-bar.js"></script>
</body>
</html>CSSはコチラ
@charset "UTF-8";
/* MVコンテナ(基準) */
.main_visual {
position: relative;
width: 100%;
overflow: hidden;
display: flex;
justify-content: flex-end; /* 下寄せ */
flex-direction: column;
align-items: center; /* 中央寄せ */
}
/* 画像の設定 */
.mv_image {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
/*ボタン設定*/
.detail_btn {
position: absolute;
max-width: 230px;
width: auto;
bottom: 3%; /* 下からの余白を調整 */
z-index: 2;
}
.detail_btn_link {
display: flex;
justify-content: center;
align-items: center;
padding-block: min(2.27vw, 10px);
padding-inline: min(11.363636363636363vw, 50px);
font-size: min(5.454545454545454vw, 24px);
font-style: normal;
font-weight: bold;
letter-spacing: 10%;
border-radius: min(0.78vw, 6px);
transition: all 0.3s ease;
background-color: var(--btn-color);
color: var(--white--);
}
@media screen and (min-width: 1023px) {
/* MVコンテナ(基準) */
.main_visual {
position: relative;
width: 100%;
aspect-ratio: 1440 / 720; /* PC比率 */
overflow: hidden;
}
/* 画像の設定 */
.mv_image {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
/*ボタン設定*/
.detail_btn {
position: absolute; /* absoluteを外す */
bottom: 7%; /* bottomからの余白を調整 */
left: 9%; /* 左右中央寄せ */
transform: unset; /* 左右中央寄せ */
width: auto;
max-width: min(21.94vw, 316px) !important;
z-index: 2;
}
.detail_btn_link {
display: flex;
justify-content: center;
align-items: center;
padding-block: min(1.11vw, 16px);
padding-inline: min(3.47vw, 50px);
font-size: min(1.66vw, 24px);
font-style: normal;
font-weight: bold;
letter-spacing: 10%;
border-radius: min(0.78vw, 6px);
transition: all 0.3s ease;
background-color: var(--btn-color);
color: var(--white--);
}
.detail_btn:hover {
opacity: 0.8;
}
/* ホバー時の演出(例:背景色を少し暗く) */
.detail_btn_link:hover {
background-color: #f0f0f0;
}
}
@media screen and (max-width: 300px) {
/*ボタン設定*/
.detail_btn {
max-width: 150px;
}
}1. aspect-ratio の計算
PC: 1440 / 720 はシンプルに aspect-ratio: 2 / 1; と書いてもOKです。
SP: 440 / 773 は割り切れないため、上記のようにデザイナーさんの数値をそのまま入れるのが最も正確で、
後から見返した時も意図が伝わりやすいです。
2.
object-fit: cover; を入れているので、万が一画像のミリ数が数ピクセルずれていても、
隙間ができたり画像が伸びたりすることはありません。
3. HTMLの loading=”lazy” について
MV(メインビジュアル)はサイトを開いて最初に目に入る要素です。
MVに限っては loading=”lazy” を外す、もしくは fetchpriority=”high” を追加するのが、
LCP(表示速度の指標)を改善するためのベストプラクティスです。
4. 画像の書き出し(再確認)
PC版はデザインが1440px幅ですが、前回の通り2880px幅で書き出したものを MV_pc.png とすることで、
Retinaディスプレイでも非常に鮮明に表示されます。
サイトは
こちらから
