<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>フロントエンド | アリッシアの朝</title>
	<atom:link href="https://alicia-ing.com/category/programming/front-end/feed/" rel="self" type="application/rss+xml" />
	<link>https://alicia-ing.com</link>
	<description></description>
	<lastBuildDate>Mon, 11 Aug 2025 12:12:37 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://alicia-ing.com/wp-content/uploads/2023/05/cropped-alicia-32x32.webp</url>
	<title>フロントエンド | アリッシアの朝</title>
	<link>https://alicia-ing.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【html,JS】指定した日までのカウントダウンタイマー</title>
		<link>https://alicia-ing.com/programming/front-end/countdown-js/</link>
					<comments>https://alicia-ing.com/programming/front-end/countdown-js/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Fri, 23 Aug 2024 02:34:25 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=6806</guid>

					<description><![CDATA[イベントやセールの告知、期間限定のキャンペーンなどで、ユーザーの興味を引きつけたいとき、カウントダウンタイマーが有効です。 ECサイトや特別なプロモーションページを運営している方にとって、カウントダウンタイマーは、期限付 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p>ウェブページに指定した日にちまでのカウントダウンを表示する。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1920" height="950" src="https://alicia-ing.com/wp-content/uploads/2024/08/complete.gif" alt="" class="wp-image-6837"/></figure>
</div></div>



<p>イベントやセールの告知、期間限定のキャンペーンなどで、ユーザーの興味を引きつけたいとき、<strong>カウントダウンタイマーが有効</strong>です。</p>



<p>ECサイトや特別なプロモーションページを運営している方にとって、カウントダウンタイマーは、<strong>期限付きの魅力を伝える強力なツール</strong>です。</p>



<p>この記事では、<strong>JavaScriptを使って指定した日までのカウントダウンタイマー</strong>を簡単に作成する方法を紹介します。</p>



<p>実装も手軽で、デザインに柔軟に対応できるこの技術を活用すれば、訪問者の期待感を一層高めることができるでしょう。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>ECサイトやウェブショップを運営していて、セールやキャンペーンの告知を強化したい人</li>



<li>イベントページや特設サイトで、カウントダウンタイマーを使って緊迫感を演出したいデザイナー</li>



<li>JavaScriptのスキルを伸ばしたい、初学者や中級者</li>



<li>期間限定の特典やコンテンツを提供している企業のWeb担当者</li>



<li>自分のサイトをもっとインタラクティブにしたいウェブ開発者</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">ウェブ版カウントダウンタイマーはいつ使う？</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="528" src="https://alicia-ing.com/wp-content/uploads/2024/08/web-timer-1024x528.webp" alt="" class="wp-image-6838" srcset="https://alicia-ing.com/wp-content/uploads/2024/08/web-timer-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2024/08/web-timer-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2024/08/web-timer-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2024/08/web-timer-1536x791.webp 1536w, https://alicia-ing.com/wp-content/uploads/2024/08/web-timer.webp 1980w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>カウントダウンタイマーは、ユーザーの視線を引きつけ、緊迫感を演出するために非常に有効です。</p>



<p>特に期間限定のセールや、イベントの告知、<strong>製品の発売日までの時間を表示する場面で使われます</strong>。<br>タイマーが刻む秒数が減っていくのを見て、訪問者は時間の経過を意識し、<strong>早めのアクションを取るよう促す効果</strong>があります。</p>



<h3 class="wp-block-heading">カウントダウンタイマーを使う場面とメリット</h3>



<ul class="wp-block-list">
<li><strong>プロモーションセール</strong>:<strong> セール終了までの時間を視覚的に示す</strong>ことで、顧客の購買意欲を刺激します。</li>



<li><strong>イベント告知</strong>: イベント開始までの時間をカウントダウンし、<strong>参加者の期待感を高めます</strong>。</li>



<li><strong>製品発売</strong>: <strong>新製品やサービスのリリースまでの時間をカウントダウン</strong>し、話題性を作ります。</li>



<li><strong>キャンペーンの締め切り</strong>: <strong>応募や登録の締め切りまでの時間を表示</strong>し、行動を促します。</li>



<li><strong>限定コンテンツの公開</strong>: <strong>期間限定のビデオや記事が公開されるまでの時間を表示</strong>し、ユーザーの関心を引きます。</li>
</ul>



<h2 class="wp-block-heading">JavaScriptでカウントダウンタイマー</h2>



<p>JavaScriptは、時間を扱うための関数やオブジェクトを提供しています。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-green-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#8bc34a"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">一般的な時間関数</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Date()：現在・特定の日付と時刻を取得</li>



<li>getTime()：時間差の計算</li>



<li>Math.floor()：数字を計算する</li>



<li>setInterval()：繰り返し処理・タイマー機能・動的な更新</li>



<li>clearInterval()：インターバルの停止・タイマー解除</li>
</ul>
</div></div>



<p>これら関数は時間を計算し、ページに動的な要素を追加できて、カウントダウンタイマーを簡単に実装できます。</p>



<h2 class="wp-block-heading">特定の時間までのカウントダウンタイマーを作成</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="528" src="https://alicia-ing.com/wp-content/uploads/2024/08/identification-timer-1024x528.webp" alt="" class="wp-image-6839" srcset="https://alicia-ing.com/wp-content/uploads/2024/08/identification-timer-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2024/08/identification-timer-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2024/08/identification-timer-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2024/08/identification-timer-1536x791.webp 1536w, https://alicia-ing.com/wp-content/uploads/2024/08/identification-timer.webp 1980w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ここからは、特定の日時までのカウントダウンタイマーを作成します。<br>時間を取得して、動的に動かします。</p>



<p>さらに、時間は点滅をさせて指定した時間を過ぎると、文字の色を変えます。</p>



<h3 class="wp-block-heading">HTML</h3>



<p>HTMLはカウントダウンタイマーの基本構造を作成します。</p>



<p>タイマーの要素を配置し、それぞれの時間単位を表示するためのタグを設定します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;

&lt;head&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;div class=&quot;countdown&quot;&gt;
        &lt;div class=&quot;material&quot;&gt;
            &lt;div class=&quot;left&quot;&gt;
                &lt;a href=&quot;https://alicia-ing.com/&quot;&gt;&lt;img src=&quot;/images/alicia.png&quot; height=&quot;150 px&quot;&gt;&lt;/a&gt;
                &lt;p class=&quot;Lmessage&quot;&gt;最大&lt;span class=&quot;rate&quot;&gt;50&lt;/span&gt;%OFF&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;right&quot;&gt;
                &lt;div class=&quot;notice&quot;&gt;
                    &lt;p class=&quot;Rmessage&quot;&gt;終了まで&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;time-container&quot;&gt;
                    &lt;div class=&quot;time-element&quot;&gt;
                        &lt;div class=&quot;time&quot;&gt;&lt;span id=&quot;hour&quot;&gt;&lt;/span&gt;&lt;/div&gt;
                        &lt;div class=&quot;timelog&quot;&gt;
                            &lt;p&gt;時間&lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;p class=&quot;colon&quot;&gt;：&lt;/p&gt;
                    &lt;div class=&quot;time-element&quot;&gt;
                        &lt;div class=&quot;time&quot;&gt;&lt;span id=&quot;min&quot;&gt;&lt;/span&gt;&lt;/div&gt;
                        &lt;div class=&quot;timelog&quot;&gt;
                            &lt;p&gt;分&lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;p class=&quot;colon&quot;&gt;：&lt;/p&gt;
                    &lt;div class=&quot;time-element&quot;&gt;
                        &lt;div class=&quot;time&quot;&gt;&lt;span id=&quot;sec&quot;&gt;&lt;/span&gt;&lt;/div&gt;
                        &lt;div class=&quot;timelog&quot;&gt;
                            &lt;p&gt;秒&lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;p&gt;&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;script src=&quot;script.js&quot;&gt;&lt;/script&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p><strong>「.countdown」</strong>：カウントダウンタイマー全体を囲むコンテナ。<strong>カウントダウンタイマーのデザインや配置を制御する</strong>ために使用されます。</p>



<p><strong>「.material」</strong>：カウントダウンタイマーの主要なコンテンツを包む要素。<strong>タイマーの左側と右側のコンテンツをまとめて配置</strong>します。</p>



<p><strong>「.left」</strong>：左側のコンテンツを含む要素。<strong>リンクされた画像とメッセージを表示</strong>します。</p>



<p><strong>「.right」</strong>：右側のコンテンツを含む要素。<strong>カウントダウンタイマーや関連するメッセージを表示</strong>します。</p>



<p><strong>「.notice」</strong>：カウントダウンの<strong>通知メッセージを表示</strong>するための要素。</p>



<p><strong>「.Lmessage」</strong>：左側に表示される割引に関するメッセージのスタイリングを行うためのクラス。</p>



<p><strong>「.Rmessage」</strong>：右側に表示される「終了まで」のメッセージのスタイリングを行うためのクラス。</p>



<p><strong>「.time-container」</strong>：<strong>時間、分、秒の各タイム要素をまとめて配置</strong>するためのコンテナ。</p>



<p><strong>「.time-element」</strong>：個別のタイム要素（時間、分、秒）を囲む要素。各時間単位の値とそのラベルを含みます。</p>



<p><strong>「.time」</strong>：実際の時間値（時間、分、秒）を表示するための要素。</p>



<p><strong>「.timelog」</strong>：<strong>時間の単位（「時間」「分」「秒」）を示すラベルを表示</strong>するための要素。</p>



<p><strong>「.colon」</strong>：<strong>時間の間に表示されるコロン（「：」）をスタイルする</strong>ためのクラス。</p>



<p><strong>「hour」</strong>：残りの「時間」を表示するために使用されるHTMLの要素ID。動的に時間が更新されます。</p>



<p><strong>「min」</strong>：残りの「分」を表示するために使用されるHTMLの要素ID。動的に分が更新されます。</p>



<p><strong>「sec」</strong>：残りの「秒」を表示するために使用されるHTMLの要素ID。動的に秒が更新されます。</p>



<h3 class="wp-block-heading">CSS</h3>



<p>このスタイルシートは、カウントダウンタイマーを視覚的に目立たせ、ユーザーの注意を引くためのデザインが施されています。</p>



<p>各要素がフレックスボックスを使ってレイアウトされ、中央に配置されることで、見やすく整ったUIが実現されています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.countdown{
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight:bold;
    margin: 0;
    background-color: #f0f0f0;
}

.material{
display:flex;
}

.material p{
    font-size: 1.5em;
}

.left{
flex: auto;
display: inline-block;  
vertical-align: bottom;
flex-flow: column;
text-align: center;
margin: 5px;
}

.image{
    width: 130px;
    height: auto;
}

.rate{
    font-size: 3rem;
}

.right{
flex: auto;
flex-flow: column;
text-align: center;
display: inline-block;  
vertical-align: bottom;
margin: 5px;
}

.notice{
    flex: auto;
    display: flex;
    flex-flow: column;
    text-align: center;
    justify-content: flex-end;
    align-items: center;
    font-size: 1.5em;
}

.Lmessage{
    text-align: center;
    margin: 0;
}

.Rmessage{
    text-align: center;
    margin: 0;
}

.time-container {
    display: flex;
    align-items: center;
}

.time-element {
    display:flex;
    flex-flow: column;
    text-align: center;
}


.colon {
    font-size: 1em; /* 必要に応じてサイズ調整 */
    line-height: 1; /* 必要に応じて調整 */
    margin-bottom: 65px;
}


.time {
    width: 100px;
    height: 100px;
    margin: .2rem;
    background-color: #A435F0;
    border-radius: 1rem;
    display: flex;
    justify-content: center;
    align-items: center;
}

.time p{
    margin: 0;
    font-size: 2em;
    text-align: center;
}


.timelog p{
margin: 0;
}

#hour,#min,#sec {
    font-size: 3rem;
    animation: fade 2s infinite;
}

@keyframes fade {
    0% {
        opacity: 1;
    }
    50% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p><strong>「.countdown」</strong>：全体を囲むコンテナのデザインです。フレックスボックスを使用してコンテンツを中央揃えにし、背景色が薄いグレー（#f0f0f0）に設定されています。テキストは太字で表示されます。</p>



<p><strong>「.material」</strong>：内部コンテンツを横に並べるためにフレックスボックスが使用されています。子要素である左側と右側のコンテンツが横並びに表示されます。</p>



<p><strong>「.material p」</strong>：<code>material</code>内の<code>p</code>タグに対して適用されるスタイルです。フォントサイズが1.5emで、標準の文字よりも少し大きめに表示されます。</p>



<p><strong>「.left」</strong>：左側のコンテンツのスタイリングです。自動でサイズ調整され、縦方向に整列されます。中央揃えで表示され、上下に5pxの余白が設定されています。</p>



<p><strong>「.image」</strong>：画像のサイズが幅130px、高さは自動で調整されます。アスペクト比を維持しながら表示されます。</p>



<p><strong>「.rate」</strong>：割引率を表示する部分のデザインです。フォントサイズが3remと非常に大きく設定され、強調されて表示されます。</p>



<p><strong>「.right」</strong>：右側のコンテンツのスタイリングです。<code>left</code>クラスと同様に、中央揃えで配置され、上下に5pxの余白があります。</p>



<p><strong>「.notice」</strong>：通知メッセージのデザインです。中央揃えで表示され、要素が縦に配置されます。フォントサイズは1.5emで、テキストがやや大きめに表示されます。</p>



<p><strong>「.Lmessage」</strong>：左側のメッセージのスタイリングです。中央揃えで配置され、余白はありません。</p>



<p><strong>「.Rmessage」</strong>：右側のメッセージのスタイリングです。<code>Lmessage</code>と同様に、中央揃えで余白はありません。</p>



<p><strong>「.time-container」</strong>：タイマー全体を包むコンテナのデザインです。フレックスボックスを使用し、タイム要素を中央揃えに配置します。</p>



<p><strong>「.time-element」</strong>：個々のタイム要素（時間、分、秒）のデザインです。縦方向に整列し、中央揃えで表示されます。</p>



<p><strong>「.colon」</strong>：タイム要素間のコロン（「：」）のデザインです。フォントサイズが1emで、垂直位置が調整され、マージンボトムが65pxで指定されています。</p>



<p><strong>「.time」</strong>：各タイム要素の背景と配置に関するデザインです。100px×100pxのボックスに背景色が紫色（#A435F0）で設定され、角が丸く（border-radius: 1rem）なっており、中央に時間が表示されます。</p>



<p><strong>「.time p」</strong>：タイム要素内のテキスト（時間値）のスタイリングです。フォントサイズが2emで、ボックス内で中央揃えされます。</p>



<p><strong>「.timelog p」</strong>：タイムラベル（時間、分、秒）のスタイリングです。余白はなく、テキストがシンプルに表示されます。</p>



<p><strong>「#hour,#min,#sec」</strong>：時間、分、秒を表示するテキストのスタイリングです。フォントサイズが3remで非常に大きく、2秒ごとにフェードイン・フェードアウトするアニメーションが適用されています。</p>



<p><strong>「@keyframes fade」</strong>：<code>#hour</code>, <code>#min</code>, <code>#sec</code>要素に適用されるフェードアニメーションの定義です。0%から100%までの間で透明度が変化し、視覚的に点滅する効果が得られます。</p>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h3 class="wp-block-heading">JavaScript</h3>



<p>JavaScriptでは、現在の時間と指定した時間との差を計算し、タイマーを動的に更新します。<br>指定した時間が過ぎると、タイマーを停止させることも可能です。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>const hour = document.getElementById(&quot;hour&quot;);
const min = document.getElementById(&quot;min&quot;);
const sec = document.getElementById(&quot;sec&quot;);

function countdown() {
  const now = new Date(); // 現在時刻を取得
  const month = 12; // 月を取得
  const day = 31; // 日を取得
  const targetHour = 15; // 時間を指定。午後の場合は+12
  const bargain = new Date(2024, month - 1, day, targetHour);
  const diff = bargain.getTime() - now.getTime();

  // 残り時間が1時間以内になったら、文字色を黄色にする
  if (diff &lt;= 3600000) {
    hour.style.color = &#39;yellow&#39;;
    min.style.color = &#39;yellow&#39;;
    sec.style.color = &#39;yellow&#39;;
  }

  // 残り時間が0以下になったら、カウントアップを止める
  if (diff &lt;= 0) {
    hour.innerHTML = &#39;00&#39;;
    min.innerHTML = &#39;00&#39;;
    sec.innerHTML = &#39;00&#39;;
    clearInterval(countdownInterval); // インターバルをクリア
    return;
  }

  const calcHour = Math.floor(diff / 1000 / 60 / 60);
  const calcMin = Math.floor(diff / 1000 / 60) % 60;
  const calcSec = Math.floor(diff / 1000) % 60;

  hour.innerHTML = calcHour &lt; 10 ? &#39;0&#39; + calcHour : calcHour;
  min.innerHTML = calcMin &lt; 10 ? &#39;0&#39; + calcMin : calcMin;
  sec.innerHTML = calcSec &lt; 10 ? &#39;0&#39; + calcSec : calcSec;
}

// インターバルをグローバル変数に格納
let countdownInterval;

// 初期化とインターバルの設定
function startCountdown() {
  countdown();
  countdownInterval = setInterval(countdown, 1000);
}

startCountdown();</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>「countdown」</strong></li>
</ul>



<p>指定された日時（2024年12月31日15:00）までの残り時間を計算し、<strong>その結果をページに表示</strong>します。</p>



<p>現在時刻と目標時刻を比較して、<strong>残り時間をミリ秒単位で計算</strong>します。<br>残り時間が1時間以内になった場合、<strong>タイマーの色が黄色に</strong>変わります。</p>



<p>もし残り時間が0以下になったら、タイマーを「00:00:00」と表示し、<strong>カウントダウンを停止</strong>します。</p>



<ul class="wp-block-list">
<li><strong>「startCountdown」</strong></li>
</ul>



<p>この関数はカウントダウンの初期化と定期的な更新を行います。</p>



<p>最初に<strong>countdown関数を実行して</strong>初期状態を表示し、1秒ごとにcountdown関数を呼び出すように<strong>タイマーを設定</strong>します。</p>



<p>毎秒タイマーが更新され、<strong>リアルタイムで残り時間が表示</strong>されます。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>JavaScriptを使ったカウントダウンタイマーは、シンプルながらも非常に効果的なウェブデザイン要素です。</p>



<p>特定のイベントやセールを目立たせるために、ぜひ活用してみてください。<br>それだけではなく、Webページにユーザーが指定して3分や10秒のカウントダウンタイマーへ応用させることもできます。</p>



<p>タイマーを使用することで、ユーザーに「時間の重要性」を伝えることができ、行動を促進させる力強いツールとなります。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/countdown-js/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【コピペOK】WordPressでこの記事を書いた人をデザインする</title>
		<link>https://alicia-ing.com/programming/front-end/author-box/</link>
					<comments>https://alicia-ing.com/programming/front-end/author-box/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Fri, 10 May 2024 03:08:08 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=6159</guid>

					<description><![CDATA[「この記事を書いた人」の項目は、ウェブページの管理人情報を簡潔に示すことに長けています。ユーザーがお問い合わせフォームやTwitter(X)、Instagram、Noteなど登録しているSNSへアクセスしやすくなります。 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>「この記事を書いた人」の項目は、ウェブページの管理人情報を簡潔に示すことに長けています。<br>ユーザーが<strong>お問い合わせフォーム</strong>やTwitter(X)、Instagram、Noteなど登録している<strong>SNS</strong>へアクセスしやすくなります。</p>



<p>さらに、素性を示すとGoogleから<strong>信頼性の高いサイトとして評価</strong>されて、<br>掲載順位が上位に表示される期待が高まります。</p>



<p>しかし、WordPressでブログを運営している方は、サイドバーの運営者情報が本文に挿入され見映えが悪いことがあります。</p>



<p>本記事では、HTMLとCSSを使って、自作で「この記事を書いた人」を作成していきます。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>WordPressでこの記事を書いた人を掲載したい</li>



<li>HTMLとCSSが使えるようになりたい</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">デザイン</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="506" src="https://alicia-ing.com/wp-content/uploads/2024/05/figma-author-box-1024x506.webp" alt="" class="wp-image-6268" srcset="https://alicia-ing.com/wp-content/uploads/2024/05/figma-author-box-1024x506.webp 1024w, https://alicia-ing.com/wp-content/uploads/2024/05/figma-author-box-300x148.webp 300w, https://alicia-ing.com/wp-content/uploads/2024/05/figma-author-box-768x380.webp 768w, https://alicia-ing.com/wp-content/uploads/2024/05/figma-author-box-1536x759.webp 1536w, https://alicia-ing.com/wp-content/uploads/2024/05/figma-author-box.webp 1918w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>「この記事を書いた人」をFigmaを使って作成しました。<br><strong>Figma</strong>は、主にWebデザインに使用されますが、ゲームUI作成にも使える優れたサービスです。</p>



<p>構成は示した通りに、枠線内に右と左を分けて、それぞれ3:7とします。<br>右には、吹き出し項目、自分の名前とアイコンを中央に縦に並べます。<br>左には、簡潔に自分の経歴を示して、自分が登録しているSNSの画像と名称を載せます。</p>



<p>SNSのロゴ画像は、<strong>公式が配布している</strong>ものを使用してください。<br>誰かが二次配布している画像は使用しないようにしてください。</p>



<p>また、<strong>画像を加工してはいけない、比率を変えてはいけない、色を変えてはいけない</strong>など。<br>それぞれの<strong>ロゴで禁止事項が異なる</strong>ので、必ず利用規約は確認してください。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-green-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#8bc34a"><div class="tab-caption-box-label block-box-label box-label fab-user"><span class="tab-caption-box-label-text block-box-label-text box-label-text">公式ロゴ配布</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><a target="_self" href="https://about.twitter.com/en/who-we-are/brand-toolkit" data-type="link" data-id="https://about.twitter.com/en/who-we-are/brand-toolkit">X(Twitter)</a></li>



<li>Instagram</li>



<li><a target="_self" href="https://www.youtube.com/intl/ALL_jp/howyoutubeworks/resources/brand-resources/#logos-icons-and-colors" data-type="link" data-id="https://www.youtube.com/intl/ALL_jp/howyoutubeworks/resources/brand-resources/#logos-icons-and-colors">Youtube</a></li>



<li>Note</li>



<li><a target="_self" href="https://line.me/ja/logo" data-type="link" data-id="https://line.me/ja/logo">LINE</a></li>
</ul>
</div></div>



<h2 class="wp-block-heading">HTML</h2>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;div class=&quot;profile-section&quot;&gt;
  &lt;div class=&quot;profile-container&quot;&gt;
    &lt;div class=&quot;profile-left&quot;&gt;
      &lt;div class=&quot;balloon&quot;&gt;
        &lt;p&gt;この記事を書いた人&lt;/p&gt;
      &lt;/div&gt;
      &lt;img class=&quot;profile-image&quot; src=&quot;URL&quot; alt=&quot;プロフィール&quot;&gt;
      &lt;p class=&quot;profile-name&quot;&gt;アリッシア&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&quot;profile-right&quot;&gt;
      &lt;div class=&quot;information&quot;&gt;
        &lt;p&gt;アリッシアの朝
          &lt;br&gt;&quot;改行&quot;
          &lt;br&gt;&lt;a href=&quot;https://alicia-ing.com/profile/&quot;&gt;詳しいプロフィールはこちら&lt;/a&gt;
        &lt;/p&gt;
      &lt;/div&gt;
      &lt;div class=&quot;profile-sns-buttons&quot;&gt;
        &lt;div class=&quot;profile-sns-button&quot;&gt;
          &lt;a href=&quot;https://alicia-ing.com/contact/&quot;&gt;&lt;img class=&quot;contact-icon&quot; src=&quot;URL&quot; alt=&quot;Contact icon&quot;&gt;&lt;/a&gt;
          &lt;p&gt;contact&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;profile-sns-button&quot;&gt;
          &lt;a href=&quot;https://twitter.com/Alyssia_ing&quot;&gt;&lt;img class=&quot;twitter-icon&quot; src=&quot;URL&quot; alt=&quot;Twitter icon&quot;&gt;&lt;/a&gt;
          &lt;p&gt;Twitter&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;profile-sns-button&quot;&gt;
          &lt;img class=&quot;instagram-icon&quot; src=&quot;URL&quot; alt=&quot;Instagram icon&quot;&gt;
          &lt;p&gt;Instagram&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;profile-sns-button&quot;&gt;
          &lt;a href=&quot;https://note.com/alicia_ing/&quot;&gt;&lt;img class=&quot;note-icon&quot; src=&quot;URL&quot; alt=&quot;Note icon&quot;&gt;&lt;/a&gt;
          &lt;p&gt;Note&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>.profile-section：プロフィールセクション全体を定義します。<br>.profile-container：プロフィール情報を包含するコンテナです。</p>



<ul class="wp-block-list">
<li><strong>プロフィール左側</strong></li>
</ul>



<p>.profile-left：プロフィール画像や名前などの<strong>左側のコンテナ</strong>を定義します。<br>.balloon：&#8221;この記事を書いた人&#8221;というテキストを含む<strong>吹き出し</strong>を表します。<br>.profile-image：プロフィール<strong>画像</strong>を定義します。<br>.profile-name：プロフィールの<strong>名前</strong>を定義します。</p>



<ul class="wp-block-list">
<li><strong>プロフィール右側</strong></li>
</ul>



<p>.profile-right：プロフィール情報の<strong>右側のコンテナ</strong>を定義します。<br>.information：追加の<strong>プロフィール情報</strong>を保持するコンテナです。<br>.profile-sns-buttons：<strong>SNSのボタン全体</strong>を包含するコンテナです。<br>.profile-sns-button：<strong>各SNSのボタン</strong>を包含するコンテナです。<br>.contact-icon：連絡先ページへのリンクのアイコンを定義します。<br>.twitter-icon：Twitterプロフィールへのリンクのアイコンを定義します。<br>.instagram-icon：Instagramへのリンクアイコンを定義します。<br>.note-icon：Noteプロフィールへのリンクのアイコンを定義します。</p>



<h2 class="wp-block-heading">CSS</h2>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.profile-section {
    max-width: 1000px;
    margin: auto;
    border: solid 2px #333;
    padding: 10px;
}

.profile-container {
    display: flex;
    justify-content: space-between;
}

.profile-left {
    flex: 3;
    padding: 1em;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    border-right: 2px dashed black;
}

.profile-right {
    flex: 7;
    padding: 1em;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    /* display: flex; */
}

.information p {
    margin: auto;
}

.balloon {
    position: relative;
    display: inline-block;
    margin: 1em 0;
    padding: 10px;
    background: #75def0;
}

/* 矢印 */
.balloon:before {
    content: &quot;&quot;;
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -10px;
    border: 10px solid transparent;
    border-top: 10px solid #75def0;
}

.balloon p {
    margin: auto;
    padding: auto;
}

.profile-image {
    max-width: 100%;
    height: auto;
}

.profile-name {
    color: blue;
    font-size: 20px;
    font-family: &quot;Meiryo&quot;, sans-serif;
}

.profile-sns-buttons {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 100px;
    background: gainsboro;
    margin: auto;
    padding: 5px;
}

.profile-sns-button {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.profile-sns-button a {
    height: 70px;
    text-decoration: none;
}

.profile-sns-button img {
    max-width: 100%;
    height: auto;
    transition: transform 0.3s ease;
}

.profile-sns-button:hover img {
    transform: scale(1.1);
}

.profile-sns-button p {
    margin: 0;
    text-align: center;
}

@media screen and (max-width: 500px) {
    .profile-section {
        display: none;
    }
}</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>.profile-section：プロフィールセクション全体のスタイルを指定します。<br><strong>幅の最大値(max-width)、マージン、囲い、パディング</strong>を設定します。<br>また、<strong>@media screen</strong>によって、スクリーン幅が500px以下の場合に非表示にします。</p>



<p>.profile-container：プロフィール情報を保持するコンテナのスタイルを定義します。<br>このコンテナ内の要素を<strong>フレックスボックス</strong>として直下の要素を並列にします。<br>さらに要素間の<strong>スペースを均等に配置</strong>します。</p>



<ul class="wp-block-list">
<li><strong>プロフィール左側</strong></li>
</ul>



<p>.profile-left：プロフィール情報の左側のコンテナのスタイルを指定します。<br><strong>フレックスアイテムとして中央寄せ</strong>にし、<strong>縦方向に要素を中央寄せ</strong>に並べます。<br>また、<strong>左側に破線の境界線</strong>を持ちます。</p>



<p>.balloon：吹き出しのスタイルを指定します。<br><strong>背景色</strong>、<strong>マージン</strong>、<strong>パディング</strong>を設定し、吹き出しの形状を定義します。<br>.balloon:before：吹き出しの矢印のスタイルを指定します。<br><strong>矢印の位置</strong>や<strong>形状</strong>、<strong>色</strong>を定義します。</p>



<p>.profile-image：プロフィール画像のスタイルを指定します。<br><strong>画像の最大幅を100%</strong>にし、<strong>高さを自動に設定</strong>します。</p>



<p>.profile-name：プロフィール名のスタイルを指定します。<br><strong>文字色</strong>、<strong>フォントサイズ</strong>、<strong>フォント型</strong>を設定します。</p>



<ul class="wp-block-list">
<li><strong>プロフィール右側</strong></li>
</ul>



<p>.profile-right：プロフィール情報の右側のコンテナのスタイルを指定します。<br><strong>フレックスアイテムとして中央寄せ</strong>にし、<strong>縦方向に要素を中央寄せ</strong>に並べます。</p>



<p>.information p：追加のプロフィール情報の段落要素のスタイルを指定します。<br><strong>マージンを自動</strong>に設定します。</p>



<p>.profile-sns-buttons：ソーシャルメディアボタンのコンテナのスタイルを指定します。<br><strong>フレックスボックスとして要素を配置</strong>し、<strong>背景色</strong>や<strong>マージン</strong>、<strong>パディング</strong>を設定します。</p>



<p>.profile-sns-button：各ソーシャルメディアボタンのスタイルを指定します。<br><strong>フレックスアイテムとして中央寄せ</strong>にし、<strong>ボタンの高さ</strong>や<strong>アイコンのスタイル</strong>を設定します。<br>.profile-sns-button a：各ソーシャルメディアボタンのリンクのスタイルを指定します。<br>テキスト装飾をなくし、<strong>リンクの高さを設定</strong>します。<br>.profile-sns-button img：ソーシャルメディアアイコンのスタイルを指定します。<br><strong>画像の最大幅を100%</strong>にし、<strong>高さを自動に設定</strong>します。<strong>ホバー時にアイコンのサイズを拡大</strong>します。<br>.profile-sns-button p：ソーシャルメディアボタンのテキストのスタイルを指定します。<br><strong>マージンを0</strong>にし、<strong>テキストを中央寄せ</strong>にします。</p>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h2 class="wp-block-heading">実装</h2>



<body>
  <div class="prof-line">
    <div class="prof">
      <div class="prof-left">
        <div class="balloon1">
          <p>この記事を書いた人</p>
        </div>
        <img decoding="async" class="prof-img" src="https://alicia-ing.com/wp-content/uploads/2024/05/alicia.png" alt="プロフィール">
        <p class="prof-name">アリッシア</p>
      </div>
      <div class="prof-right">
        <div class="inform">
                   <p>大学4年間で何か胸を張れるスキルを身に着けたくて当サイト運営を始めました。
            <br>現在、大学院に進学するか就職するか迷いながら勉強しています。<br><a target="_self" href="https://alicia-ing.com/profile/">詳しいプロフィールはこちら</a>
          </p>
        </div>
        <div class="prof-sns-btns">
          <div class="prof-sns-btn">
            <a target="_self" href="https://alicia-ing.com/contact/"><img decoding="async" class="contact-icon"
                src="https://alicia-ing.com/wp-content/uploads/2024/05/contact.webp" alt="Contact icon"></a>
            <p>contact</p>
          </div>
          <div class="prof-sns-btn">
            <img decoding="async" class="x-icon"
                src="https://alicia-ing.com/wp-content/uploads/2024/05/x.png" alt="X icon">
            <p>X</p>
          </div>
          <div class="prof-sns-btn">
            <img decoding="async" class="instagram-icon" src="https://alicia-ing.com/wp-content/uploads/2024/05/IG.png"
              alt="Instagram icon">
            <p>Instagram</p>
          </div>
          <div class="prof-sns-btn">
            <a target="_self" href="https://note.com/alicia_ing/"><img decoding="async" class="note-icon"
                src="https://alicia-ing.com/wp-content/uploads/2024/05/note.png" alt="Note icon"></a>
            <p>Note</p>
          </div>
        </div>
        <!-- <div class="contact-box"><a target="_self" href="https://alicia-ing.com/contact/" class="contact">お問い合わせ</a></div> -->
      </div>
    </div>
  </div>
</body>



<p>各投稿ページ内にカスタムHTMLとカスタムCSSがありますが、<br>投稿記事に添付すると、<strong>レイアウトが崩れてしまいます</strong>。</p>



<p>したがって、WordpressでHTMLを表示させるにはカスタムHTML、<br>CSSを有効にするにはテーマファイルエディターを使用します。</p>



<p>カスタムHTMLは、「外観&gt;ウィジェット」から、作成できます。<br><strong>投稿下</strong>に配置すると、本文最後にこの記事を書いた人を表示できます。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="558" src="https://alicia-ing.com/wp-content/uploads/2024/05/widget-html-1024x558.webp" alt="" class="wp-image-6257" srcset="https://alicia-ing.com/wp-content/uploads/2024/05/widget-html-1024x558.webp 1024w, https://alicia-ing.com/wp-content/uploads/2024/05/widget-html-300x163.webp 300w, https://alicia-ing.com/wp-content/uploads/2024/05/widget-html-768x418.webp 768w, https://alicia-ing.com/wp-content/uploads/2024/05/widget-html-1536x837.webp 1536w, https://alicia-ing.com/wp-content/uploads/2024/05/widget-html.webp 1885w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>投稿下は、最後まで読んだユーザーにしか見られないというデメリットがありますが、<br>読者は、執筆者の情報ではなく内容を知りたいです。<br><strong>本文中や冒頭に載せると読者視点だと目障り</strong>になので、ページ離脱率が高くなる恐れがあります。</p>



<p>CSSは、サイト全体で有効にするために「<strong>外観&gt;テーマファイルエディター</strong>」のCSSファイルに添付してください。<br>サイトテーマがcocoonの場合は、cocoon child&gt;stylesheet（<strong>style.css</strong>）に添付します。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="462" src="https://alicia-ing.com/wp-content/uploads/2024/05/theme-css-1024x462.webp" alt="" class="wp-image-6258" srcset="https://alicia-ing.com/wp-content/uploads/2024/05/theme-css-1024x462.webp 1024w, https://alicia-ing.com/wp-content/uploads/2024/05/theme-css-300x135.webp 300w, https://alicia-ing.com/wp-content/uploads/2024/05/theme-css-768x346.webp 768w, https://alicia-ing.com/wp-content/uploads/2024/05/theme-css-1536x693.webp 1536w, https://alicia-ing.com/wp-content/uploads/2024/05/theme-css.webp 1865w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>テーマファイルエディターは、編集を誤るとサイトのレイアウトが崩れる恐れがあります。<br>消してしまった場合に備えて、<strong>編集前のCSS情報は保存</strong>しておいてください。</p>



<p>以上の手続きを踏むと、この記事を書いた人が作成されます。</p>



<h2 class="wp-block-heading">よくある失敗</h2>



<p>本記事と同じように作成したのに、レイアウトに違和感がある場合は次のようなミスが考えられます。</p>



<h3 class="wp-block-heading">画像の背景が透明ではない</h3>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="366" height="316" src="https://alicia-ing.com/wp-content/uploads/2024/05/fail.webp" alt="" class="wp-image-6255" srcset="https://alicia-ing.com/wp-content/uploads/2024/05/fail.webp 366w, https://alicia-ing.com/wp-content/uploads/2024/05/fail-300x259.webp 300w" sizes="(max-width: 366px) 100vw, 366px" /></figure>



<p>画像拡張子が.<strong>png</strong>出ない可能性がある。</p>



<p>画像の拡張子には、主に「jpeg」、「png」、「gif」、「webp」があります。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table"><table><tbody><tr><td class="has-text-align-center" data-align="center">拡張子</td><td class="has-text-align-center" data-align="center">特徴</td></tr><tr><td class="has-text-align-center" data-align="center">jpeg</td><td class="has-text-align-center" data-align="center">データの圧縮</td></tr><tr><td class="has-text-align-center" data-align="center">png</td><td class="has-text-align-center" data-align="center">背景透明</td></tr><tr><td class="has-text-align-center" data-align="center">gif</td><td class="has-text-align-center" data-align="center">アニメーション</td></tr><tr><td class="has-text-align-center" data-align="center">webp</td><td class="has-text-align-center" data-align="center">JPEGやPNGよりも高い圧縮効率と品質でブラウザで使用</td></tr></tbody></table></div></figure>



<p>画像形式をjpegやgifにすると、背景透明にできません。</p>



<h3 class="wp-block-heading">画像に影がある</h3>



<p><strong>画像に各テーマで装飾があることが原因</strong>です。<br>Cocoonの場合は、「Cocoon 設定&gt;画像&gt;画像の囲み効果」をなしにします。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="195" src="https://alicia-ing.com/wp-content/uploads/2024/05/image-effect-1024x195.webp" alt="" class="wp-image-6256" srcset="https://alicia-ing.com/wp-content/uploads/2024/05/image-effect-1024x195.webp 1024w, https://alicia-ing.com/wp-content/uploads/2024/05/image-effect-300x57.webp 300w, https://alicia-ing.com/wp-content/uploads/2024/05/image-effect-768x147.webp 768w, https://alicia-ing.com/wp-content/uploads/2024/05/image-effect-1536x293.webp 1536w, https://alicia-ing.com/wp-content/uploads/2024/05/image-effect.webp 1546w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">まとめ</h2>



<p>「この記事を書いた人」の項目は、ウェブページの管理人情報を簡潔に示せて、ユーザーだけではなく、信頼性の高いサイトとして評価されやすいです。</p>



<p>また、各記事に掲載するには、「外観&gt;ウィジェット」からカスタムHTML。<br>外観&gt;テーマファイルエディター」のCSSファイルに添付してください。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/author-box/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS/JS】矢印のボタンで横スクロールするスライドショー</title>
		<link>https://alicia-ing.com/programming/front-end/arrow-horizon-scroll/</link>
					<comments>https://alicia-ing.com/programming/front-end/arrow-horizon-scroll/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sat, 10 Jun 2023 13:22:47 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=2534</guid>

					<description><![CDATA[主にECサイトにて、商品販売を目的しているときに、閲覧履歴から商品を紹介する、値段や性能の比較をするウェブデザインがあります。 横スクロールするデザインは、特にレスポンシブルデザインを主とするスマホでタッチ操作をするため [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text"><strong>本記事を読むと以下の実行ができます</strong></span></div><div class="label-box-content block-box-content box-content">
<p>矢印を押すと横に移動する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="1008" src="https://alicia-ing.com/wp-content/uploads/2023/06/矢印で横移動.gif" alt="実行例ー矢印押すと動く" class="wp-image-2567"/></figure>
</div></div>



<p>主にECサイトにて、商品販売を目的しているときに、<br>閲覧履歴から商品を紹介する、値段や性能の比較をするウェブデザインがあります。</p>



<p>横スクロールするデザインは、特にレスポンシブルデザインを主とする<br><strong>スマホでタッチ操作をするため非常に相性が良い</strong>です。</p>



<p>しかし、PCは縦スクロールがメインで、横スクロールになじみがないユーザーもいます。<br>さらに、<strong>横スクロールは、マウスやトラックボールでは基本的に非対応な操作</strong>で、<br>トラックパッドが必要になります。</p>



<p>ノートパソコンではトラックパッドが標準搭載されている機器も多いですが、<br>トラックパッドがないPCを使っているユーザーも多いです。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>トラックパッドで横スクロールを実装します。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/front-end/trackpad-arrow-horizon-scroll/" title="【CSS】JavaScript不要、トラックパッドで横スクロール" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/06/trackpad-arrow-horizon-scroll-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/trackpad-arrow-horizon-scroll-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/trackpad-arrow-horizon-scroll-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/trackpad-arrow-horizon-scroll-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】JavaScript不要、トラックパッドで横スクロール</div><div class="blogcard-snippet internal-blogcard-snippet">CSSでトラックパッドを使用して横スクロールを有効にします。横スクロール型ウェブデザインはECサイトにて商品比較に非常に役立ちます。画面が小さいスマホでもタッチスクリーンを活かし、レスポンシブデザインを考慮してユーザビリティ向上になります。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<p>本記事では、<strong>マウスやトラックボールでも横スライドをできる</strong>ようにCSSで矢印（くの字）をデザインして、JavaScriptで駆動できるコードを紹介します。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">CSSで矢印</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-1024x576.webp" alt="" class="wp-image-2625" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2023/06/矢印_0000.webp 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>矢印のボタンで横スクロールするには、<strong>CSSを使用</strong>します。<br>ウェブデザインで矢印を作成するメリットは以下の通りです。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-blue-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#0095d9"><div class="tab-caption-box-label block-box-label box-label fab-thumbs-up"><span class="tab-caption-box-label-text block-box-label-text box-label-text">ウェブサイトで矢印の横スクロールを使うメリット</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>ユーザーが直感的に操作しやすい。</li>



<li>デザインのバランスが整う。</li>
</ul>
</div></div>



<p>矢印を押すことで、横にスライドできる機能は<br>閲覧しているユーザーにも簡単に示唆することができます。</p>



<p>何枚もの画像を配置する場合、横に配置すると画像が小さくなってしまいます。<br>一方で、<strong>縦に並べると長くなってしまい非常に見にくいデザイン</strong>になります。</p>



<p>そこで、<strong>画面外に配置</strong>して矢印操作（横スライド）で画面を作成すると、<br>デザイン性が向上します。</p>



<p>HTMLで画像を指定し、矢印ボタンを押して横スクロールを手動で行います。</p>



<h3 class="wp-block-heading">HTML</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code> &lt;div class=&quot;Container&quot;&gt;
    &lt;div class=&quot;Box-Container&quot;&gt;
      &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
      &lt;!-- 必要な数の.Box要素を追加 --&gt;
    &lt;/div&gt;
    &lt;div class=&quot;Arrow left&quot;&gt;&lt;&lt;/div&gt;
    &lt;div class=&quot;Arrow right&quot;&gt;&gt;&lt;/div&gt;
  &lt;/div&gt;
</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>.Boxクラスは、.Box-Container内に配置されていて、横スライドに関与します。</p>



<p>また、左右の矢印は.Arrowというクラスが付けられており、<br>.Arrow leftと.Arrow rightでそれぞれ左矢印と右矢印を表しています。</p>



<h3 class="wp-block-heading">CSS</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>    .Container {
      position: relative;
      width: 100%;
      overflow: hidden;
    }

    .Box-Container {
      display: flex;
      width: fit-content;
      transition: transform 0.3s ease;
      transform: translateX(0);
    }

    .Box {
      flex-shrink: 0;
      width: 300px;
      height: 200px;
      margin-right: 10px;
      border-radius: 10px;
      background-color: #ccc;
    }

    .Arrow {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 30px;
      height: 30px;
      background-color: rgba(0, 0, 0, 0.3);
      color: #fff;
      font-size: 20px;
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
    }

    .Arrow.left {
      left: 0;
    }

    .Arrow.right {
      right: 0;
    }

    .Hide {
      display: none;
    }
</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>class「.Container」は、<strong>スライドショー全体のコンテナを指定</strong>します。<br>「<strong>position</strong>」をrelativeにします。内部の要素に対して位置指定を行います。<br>「<strong>width</strong>」を100%にします。親要素に対して幅いっぱいに広がることを意味します。<br>「<strong>overflow</strong>」を hiddenにします。コンテンツがコンテナからはみ出さないように制御します。</p>



<p>class「.Box-Container」は、<strong>ボックス要素のコンテナを指定</strong>します。<br>「<strong>display</strong>」を flexにします。内部のボックス要素が横に並ぶようにします。<br>「<strong>width</strong>」を fit-contentにします。内部のボックス要素の合計幅に合わせてコンテナの幅を自動調整します。<br>「<strong>transition</strong>」をtransform 0.3s easeにします。スライド時のアニメーション効果を指定します。<br>「<strong>transform</strong>」をtranslateX(0)にします。初期状態でボックスがスライドされていないことを示します。</p>



<p>class「.Box」は、<strong>各ボックス要素のスタイルを指定</strong>します。<br>「<strong>flex-shrink</strong>」を0にします。ボックスが収縮しないように指定します。<br>「<strong>width</strong>」「<strong>height</strong>」をそれぞれ300px、200pxにします。各ボックス要素の固定サイズを指定します。<br>「<strong>margin-right</strong>」を10pxにします。ボックス要素の間隔を指定します。<br>「<strong>border-radius</strong>」を10pxにします。ボックス要素の角を丸くするための指定です。<br>「<strong>background-color</strong>」を#cccにします。ボックスの背景色を指定します。</p>



<p>class「.Arrow」は<strong>矢印要素のスタイルを指定</strong>します。<br>「<strong>position</strong>」 をabsoluteにします。親要素に対して位置指定を行います。<br>「<strong>top</strong>」を 50%、「<strong>transform</strong>」を translateY(-50%)にします。矢印要素を垂直方向に中央に配置するための指定です。<br>「<strong>width</strong>」を 30px、「<strong>height</strong>」を30pxにします。矢印要素のサイズを指定します。<br>「<strong>background-color</strong>」を rgba(0, 0, 0, 0.3)にします。矢印の背景色を指定します。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-green-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#8bc34a"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">rgbaとは？</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>rgbaはそれぞれ、<strong>Red：赤、Green：緑、Blue：青、Alpha：透明度</strong>を意味します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>rgba(&quot;赤&quot;,&quot;緑&quot;,&quot;青&quot;,&quot;透明度&quot;)</code></pre></div>
</div></div>



<p>「<strong>color</strong>」を #fffにします。矢印のテキスト色を指定します。<br>「<strong>font-size</strong>」を20pxにします。矢印のフォントサイズを指定します。<br>「<strong>display</strong>」をflex、「<strong>align-items</strong>」をcenter、「<strong>justify-content</strong>」をcenterにします。矢印のテキストを中央に配置するための指定です。<br>「<strong>cursor</strong>」をpointerにします。矢印要素にカーソルが重なった時にポインター形状を表示する指定です。</p>



<p>class「<strong>.Arrow.left</strong>」と「<strong>.Arrow.right</strong>」は、<strong>左矢印と右矢印の位置を指定</strong>します。<br>.Arrow.leftは<strong>左側に配置</strong>され、.Arrow.rightは<strong>右側に配置</strong>されます。</p>



<p>class「.Hide」は、<strong>非表示にするためのクラス</strong>です。<br>「<strong>display</strong>」をnoneにして要素が非表示になります。</p>



<p>HTMLとCSSを実装した様子がこちらになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="1008" src="https://alicia-ing.com/wp-content/uploads/2023/06/HTML-CSS実装.gif" alt="HTML・CSSのみ導入ー移動しない。" class="wp-image-2577"/></figure>



<p>示したように、<strong>矢印を押しても横にスライドしません</strong>。<br>CSSだけで横スライドを実装することは難しく、<strong>JavaScriptの実装が必要</strong>です。</p>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h3 class="wp-block-heading">JavaScript</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>    const container = document.querySelector(&#39;.Container&#39;);
    const boxContainer = document.querySelector(&#39;.Box-Container&#39;);
    const leftArrow = document.querySelector(&#39;.Arrow.left&#39;);
    const rightArrow = document.querySelector(&#39;.Arrow.right&#39;);
    const scrollAmount = 200; // ３回で最大値まで行く程度の数値

    leftArrow.addEventListener(&#39;click&#39;, () =&gt; {
      const containerWidth = container.offsetWidth;
      const maxScrollAmount = boxContainer.offsetWidth - containerWidth;
      const currentScrollAmount = Math.abs(parseInt(boxContainer.style.transform.split(&#39;(&#39;)[1])) || 0;
      const newScrollAmount = Math.max(currentScrollAmount - scrollAmount, 0);
      boxContainer.style.transform = `translateX(-${newScrollAmount}px)`;
      updateArrowVisibility(newScrollAmount, maxScrollAmount);
    });

    rightArrow.addEventListener(&#39;click&#39;, () =&gt; {
      const containerWidth = container.offsetWidth;
      const maxScrollAmount = boxContainer.offsetWidth - containerWidth;
      const currentScrollAmount = Math.abs(parseInt(boxContainer.style.transform.split(&#39;(&#39;)[1])) || 0;
      const newScrollAmount = Math.min(currentScrollAmount + scrollAmount, maxScrollAmount);
      boxContainer.style.transform = `translateX(-${newScrollAmount}px)`;
      updateArrowVisibility(newScrollAmount, maxScrollAmount);
    });

    function updateArrowVisibility(scrollAmount, maxScrollAmount) {
      if (scrollAmount === 0) {
        leftArrow.classList.add(&#39;Hide&#39;);
      } else {
        leftArrow.classList.remove(&#39;Hide&#39;);
      }

      if (scrollAmount === maxScrollAmount) {
        rightArrow.classList.add(&#39;Hide&#39;);
      } else {
        rightArrow.classList.remove(&#39;Hide&#39;);
      }
    }</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>初めに、変数を定義します。<br>変数「container」・「boxContainer」・「leftArrow」・「rightArrow」にそれぞれクラス要素を取得します。<br>取得には、「<strong>document.querySelector(&#8216;要素&#8217;)</strong>」を使用します。</p>



<p>変数「scrollAmount」はスクロール量です。端から端まで何回で進むか各自で調整してください。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>    const container = document.querySelector(&#39;.Container&#39;);
    const boxContainer = document.querySelector(&#39;.Box-Container&#39;);
    const leftArrow = document.querySelector(&#39;.Arrow.left&#39;);
    const rightArrow = document.querySelector(&#39;.Arrow.right&#39;);
    const scrollAmount = 200; // ３回で最大値まで行く程度の数値</code></pre></div>



<p>leftArrowのクリックイベントの処理を追加します。<br>ここでは、<strong>Arrow関数</strong>を使います。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-green-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#8bc34a"><div class="tab-caption-box-label block-box-label box-label fab-graduation-cap"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Arrow関数とは？</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>アロー関数は、矢印（ =&gt;）を利用して関数の<strong>INPUTとOUTPUTを表現</strong>します。<br><strong>function式よりもコードの短縮化</strong>ができますが、<strong>制限がありすべての場面で有効</strong>ではありません。</p>



<p>構文は以下の通りです。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>要素.addEventListener(種類, () =&gt; {
//処理
});</code></pre></div>



<p>参考ページ：「<a target="_self" title="アロー関数式 - JavaScript - MDN Web Docs" href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数式 &#8211; JavaScript &#8211; MDN Web Docs</a></p>
</div></div>



<p>変数containerWidthに<strong>container要素の幅</strong>を代入します。<br>変数maxScrollAmountに、<strong>スクロール可能な要素であるboxContainerの幅から、表示領域であるcontainerの幅を引いた値</strong>を代入します。<br><br>変数currentScrollAmountboxは、<strong>Container要素の現在のスクロール量を取得</strong>します。<br>boxContainer.style.transformは、要素のスタイルプロパティtransformの値を表します。この場合、translateX()という文字列が設定されています。※()内は、pxで表現されます。<br><strong>split(&#8216;(&#8216;)[1])を使用して、translateX()の()部分を取得</strong>し、<strong>parseIntで整数値に変換</strong>します。<br>Math.absを使用して、取得したスクロール量の絶対値を計算します。<br>また、スクロール量が取得できない場合は、0を代入します。</p>



<p>変数newScrollAmountは、<strong>現在のスクロール量から指定されたscrollAmountを引いた値と0のうち、大きい値を取得</strong>します。これにより、新しいスクロール量が0未満にならないように制限されます。</p>



<p>「boxContainer.style.transform」で、boxContainer要素のスタイルプロパティtransformを更新し、<strong>新しいスクロール量を反映</strong>させます。translateX関数を使用して、<strong>水平方向に指定した負のピクセル数だけ要素を移動</strong>させます。<br>例えば、変数「newScrollAmount」が100pxであれば、カッコ内を「-${newScrollAmount}」とすることで-100px。つまり、左に100px移動することになります。</p>



<p><strong>updateArrowVisibility</strong>関数を呼び出します。この関数はスクロール量と最大スクロール量を受け取り、左右の矢印ボタンの表示/非表示を切り替えるものです。</p>



<p>同様の操作をrightArrowのクリックイベントの処理に適したようにコードを追加します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>    leftArrow.addEventListener(&#39;click&#39;, () =&gt; {
      const containerWidth = container.offsetWidth;
      const maxScrollAmount = boxContainer.offsetWidth - containerWidth;
      const currentScrollAmount = Math.abs(parseInt(boxContainer.style.transform.split(&#39;(&#39;)[1])) || 0;
      const newScrollAmount = Math.max(currentScrollAmount - scrollAmount, 0);
      boxContainer.style.transform = `translateX(-${newScrollAmount}px)`;
      updateArrowVisibility(newScrollAmount, maxScrollAmount);
    });

    rightArrow.addEventListener(&#39;click&#39;, () =&gt; {
      const containerWidth = container.offsetWidth;
      const maxScrollAmount = boxContainer.offsetWidth - containerWidth;
      const currentScrollAmount = Math.abs(parseInt(boxContainer.style.transform.split(&#39;(&#39;)[1])) || 0;
      const newScrollAmount = Math.min(currentScrollAmount + scrollAmount, maxScrollAmount);
      boxContainer.style.transform = `translateX(-${newScrollAmount}px)`;
      updateArrowVisibility(newScrollAmount, maxScrollAmount);
    });</code></pre></div>



<p>functionで、updateArrowVisibility関数のにおいて、変数「scrollAmount」が0の時は、左矢印を<strong>Hideクラスで非表示</strong>にします。同様に、スクロール量が最大の時は、<strong>右矢印を非表示</strong>にします。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>    function updateArrowVisibility(scrollAmount, maxScrollAmount) {
      if (scrollAmount === 0) {
        leftArrow.classList.add(&#39;Hide&#39;);
      } else {
        leftArrow.classList.remove(&#39;Hide&#39;);
      }

      if (scrollAmount === maxScrollAmount) {
        rightArrow.classList.add(&#39;Hide&#39;);
      } else {
        rightArrow.classList.remove(&#39;Hide&#39;);
      }
    }</code></pre></div>



<h3 class="wp-block-heading">実演</h3>



<p>以上のHTML・CSS・JavaScriptの3つを用いると、冒頭で紹介した動作ができます。<br>また、以下に実際の動作を確認できます。</p>



<!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>Document</title>
  <style>
    .Container {
      position: relative;
      width: 100%;
      overflow: hidden;
    }

    .Box-Container {
      display: flex;
      width: fit-content;
      transition: transform 0.3s ease;
      transform: translateX(0);
    }

    .Box {
      flex-shrink: 0;
      width: 300px;
      height: 200px;
      margin-right: 10px;
      border-radius: 10px;
      background-color: #ccc;
    }

    .Arrow {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 30px;
      height: 30px;
      background-color: rgba(0, 0, 0, 0.3);
      color: #fff;
      font-size: 20px;
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
    }

    .Arrow.left {
      left: 0;
    }

    .Arrow.right {
      right: 0;
    }

    .Hide {
      display: none;
    }
  </style>
</head>
<body>
  <div class="Container">
    <div class="Box-Container">
      <div class="Box"></div>
      <div class="Box"></div>
      <div class="Box"></div>
      <div class="Box"></div>
      <div class="Box"></div>
      <div class="Box"></div>
      <!-- 必要な数の.Box要素を追加 -->
    </div>
    <div class="Arrow left">&lt;</div>
    <div class="Arrow right">&gt;</div>
  </div>
</body>
</html>



<h3 class="wp-block-heading">CSSスライドショーを自動再生する方法</h3>



<p>本記事では、矢印を押して手動で横スライドさせる方法です。<br><strong>ユーザーは必ずしも矢印を押してくれるわけではなく</strong>、有益な情報を伝えられないことがあります。</p>



<p>CSSだけでスライドショーを自動再生するには<strong>animation</strong>を使用します。<br>また、JavaScriptを併用すればより柔軟な設定が可能になります。</p>



<p>以下の方法で、矢印ボタンを使わずに自動スライドを実現できます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>@keyframes slide {
  0% { transform: translateX(0); }
  33% { transform: translateX(-100%); }
  66% { transform: translateX(-200%); }
  100% { transform: translateX(0); }
}

.Box-Container {
  display: flex;
  width: 300%;
  animation: slide 9s infinite;
}
</code></pre></div>



<h4 class="wp-block-heading">CSSで無限ループのスライドショーを作る</h4>



<p>スライドショーの自動再生するにはanimationを使いますが、<br>それを無限ループさせるには、<strong>infiniteを組み合わせると良い</strong>です。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>@keyframes infinite-slide {
  0% { transform: translateX(0); }
  100% { transform: translateX(-100%); }
}

.Box-Container {
  display: flex;
  animation: infinite-slide 5s linear infinite;
}
</code></pre></div>



<p>常に画像がループし続けるスライドショーをCSSのみで作成できます。</p>



<h3 class="wp-block-heading">スマホで横スクロールをさせない方法</h3>



<p>スマホは、縦長であるため横スクロールはデザインとして優れていません。<br>そこで、<strong>PCとスマホで使い分けるためにレスポンシブル化</strong>するべきです。</p>



<p>横スクロールを無効化するには、<strong>「overflow-x」を変える</strong>必要があります。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>body {
  overflow-x: hidden;
}</code></pre></div>



<p>これにより、スマホでの意図しない横スクロールを防ぐことができます。</p>



<h3 class="wp-block-heading">意図しない横スクロールの原因と対策</h3>



<p>横スクロールは、デザインをきれいにするメリットがありますが、<br>ウェブ訪問したユーザーにアクションを求めるため、<br><strong>伝えたい情報を見せることができない</strong>場合があります。</p>



<p>そこで、意図しない横スクロールとなった場合、以下の原因を見直すべきです。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-yellow-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#ffd900"><div class="tab-caption-box-label block-box-label box-label fab-bolt"><span class="tab-caption-box-label-text block-box-label-text box-label-text">横スクロールの原因</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>width の指定ミス</li>



<li>position: absolute; による影響</li>



<li>フレックスボックスの影響</li>
</ul>
</div></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>矢印の導入はCSSでできますが、矢印を押して動作させるには、<strong>JavaScriptが必要</strong>になります。</p>



<p>ウェブデザインで矢印を作成ことは、<strong>ユーザーが直感的に操作</strong>しやすくできて、<strong>デザインのバランスが整います。</strong><br>また、矢印を押すことで、横にスライドできるということは<strong>閲覧しているユーザーにも簡単に示唆</strong>できます。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/arrow-horizon-scroll/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS】JavaScript不要、トラックパッドで横スクロール</title>
		<link>https://alicia-ing.com/programming/front-end/trackpad-arrow-horizon-scroll/</link>
					<comments>https://alicia-ing.com/programming/front-end/trackpad-arrow-horizon-scroll/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sat, 10 Jun 2023 13:21:09 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=2532</guid>

					<description><![CDATA[トラックパッドは、主にノートパソコンに搭載されているマウスの代わりになる入力装置です。 最近はマウスやトラックボールの他にトラックパッドを使用する人も良く目にします。トラックパッドが搭載されていないPCでも外付けで搭載す [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text"><strong>本記事を読むと以下の実行ができます</strong></span></div><div class="label-box-content block-box-content box-content">
<p>カーソルをのせて横スクロールすると、動く。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="1008" src="https://alicia-ing.com/wp-content/uploads/2023/06/complete1.gif" alt="トラックパッドで横スクロール" class="wp-image-7439"/></figure>
</div></div>



<p>トラックパッドは、主に<strong>ノートパソコンに搭載されているマウスの代わりになる入力装置</strong>です。</p>



<p>最近はマウスやトラックボールの他にトラックパッドを使用する人も良く目にします。<br>トラックパッドが搭載されていないPCでも外付けで搭載する人がいるぐらい普及しています。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-graduation-cap"><span class="label-box-label-text block-box-label-text box-label-text">基本的な操作（デフォルト）</span></div><div class="label-box-content block-box-content box-content">
<p>トラックパッドは<strong>４本指まで操作が可能</strong>です。</p>



<figure class="wp-block-table alignfull"><div class="scrollable-table"><table><tbody><tr><td class="has-text-align-center" data-align="center">操作</td><td class="has-text-align-center" data-align="center">動作</td></tr><tr><td class="has-text-align-center" data-align="center">１本指タップ</td><td class="has-text-align-center" data-align="center">左クリック</td></tr><tr><td class="has-text-align-center" data-align="center">２本指タップ</td><td class="has-text-align-center" data-align="center">右クリック</td></tr><tr><td class="has-text-align-center" data-align="center">３本指タップ</td><td class="has-text-align-center" data-align="center">検索ウィンドウ表示</td></tr><tr><td class="has-text-align-center" data-align="center">４本指タップ</td><td class="has-text-align-center" data-align="center">通知ウィンドウ表示</td></tr><tr><td class="has-text-align-center" data-align="center">１本指ドラッグ</td><td class="has-text-align-center" data-align="center">カーソル操作</td></tr><tr><td class="has-text-align-center" data-align="center">２本指ドラッグ</td><td class="has-text-align-center" data-align="center">スクロール</td></tr><tr><td class="has-text-align-center" data-align="center">３本指ドラッグ</td><td class="has-text-align-center" data-align="center">↑：マルチタスク・→：デスクトップ表示・←/↓：アプリ切り替え</td></tr><tr><td class="has-text-align-center" data-align="center">４本指ドラッグ</td><td class="has-text-align-center" data-align="center">↑：マルチタスク・→：デスクトップ表示・←/↓：デスクトップ切り替え</td></tr></tbody></table></div></figure>



<p>ジェスチャーの変更は、Windowsの場合はトップ画面の「スタート」から設定を選択し、「Bluetoothとデバイス」の「<strong>タッチパッド</strong>」項目から変えることができます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="996" src="https://alicia-ing.com/wp-content/uploads/2023/06/タッチパッド.webp" alt="タッチパッド" class="wp-image-2560" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/タッチパッド.webp 1917w, https://alicia-ing.com/wp-content/uploads/2023/06/タッチパッド-300x156.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/06/タッチパッド-1024x532.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/06/タッチパッド-768x399.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/06/タッチパッド-1536x798.webp 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>
</div></div>



<p>トラックパッドは、マウスやトラックボールとは異なり<strong>横スクロール</strong>ができます。<br>横スクロールは、ECサイトにて商品を紹介、比較する際に並べるウェブデザインを作成するときに便利です。</p>



<p>矢印を使えば操作デバイスに依存せずに、横スライドを実現することができます。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>矢印で横スライドするデザインを紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/arrow-horizon-scroll/" title="【CSS/JS】矢印のボタンで横スクロールするスライドショー" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/06/arrow-horizon-scroll-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/arrow-horizon-scroll-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/arrow-horizon-scroll-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/arrow-horizon-scroll-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS/JS】矢印のボタンで横スクロールするスライドショー</div><div class="blogcard-snippet internal-blogcard-snippet">CSSとJavaScript(JS)を組み合わせた横スクロール可能なスライドショー。サイドに配置した矢印やボタンを活用して、htmlで実装した画像を横にスライドさせてユーザーに優れた視覚的な体験と直感的な操作感を提供するデザインです。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.10</div></div></div></div></a>
</div>



<p>本記事では、トラックパッドを使って横スクロールするウェブデザイン(HTML/CSS)を紹介します。</p>



<p>横スクロールは、矢印で横にスライドする構成よりも作成しやすいのでおすすめです。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text"><strong>本記事は次の人におすすめ</strong></span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>トラックパッドで横スクロールすると動く。</li>



<li>ウェブデザインを学びたい。</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">横スクロール</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="1000" src="https://alicia-ing.com/wp-content/uploads/2023/06/横スクロール_0000.webp" alt="横スクロールについて" class="wp-image-2561" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/横スクロール_0000.webp 1920w, https://alicia-ing.com/wp-content/uploads/2023/06/横スクロール_0000-300x156.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/06/横スクロール_0000-1024x533.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/06/横スクロール_0000-768x400.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/06/横スクロール_0000-1536x800.webp 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure>



<p>トラックパッド横スクロールを可能にすることで、縦スクロールだけでは画面上に収まりきらない<strong>大量のコンテンツを表示</strong>する際に特に役立ちます。</p>



<p>例えば、水平方向に長い画像ギャラリーやデータのテーブルを表示する場合、横スクロールはスペースの効率的な利用を可能にします。</p>



<p>特に<strong>画面のサイズが小さいスマホ</strong>は、横向きのデザインは扱いやすく、トラックパッドのようにタッチスクリーンを採用しているので非常に扱いやすいです。</p>



<p>一方で、 横スクロールは一般的な縦スクロールに比べて、ユーザーの馴染みが少ない操作方法で、操作のヒントやガイドを提供する必要があります。</p>



<p>また、<strong>レスポンシブデザイン</strong>（スマホでのデザイン）の考慮しなければいけません。</p>



<h3 class="wp-block-heading">HTML</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>  &lt;div class=&quot;container&quot;&gt;
    &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;box&quot;&gt;&lt;/div&gt;
    &lt;!-- 必要な数の.box要素を追加 --&gt;
  &lt;/div&gt;</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>HTMLコードで、6つのbox要素を含むContainer要素を作成しています。</p>



<p>class「Container」は横スクロールを可能な要素です。<br>class「Box」はclass「Container」に配置される要素を表します。</p>



<h3 class="wp-block-heading">CSS</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>    .Container {
      display: flex;
      overflow-x: scroll;
      width: 100%;
    }

    .Box {
      flex-shrink: 0;
      width: 300px;
      height: 200px;
      margin-right: 10px;
      border-radius: 10px;
      background-color: #ccc;
    }

    /* スクロールバー非表示 */
    .Container::-webkit-scrollbar {
      display: none;
    }</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>初めに、class「<strong>.Container</strong>」の構成します。</p>



<p>「display: flex;」: コンテナを<strong>フレックスボックス</strong>として表示します。<br>これにより横並びを作成します。<br>「overflow-x: scroll;」: コンテナの<strong>横方向にスクロールバーを表示</strong>します。<br>コンテナ内のコンテンツが<strong>コンテナの幅を超えた場合にスクロールが可能</strong>になります。<br>「width: 100%;」: コンテナの幅を<strong>親要素の幅</strong>に合わせます。</p>



<p>つづいて、class「<strong>.Box</strong>」の構成します。</p>



<p>「flex-shrink: 0;」: ボックス要素の収縮を無効にします。これにより、ボックスの幅がコンテナの幅を超えた場合でも収縮しません。<br>「width: 300px;」: <strong>ボックス要素の幅</strong>を300ピクセルに設定します。<br>「height: 200px;」:<strong> ボックス要素の高さ</strong>を200ピクセルに設定します。<br>「margin-right: 10px;」: ボックス要素の右側に10ピクセルの<strong>マージン</strong>を追加します。<br>「border-radius: 10px;」: ボックス要素の角を10ピクセルの<strong>半径で丸めます</strong>。<br>「background-color: #ccc;」: ボックス要素の<strong>背景色を灰色</strong>（#ccc）に設定します。</p>



<p>最後に、<strong>.Container::-webkit-scrollbar:</strong>で、スクロールバーを非表示にします。</p>



<p>「display: none;」: <strong>スクロールバーを非表示</strong>にします。<br>※このコードはWebkitベースのブラウザ（Google Chrome、Safariなど）でのみ機能します。</p>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h3 class="wp-block-heading">実演</h3>



<p>それでは、本コードを理解したところで動作確認します。<br>HTMLとCSSを稼働させると以下のように動作します。</p>



<!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>Document</title>
  <style>
    .Container {
      display: flex;
      overflow-x: scroll;
      width: 100%;
    }

    .Box {
      flex-shrink: 0;
      width: 300px;
      height: 200px;
      margin-right: 10px;
      border-radius: 10px;
      background-color: #ccc;
    }

    /* スクロールバー非表示 */
    .Container::-webkit-scrollbar {
      display: none;
    }
  </style>
</head>
<body>
  <div class="Container">
    <div class="Box"></div>
    <div class="Box"></div>
    <div class="Box"></div>
    <div class="Box"></div>
    <div class="Box"></div>
    <div class="Box"></div>
    <!-- 必要な数の.box要素を追加 -->
  </div>
</body>
</html>



<h2 class="wp-block-heading">まとめ</h2>



<p>横スクロールはコンテンツの比較をするときに非常にユーザビリティに優れているので、<strong>ECサイト等に導入</strong>するときに非常におすすめです。</p>



<p>また、スマホのように画面のサイズデバイスでは、<strong>タッチスクリーンを採用横向きのデザインは扱いやすい</strong>ですが、レスポンシブデザイン（スマホでのデザイン）の考慮すること、<strong>横スクロールは一般的な縦スクロールに比べてユーザーにとって馴染みが少ない操作方法</strong>で、操作のヒントやガイドを提供する必要があります。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">付録．ソースコード（一括）</h2>



<p>本記事で扱ったコードをHTMLで一括で記述したものです。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;Document&lt;/title&gt;
  &lt;style&gt;
    .Container {
      display: flex;
      overflow-x: scroll;
      width: 100%;
    }

    .Box {
      flex-shrink: 0;
      width: 300px;
      height: 200px;
      margin-right: 10px;
      border-radius: 10px;
      background-color: #ccc;
    }

    /* スクロールバー非表示 */
    .Container::-webkit-scrollbar {
      display: none;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div class=&quot;Container&quot;&gt;
    &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;Box&quot;&gt;&lt;/div&gt;
    &lt;!-- 必要な数の.box要素を追加 --&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/trackpad-arrow-horizon-scroll/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS/JavaScript】スクロールに合わせて画像切り替え</title>
		<link>https://alicia-ing.com/programming/front-end/image-switching-scroll/</link>
					<comments>https://alicia-ing.com/programming/front-end/image-switching-scroll/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sat, 10 Jun 2023 13:00:18 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=2530</guid>

					<description><![CDATA[Appleの「Airpots pro」やUnityのホームページなどで、スクロールに応じて背景が動くパララックスがあります。ウェブデザインはユーザーの目を引きやすいのでスクロールで画像切り替えできる動きはとてもおすすめで [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text"><strong>本記事を読むと以下の実行ができます</strong></span></div><div class="label-box-content block-box-content box-content">
<p>スクロールすると画像が動く。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="945" src="https://alicia-ing.com/wp-content/uploads/2023/06/Complete-scroll.gif" alt="スクロールすると背景が動く" class="wp-image-7250"/></figure>
</div></div>



<p>Appleの「<a target="_self" href="https://www.apple.com/jp/airpods-pro/">Airpots pro</a>」や<a target="_self" href="https://unity.com/ja">Unity</a>のホームページなどで、<strong>スクロールに応じて背景が動くパララックス</strong>があります。ウェブデザインはユーザーの目を引きやすいのでスクロールで画像切り替えできる動きはとてもおすすめです。</p>



<p>本記事では、スクロールに応じて、背景が変化するウェブデザインを作成します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>人目を引くwebデザインを作成したい。</li>



<li>スクロールすると、背景が動く（画像が切り替わる）パララックスを作成したい。</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">スクロールで画像切り替え</h2>



<p>本パララックス作成の着想は、パラパラ漫画からきています。</p>



<p>ご存じの通りパラパラ漫画は、<strong>1枚1枚の絵や画像をつなげて映像のように見える</strong>ものです。<br>アニメで絵が動いていてみえるのは、1枚1枚アニメーターの方が手掛けた絵をつなげているためです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画.webp" alt="パラパラ漫画" class="wp-image-2642" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画.webp 1280w, https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/パラパラ漫画-320x180.webp 320w" sizes="(max-width: 1280px) 100vw, 1280px" /></figure>



<p>本製作でもパラパラ漫画の<strong>画像を複数用意</strong>して、スクロールするごとに画像を変化させて背景を動かします。</p>



<p>つなげる画像は「AvUtil」の「連番BMP」を使用すれば、だれでも簡単に作成することができます。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>aviUtlで画像出力を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/creative/aviutl-material/" title="【AviUtl】動画・画像（GIF・BMP・Webp）出力" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2022/12/aviutl-material-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2022/12/aviutl-material-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2022/12/aviutl-material-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2022/12/aviutl-material-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【AviUtl】動画・画像（GIF・BMP・Webp）出力</div><div class="blogcard-snippet internal-blogcard-snippet">AviUtlはデフォルトで、GIFを出力できないので、「Direct GIF Export 2」というプラグインを導入します。GIFは、JPEGやPNGにできない画像をアニメーション化にできることが何よりも強みを持っています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.11.03</div></div></div></div></a>
</div>



<h2 class="wp-block-heading">スクロールに合わせて動く画像を作成</h2>



<p>スクロールに合わせて動く画像は動画を１枚の画像としてとらえます。動画から画像を作成するには、動画をAvUtilに入れて画像を出力することがもっとも手っ取り早いです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1909" height="1010" src="https://alicia-ing.com/wp-content/uploads/2023/06/AvUtil画面.webp" alt="AvUtilでアニメーションづくり" class="wp-image-2644" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/AvUtil画面.webp 1909w, https://alicia-ing.com/wp-content/uploads/2023/06/AvUtil画面-300x159.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/06/AvUtil画面-1024x542.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/06/AvUtil画面-768x406.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/06/AvUtil画面-1536x813.webp 1536w" sizes="(max-width: 1909px) 100vw, 1909px" /></figure>



<p>本記事では、以下のような動きをする画像を作成します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="945" src="https://alicia-ing.com/wp-content/uploads/2023/06/demonstration-avutil.gif" alt="動作例" class="wp-image-7252"/></figure>



<p>「ファイル」から「プラグイン出力」の「連番bmp」にて画像を出力します。</p>



<p>出力した画像は、管理のためにデスクトップ直下ではなく、<strong>フォルダー内に保管</strong>してください。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1924" height="1021" src="https://alicia-ing.com/wp-content/uploads/2023/06/フォルダーに保存.webp" alt="出力した画像" class="wp-image-2645" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/フォルダーに保存.webp 1924w, https://alicia-ing.com/wp-content/uploads/2023/06/フォルダーに保存-300x159.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/06/フォルダーに保存-1024x543.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/06/フォルダーに保存-768x408.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/06/フォルダーに保存-1536x815.webp 1536w" sizes="(max-width: 1924px) 100vw, 1924px" /></figure>



<p>ここまでで、画像を用意してきたので、ここからはコードを書いていきます。<br>HTML,CSS,JavaScriptはいずれも子のフォルダー内に書いてください。</p>



<p>画像とコードの保存場所が別々では、<strong>パスが長くなり挙動が想定通りにならない可能性</strong>があります。</p>



<p>また、AvUtilでは<strong>出力する画像形式は文字通りbmp</strong>です。</p>



<p>bmpは非圧縮形式であるため高品質な画像表現ができますが、<strong>サイズは他の形式に比べて大きくなりやすい</strong>です。</p>



<p>したがって、画像形式を変換することをおすすめします。</p>



<p>画像形式は<strong>Pythonのpillowとosライブラリ</strong>を使用することで、変換することができます。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>画像の変換について紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/python/image-conversion/" title="【Python】pngやjpgの画像をwebpに一括で画像変換" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/06/image-conversion-1-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/image-conversion-1-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/image-conversion-1-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/image-conversion-1-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Python】pngやjpgの画像をwebpに一括で画像変換</div><div class="blogcard-snippet internal-blogcard-snippet">pngやjpeg、bmpを画像変換するためにフリーソフトを探しても求めるものがないときはPythonのpillow,osモジュールで一括でwebpにします。自作ならwindows、macの対応を気にせず、応用でheicやavifもできます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<h3 class="wp-block-heading">HTML</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>  &lt;div class=&quot;container&quot;&gt;
    &lt;img src=&quot;image_0000.jpg&quot; alt=&quot;Image&quot; class=&quot;main-image&quot;&gt;
    &lt;img src=&quot;&quot; alt=&quot;Alternate Image&quot; class=&quot;alternate-image&quot;&gt;
  &lt;/div&gt;</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>class「container」で画像を含むコンテナを表します。<br>&lt;img&gt;要素で、<strong>image_0000.jpg</strong>ファイルを指定します。</p>



<p>また、class属性を「<strong>main-image</strong>」で指定します。<br>もう一方の&lt;img&gt;要素は、<strong>src属性を空の値が指定している</strong>ため画像が表示されません。<br>class属性はalternate-imageというクラスが指定します。</p>



<h3 class="wp-block-heading">CSS</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code> .container {
      width: 50%;
      height: 50%;
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      overflow: hidden;
    }

    .main-image {
      position: relative;
      display: block;
      max-width: 100%;
    }

    .alternate-image {
      display: none; /* 最初は非表示にする */
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
    }</code></pre></div>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h3 class="wp-block-heading">解説</h3>



<p>Class「body」は<strong>HTML文書の要素に対するスタイルを指定</strong>しています。<br>「height」を 20000pxにします。<br>これにより、適当な高さが設定され、スクロールが有効になります。</p>



<p>Class「.container」は<strong>bodyに対するスタイルを指定</strong>しています。<br>「width」・「height」を50%にします。<strong>幅と高さを親要素の50%に設定</strong>しています。（実際ウェブサイトに導入するときは100%にしてください。）<br>「position」をfixedにします。要素の<strong>位置を固定位置に設定</strong>しています。<br>「top」を50%にします。<strong>上端をビューポートの垂直中央</strong>に配置します。<br>「left」を 50%にします。<strong>左端をビューポートの水平中央</strong>に配置します。<br>「transform」をtranslate(-50%, -50%)にします。<br><strong>水平方向に50%、垂直方向に50%移動</strong>させます。<br>これにより、<strong>要素の中心がビューポートの中央に配置</strong>されます。<br>「overflow」をhiddenにします。<br> .container要素の内容が<strong>親要素の範囲を超えた場合、表示範囲内に収めるために内容を非表示</strong>にします。</p>



<p>Class「.main-image」は<strong>image_0000.jpg（初めの画像）に対するスタイルを指定</strong>しています。「position」は relativeにします。<strong>親要素(.container)に対して相対的な位置に配置</strong>します。<br>「display」はblockにします。 .main-image要素を<strong>ブロックレベル要素として表示</strong>します。<br>「max-width」は 100%にします。<strong>最大幅を親要素の幅に合わせます</strong>。<br>これにより、画像が親要素内に収まるようになります。</p>



<p>Class「.alternate-image」は<strong>&#8220;Alternate Image&#8221;対するスタイルを指定</strong>しています。<br>「display」は noneにします。.alternate-image要素を<strong>非表示</strong>にします。<br>初期状態ではこの要素は表示されません。<br>「position」はabsoluteにします。<strong>親要素に対して絶対的な位置に配置</strong>します。<br>「top」は 0にします。<strong>上端を親要素の上端に配置</strong>します。<br>「left」は 0にします。<strong>左端を親要素の左端に配置</strong>します。<br>「width」は100%にします。<strong>.alternate-image要素の幅を親要素の幅に合わせます</strong>。<br>これにより、要素が親要素全体を占めるようになります。</p>



<h3 class="wp-block-heading">JavaScript</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>window.addEventListener(&#39;DOMContentLoaded&#39;, function() {
  // DOMのロードが完了した時点で実行される処理

  var container = document.querySelector(&#39;.container&#39;);
  var mainImage = document.querySelector(&#39;.main-image&#39;);
  var alternateImage = document.querySelector(&#39;.alternate-image&#39;);
  var currentImageIndex = 0; // 現在の画像インデックスの初期値を0に設定
  var scrollOffset = 0;

  function loadNextImage() {
    // 次の画像をロードする関数

    var paddedNumber = currentImageIndex.toString().padStart(4, &#39;0&#39;);
    alternateImage.src = &#39;image_&#39; + paddedNumber + &#39;.jpg&#39;;
    alternateImage.alt = &#39;Alternate Image &#39; + paddedNumber;
  }

  function scrollHandler() {
    // スクロールイベントを処理する関数

    var containerRect = container.getBoundingClientRect();
    var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;
    var scrollDiff = scrollPosition - scrollOffset;

    console.log(&#39;Scroll Position:&#39;, scrollPosition);

    if (scrollDiff &gt;= 45) {
      // スクロール量が45px以上の場合（正の方向にスクロール）

      scrollOffset = scrollPosition;
      if (currentImageIndex &lt;= 18) { // 画像の枚数（最後の画像の数字-1）
        currentImageIndex++;
        loadNextImage();
      }
    } else if (scrollDiff &lt;= -45) {
      // スクロール量が-45px以下の場合（負の方向にスクロール）

      currentImageIndex = Math.max(currentImageIndex - 1, 0);
      var paddedNumber = currentImageIndex.toString().padStart(4, &#39;0&#39;);
      alternateImage.src = &#39;image_&#39; + paddedNumber + &#39;.jpg&#39;;
      alternateImage.alt = &#39;Alternate Image &#39; + paddedNumber;
      scrollOffset = scrollPosition;
    }

    if (scrollPosition &gt; containerRect.top) {
      // スクロール位置がコンテナの上端を超えた場合

      mainImage.style.display = &#39;none&#39;;
      alternateImage.style.display = &#39;block&#39;;
    } else {
      mainImage.style.display = &#39;block&#39;;
      alternateImage.style.display = &#39;none&#39;;
    }
  }

  window.addEventListener(&#39;scroll&#39;, scrollHandler);
  loadNextImage();
});</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>初めに、DOMContentLoadedイベントをHTMLドキュメントの解析が完了し、<br>DOMの構築が完了した時点で発生するイベントを作成します。</p>



<p>このイベントに対してコールバック関数が登録されています。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-graduation-cap"><span class="label-box-label-text block-box-label-text box-label-text">DOMとは？</span></div><div class="label-box-content block-box-content box-content">
<p><strong>DOMとは、Webドキュメントのプログラミングインターフェイス</strong>です。</p>



<p>プログラムがドキュメントの構造、スタイル、コンテンツを変更できるように<br>ページを表すときにDOMを使用します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>ドキュメントオブジェクトモデル (DOM) はウェブ文書のためのプログラミングインターフェイスです。ページを表現するため、プログラムが文書構造、スタイル、内容を変更することができます。 DOM は文書をノードとオブジェクトで表現します。そうやって、プログラミング言語をページに接続することができます。</p>



<p>ウェブページは、ブラウザーのウィンドウに表示したり、 HTML ソースとして表示したりすることが可能な文書です。どちらの場合も同じ文書であり、ドキュメントオブジェクトモデル (DOM) で操作することができます。 DOM はウェブページの完全なオブジェクト指向の表現で、 JavaScript のようなスクリプト言語から変更することができます。</p>
<cite><a target="_self" href="https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Introduction">DOM の紹介 &#8211; Web API &#8211; MDN Web Docs &#8211; Mozilla</a></cite></blockquote>
</div></div>



<p>変数「container」、「mainImage 」、「alternateImage」にそれぞれのクラス要素を取得します。<br>取得には、「document.querySelector(‘要素’)」を使います。<br><br>変数「currentImageIndex」を0にします。<br> <strong>現在表示されている画像のインデックスを保持する変数</strong>です。</p>



<p>変数「scrollOffset」を 0にします。<br><strong>前回のスクロール位置を保持する変数</strong>です。</p>



<p>function loadNextImage() {…}は、<strong>次の画像をロードするための関数</strong>です。<br>現在の画像インデックスを元に、alternateImage要素のsrc属性とalt属性を設定します。</p>



<p>function scrollHandler() {…}は、<strong>スクロールイベントを処理するための関数</strong>です。<br>スクロール位置やスクロール量を計算し、必要な処理を実行します。</p>



<p>scrollイベント「window.addEventListener(&#8216;scroll&#8217;, scrollHandler)」で、scrollHandler関数をイベントリスナーとして登録します。<br>つまり、<strong>スクロールイベントが発生した時にscrollHandler関数が実行</strong>されます。</p>



<p>loadNextImage()は、<strong>初期画像をロードするために、loadNextImage関数を実行</strong>しています。</p>



<h2 class="wp-block-heading">実演</h2>



<p>それでは、実際に動作を確認します。</p>



<p>マウスカーソルを上にしてスクロールしても動きますが<strong>動作がカクカク</strong>です。<br><strong>スクロールバーで操作するとスムーズ</strong>に動きます。</p>



<div class="Container">
<iframe src="https://alicia-ing.com/wp-content/uploads/Webpage/Simulation/image-switching-scroll/sample.html" frameborder="0"></iframe>
</div>



<h2 class="wp-block-heading">ソースコード（一括）</h2>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;!-- スクロールyに応じて画像切り替え --&gt;
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ja&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;style&gt;
    body {
      height: 2000px; /* 適当な高さを設定し、スクロールを有効にする */
    }

    .container {
      width: 50%;
      height: 50%;
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      overflow: hidden;
    }

    .main-image {
      position: relative;
      display: block;
      max-width: 100%;
    }

    .alternate-image {
      display: none; /* 最初は非表示にする */
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
    }
  &lt;/style&gt;
  &lt;title&gt;Document&lt;/title&gt;
  &lt;script&gt;
window.addEventListener(&#39;DOMContentLoaded&#39;, function() {
  // DOMのロードが完了した時点で実行される処理

  var container = document.querySelector(&#39;.container&#39;);
  var mainImage = document.querySelector(&#39;.main-image&#39;);
  var alternateImage = document.querySelector(&#39;.alternate-image&#39;);
  var currentImageIndex = 0; // 現在の画像インデックスの初期値を0に設定
  var scrollOffset = 0;

  function loadNextImage() {
    // 次の画像をロードする関数

    var paddedNumber = currentImageIndex.toString().padStart(4, &#39;0&#39;);
    alternateImage.src = &#39;image_&#39; + paddedNumber + &#39;.jpg&#39;;
    alternateImage.alt = &#39;Alternate Image &#39; + paddedNumber;
  }

  function scrollHandler() {
    // スクロールイベントを処理する関数

    var containerRect = container.getBoundingClientRect();
    var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;
    var scrollDiff = scrollPosition - scrollOffset;

    console.log(&#39;Scroll Position:&#39;, scrollPosition);

    if (scrollDiff &gt;= 45) {
      // スクロール量が45px以上の場合（正の方向にスクロール）

      scrollOffset = scrollPosition;
      if (currentImageIndex &lt;= 18) { // 画像の枚数（最後の画像の数字-1）
        currentImageIndex++;
        loadNextImage();
      }
    } else if (scrollDiff &lt;= -45) {
      // スクロール量が-45px以下の場合（負の方向にスクロール）

      currentImageIndex = Math.max(currentImageIndex - 1, 0);
      var paddedNumber = currentImageIndex.toString().padStart(4, &#39;0&#39;);
      alternateImage.src = &#39;image_&#39; + paddedNumber + &#39;.jpg&#39;;
      alternateImage.alt = &#39;Alternate Image &#39; + paddedNumber;
      scrollOffset = scrollPosition;
    }

    if (scrollPosition &gt; containerRect.top) {
      // スクロール位置がコンテナの上端を超えた場合

      mainImage.style.display = &#39;none&#39;;
      alternateImage.style.display = &#39;block&#39;;
    } else {
      mainImage.style.display = &#39;block&#39;;
      alternateImage.style.display = &#39;none&#39;;
    }
  }

  window.addEventListener(&#39;scroll&#39;, scrollHandler);
  loadNextImage();
});
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div class=&quot;container&quot;&gt;
    &lt;img src=&quot;image_0000.jpg&quot; alt=&quot;Image&quot; class=&quot;main-image&quot;&gt;
    &lt;img src=&quot;&quot; alt=&quot;Alternate Image&quot; class=&quot;alternate-image&quot;&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/image-switching-scroll/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS】画像に文字と画像を重ねる。画像をホバーで非表示にする</title>
		<link>https://alicia-ing.com/programming/front-end/overlay-text-image/</link>
					<comments>https://alicia-ing.com/programming/front-end/overlay-text-image/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Mon, 06 Mar 2023 07:26:44 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=894</guid>

					<description><![CDATA[ユーザーに画像をクリックして別ページに移動してもらいたいことがあるかもしれません。 画像にURLを添付して、別のページに誘導しようとしても、ウェブサイトについて何も知らない閲覧者にとって、その画像にリンクがあることはわか [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>ユーザーに<strong>画像をクリックして別ページに移動</strong>してもらいたいことがあるかもしれません。</p>



<p>画像にURLを添付して、別のページに誘導しようとしても、ウェブサイトについて何も知らない閲覧者にとって、その<strong>画像にリンクがある</strong>ことはわかりません。</p>



<p>訪問者にとって、工夫がされていないと<strong>画像にリンクが貼っているということは気づかれません</strong>。</p>



<p>さらに、マウスカーソルを画像に重ねる（ホバー）すると、文字を出現させたり、消したりすれば、省スペースでのwebデザインが可能となり、<strong>自由度の高いウェブデザイン</strong>が作成できます。</p>



<p>本記事では、 CSSを使って<strong>画像の上に文字や新たな画像を重ねるデザイン</strong>を紹介します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>ウェブデザインをしている人</li>



<li>positionの「absolute」と「relative」を使えるようになりたい</li>



<li>opacityで表示、非表示を知りたい</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">画像の配置</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/10/arrange.webp" alt="画像の配置について" class="wp-image-3758" srcset="https://alicia-ing.com/wp-content/uploads/2023/10/arrange.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/10/arrange-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/10/arrange-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/10/arrange-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/10/arrange-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>Webサイトでは、文字での紹介も大切ですが、画像がある方がより<strong>読者の理解を高める効果</strong>があります。結果的に質の高い記事が完成します。</p>



<p>画面上に画像を表示するには、<strong>&lt;img&gt;要素</strong>を使います。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;img src=&quot;画像のファイルパス・URL&quot; alt=&quot;代替テキスト&quot;&gt;</code></pre></div>



<p><strong>src属性</strong>は、画像ファイルのパスまたはURLを指定します。<br><strong>alt属性</strong>は、 画像が読み込まれない場合やスクリーンリーダーなどを使用する場合に表示される代替テキストを指定します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-graduation-cap"><span class="label-box-label-text block-box-label-text box-label-text">alt属性の必要性</span></div><div class="label-box-content block-box-content box-content">
<p><strong>alt属性が必要か否かという議論</strong>は、ブロガー内でよく議論されています。<br>アドセンスに合格するには、altが必要という人もいますが、個人的意見はあまり関係ないです。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>アドセンス合格方法を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/creative/site-management/pass-adsence/" title="【アドセンス】有用性の低いコンテンツで不合格になる原因を攻略する" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/05/pass-adsence-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/05/pass-adsence-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/05/pass-adsence-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/05/pass-adsence-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【アドセンス】有用性の低いコンテンツで不合格になる原因を攻略する</div><div class="blogcard-snippet internal-blogcard-snippet">Google Adsenceに「有用性の低いコンテンツ」で何度も審査に通らず不合格になった経験から現在のアドセンスに合格するための操作を紹介。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<p>ただし、<strong>クローラーは、画像の内容を理解することができない</strong>です。</p>



<p>そこでalt属性で画像の内容を説明しておけば、<br>画像と記事の関係性を追求されて評価の高い記事が完成します。</p>



<p>文字から画像を検索する際に、<br>alt属性が参考にされるともいわれているので、<strong>PV数が上がる</strong>期待も高まります。</p>
</div></div>



<h2 class="wp-block-heading">CSSで画像に文字や画像を重ねる</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/10/overlap.webp" alt="文字と画像の重なりについて" class="wp-image-3759" srcset="https://alicia-ing.com/wp-content/uploads/2023/10/overlap.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/10/overlap-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/10/overlap-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/10/overlap-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/10/overlap-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>画像にテキストや別の画像を重ねて、<strong>メッセージを強調し読者の注意を引き</strong>、ユーザーエンゲージメントの向上できます。</p>



<p>視覚的なコンテンツに対する説明や情報を提供により、ユーザーが画像の内容や意味を理解しやすくなり、<strong>情報を伝える効果が向上</strong>します。</p>



<p>特に、統計データやチャート、グラフなどの情報に使用することが有用です。</p>



<p>さらに視覚的な魅力を高めることができ、<strong>洗練されたデザインを作成</strong>できます。</p>



<p>スマホやタブレットでは、画面のサイズ上PCとは別のデザインを作らなければいけません。<br>その際に、CSSを使用して画像とテキストを組み合わせると、デバイスの異なる画面サイズに合わせて要素を調整しやすくなり、<strong>レスポンシブデザインをサポート</strong>できます。</p>



<p>個性を出す画像を使ったウェブデザインで「<strong>スクロールすると、背景が変わる</strong>」というものがあります。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>スクロールで画像を変化させるパラグラフを紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/front-end/image-switching-scroll/" title="【CSS/JavaScript】スクロールに合わせて画像切り替え" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS/JavaScript】スクロールに合わせて画像切り替え</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScriptでスクロール時に背景画像を切り替え、パララックス効果を実現します。スクロール位置に基づいて画像が滑らかに変化し、ページの動きに合わせて背景が移動します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<h3 class="wp-block-heading">隠しリンクはNG</h3>



<p>デザインに夢中になっていると<strong>意図せず隠しリンクを設置している</strong>ことになるかもしれません。</p>



<p>隠しリンクは、文字通りリンクを含むテキストを画像と重ねて背後に設置したり、背景と同色にしたり、<strong>フォントのサイズを0</strong>にしてユーザーを別ページに飛ばすことです。</p>



<p>引用でもあるように、これらの行為は<strong>ガイドライン違反</strong>になりますので、しないように徹底してください。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>隠しリンクとは、<strong>ユーザーがページを閲覧したときに表示されない（見えないようにしている）リンク</strong>のことです。</p>



<p>画面上では容易に見えませんが、検索エンジンにだけ認識されるようにリンクを設置しています。</p>



<p>隠しリンクはスパム行為の一種で、検索エンジンのクローラーを騙して検索結果を操作するのが目的です。</p>



<p>現在はGoogleガイドラインのペナルティ対象となっており、発見されれば該当のページが検索結果に表示されなくなる可能性があります。</p>



<p>隠しリンクとみなされれば、たとえ意図したものではなくても、ペナルティの対象となるので要注意です。自分のサイトに隠しリンクがないか、適宜チェックしておきましょう。</p>
<cite><a target="_self" href="https://gmotech.jp/semlabo/seo/blog/links-hidden/" title="隠しリンクとは？SEOへの影響や見つけ方・対処方法を解説">隠しリンクとは？SEOへの影響や見つけ方・対処方法を解説</a></cite></blockquote>



<h2 class="wp-block-heading">画像に重ね文字を表示</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/10/letter.webp" alt="文字の配置について" class="wp-image-3760" srcset="https://alicia-ing.com/wp-content/uploads/2023/10/letter.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/10/letter-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/10/letter-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/10/letter-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/10/letter-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>画像を配置して、その上に文字を右上、右下、左上、左下、中央に配置します。</p>



<h3 class="wp-block-heading">HTML</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;body&gt;
  &lt;div class=&quot;container&quot;&gt;
    &lt;img src=&quot;img3.jpg&quot; alt=&quot;画像の上に文字を置く&quot;&gt;
    &lt;div class=&quot;text-right-top&quot;&gt;右上&lt;/div&gt;
    &lt;div class=&quot;text-left-top&quot;&gt;左上&lt;/div&gt;
    &lt;div class=&quot;text-right-bottom&quot;&gt;右下&lt;/div&gt;
    &lt;div class=&quot;text-left-bottom&quot;&gt;左下&lt;/div&gt;
    &lt;div class=&quot;text-center&quot;&gt;中央&lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre></div>



<h3 class="wp-block-heading">CSS</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>  &lt;style&gt;
    .container {
      position: relative;
    }

    .text-right-top,
    .text-left-top,
    .text-right-bottom,
    .text-left-bottom,
    .text-center {
      position: absolute;
      padding: 5px; 
      color: white;
    }

    .text-right-top {
      top: 0;
      right: 0;
    }

    .text-left-top {
      top: 0;
      left: 0;
    }

    .text-right-bottom {
      bottom: 0;
      right: 0;
    }

    .text-left-bottom {
      bottom: 0;
      left: 0;
    }

    .text-center {
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
  &lt;/style&gt;</code></pre></div>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h3 class="wp-block-heading">解説</h3>



<p>.container クラスは、<strong>画像とテキストのコンテナ要素</strong>を指します。<br>position: relative; でコンテナ要素を<strong>相対的な位置付けの基準</strong>として設定します。<br>これにより、内部の絶対位置要素（テキスト要素）がコンテナ内で位置を制御できます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.container {
 position: relative;
}</code></pre></div>



<p>.text-right-top, .text-left-top, .text-right-bottom, .text-left-bottom, .text-center の5つのクラスは、テキスト要素を指します。これらのテキスト要素は position: absolute; スタイルで配置、color プロパティで白いテキストカラーが指定しています。また、padding スタイルをオプションで設定することで、テキストのパディングを追加できます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.text-right-top,
.text-left-top,
.text-right-bottom,
.text-left-bottom,
.text-center {
  position: absolute;
  padding: 5px;
  color: white;
}</code></pre></div>



<p>text-right-top クラスは、右上に配置するテキスト要素に適用しています。<br>top: 0; と right: 0;で<strong>テキストを画像の右上</strong>に配置します。</p>



<p>同様に、.text-left-top, .text-right-bottom, .text-left-bottom, .text-center クラスは、<strong>それぞれ左上、右下、左下、中央に配置するテキスト要素に対して位置を指定</strong>しています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.text-right-top {
  top: 0;
  right: 0;
}

.text-left-top {
  top: 0;
  left: 0;
}

.text-right-bottom {
  bottom: 0;
  right: 0;
}

.text-left-bottom {
  bottom: 0;
  left: 0;
}

.text-center {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}</code></pre></div>



<h3 class="wp-block-heading">実演</h3>



<p>ここまで紹介したコードを実行すると以下のように右上・右下・左上・左下・中央と文字が配置されます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="337" src="https://alicia-ing.com/wp-content/uploads/2023/10/Complete01-1024x337.webp" alt="実行例。" class="wp-image-3761" srcset="https://alicia-ing.com/wp-content/uploads/2023/10/Complete01-1024x337.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/10/Complete01-300x99.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/10/Complete01-768x253.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/10/Complete01-1536x505.webp 1536w, https://alicia-ing.com/wp-content/uploads/2023/10/Complete01.webp 1913w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">ソースコード（一括）</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;style&gt;
    .container {
      position: relative;
    }

    .text-right-top,
    .text-left-top,
    .text-right-bottom,
    .text-left-bottom,
    .text-center {
      position: absolute;
      padding: 5px;
      color: white;
    }

    .text-right-top {
      top: 0;
      right: 0;
    }

    .text-left-top {
      top: 0;
      left: 0;
    }

    .text-right-bottom {
      bottom: 0;
      right: 0;
    }

    .text-left-bottom {
      bottom: 0;
      left: 0;
    }

    .text-center {
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;div class=&quot;container&quot;&gt;
    &lt;img src=&quot;img3.jpg&quot; alt=&quot;画像の説明&quot;&gt;
    &lt;div class=&quot;text-right-top&quot;&gt;右上&lt;/div&gt;
    &lt;div class=&quot;text-left-top&quot;&gt;左上&lt;/div&gt;
    &lt;div class=&quot;text-right-bottom&quot;&gt;右下&lt;/div&gt;
    &lt;div class=&quot;text-left-bottom&quot;&gt;左下&lt;/div&gt;
    &lt;div class=&quot;text-center&quot;&gt;中央&lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div>



<h2 class="wp-block-heading">カーソルを合わせると別画像を表示</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/10/hover.webp" alt="ホバーについて" class="wp-image-3762" srcset="https://alicia-ing.com/wp-content/uploads/2023/10/hover.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/10/hover-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/10/hover-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/10/hover-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/10/hover-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>画像の上に別の画像を重ねて、<strong>カーソルを画像に載せること（ホバー）</strong>で画像を切り替えます。</p>



<p>画像の大きさは<strong>同じにすることでずれることなく配置</strong>できます。</p>



<h3 class="wp-block-heading">HTML</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;body&gt;
    &lt;div class=&quot;image-container&quot;&gt;
        &lt;img class=&quot;image1&quot; src=&quot;img01.webp&quot; alt=&quot;Image 1&quot;&gt;
        &lt;img class=&quot;image2&quot; src=&quot;img02.webp&quot; alt=&quot;Image 2&quot;&gt;
    &lt;/div&gt;
&lt;/body&gt;</code></pre></div>



<h3 class="wp-block-heading">CSS</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.image-container {
    position: relative;
}

.image1 {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 1.0;
}

.image2 {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
}

.image1:hover{
    opacity: 0;
}
.image2:hover{
    opacity: 1.0;
}</code></pre></div>



<h3 class="wp-block-heading">解説</h3>



<p>.image-container クラスには position: relative; スタイルが適用されています。<br>このクラス内に<strong>配置された要素の位置が相対的に設定</strong>されます。<br>要するに、<strong>絶対位置の画像</strong>（image1およびimage2）をコンテナ内で配置するための基準となります。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.image-container {
    position: relative;
}</code></pre></div>



<p>.image1 クラスは position: absolute; スタイルが適用され、<strong>画像をコンテナの左上に配置</strong>します。opacity: 1.0; は、<strong>この画像の透明度を完全に不透明に設定</strong>しています。<br>要するに、最初はこの画像が表示されます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.image1 {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 1.0;
}</code></pre></div>



<p>.image2 クラスも同様に position: absolute; スタイルを持ち、<strong>画像をコンテナの左上に配置</strong>します。しかし、この画像の透明度は opacity: 0; に設定しているので、最初は表示されません。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.image2 {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
}</code></pre></div>



<p>最後は、各画像にマウスをオーバーしたときのスタイルを設定しています。</p>



<p>要するに、.image1 にマウスをオーバー（ホバー）すると、その画像の透明度が<strong>opacity: 0;</strong>に変更され、非表示になります。<br>一方、.image2 にマウスをオーバーすると、その画像の透明度が<strong>opacity: 1.0;</strong>に変更され、表示されます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.image1:hover{
    opacity: 0;
}
.image2:hover{
    opacity: 1.0;
}</code></pre></div>



<h3 class="wp-block-heading">実演</h3>



<p>上記のコードを実行すると、マウスカーソルを画像に置くと、<strong>表示されていた画像が非表示だった画像と切り替わります。</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="500" src="https://alicia-ing.com/wp-content/uploads/2023/10/Complete2.gif" alt="画像の表示、非表示について" class="wp-image-3763"/></figure>



<h3 class="wp-block-heading">ソースコード（一括）</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-html" data-lang="HTML"><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;style&gt;
        .image-container {
            position: relative;
        }

        .image1 {
            position: absolute;
            top: 0;
            left: 0;
            opacity: 1.0;
        }

        .image2 {
            position: absolute;
            top: 0;
            left: 0;
            opacity: 0;
        }

        .image1:hover{
            opacity: 0;
        }
        .image2:hover{
            opacity: 1.0;
        }

    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div class=&quot;image-container&quot;&gt;
        &lt;img class=&quot;image1&quot; src=&quot;img01.webp&quot; alt=&quot;Image 1&quot;&gt;
        &lt;img class=&quot;image2&quot; src=&quot;img02.webp&quot; alt=&quot;Image 2&quot;&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre></div>



<h2 class="wp-block-heading">まとめ</h2>



<p>Webサイトでは、文字だけではなく、<strong>画像でより読者の理解を高めて質の高い記事</strong>ができます。</p>



<p>画面上に画像を表示するには、<strong>&lt;img&gt;要素</strong>を使います。</p>



<p>さらに、<strong>背景を指定した画像</strong>にしたい場合は、CSSを使用します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>.element {
  background-image: url(&#39;画像のファイルパス・URL&#39;);
}</code></pre></div>



<p>CSSを使用して画像のサイズ、位置、余白など<strong>&lt;img&gt;要素をスタイリング</strong>することもできます。また、<strong>class属性から、特定の画像を指定</strong>することができます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>img {
  width: 300px; /* 画像の幅 */
  height: 200px; /* 画像の高さ */
  margin: 10px; /* 余白 */
}

.image{
  width: 300px; /* 画像の幅 */
  height: 200px; /* 画像の高さ */
  margin: 2rem; /* 余白 */
}</code></pre></div>



<p>画像上に文字を右上、右下、左上、左下、中央に配置するには、<strong>絶対値（画像）、相対値（テキスト）</strong>を決めます。</p>



<p>また、画像上に別の画像を配置し、カーソルを合わせると変えるようにするには、<strong>ホバーでopacityを変える</strong>必要があります。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-css" data-lang="CSS"><code>opacity: 1.0; /* 表示 */
opacity: 0; /* 非表示 */</code></pre></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/overlay-text-image/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JavaScriptとPHPの違いー優先して学ぶ言語はどっち？</title>
		<link>https://alicia-ing.com/programming/front-end/javascript-php/</link>
					<comments>https://alicia-ing.com/programming/front-end/javascript-php/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 22 Jan 2023 04:11:38 +0000</pubDate>
				<category><![CDATA[フロントエンド]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=256</guid>

					<description><![CDATA[通常Webページを作成するプログラミング言語は、HTML・CSSを使います。 HTMLは、サイトに文字や画像などを表示する骨組み。CSSは、HTMLで表示した文字の色や大きさ。画像の位置や背景などサイトの装飾に関わります [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>通常Webページを作成するプログラミング言語は、<strong>HTML・CSS</strong>を使います。</p>



<p>HTMLは、サイトに文字や画像などを表示する<strong>骨組み</strong>。<br>CSSは、HTMLで表示した文字の色や大きさ。画像の位置や背景などサイトの<strong>装飾</strong>に関わります。</p>



<p><strong>企業のコーポレートサイト</strong>は、スクロールをするとふわっと画像が出てくるようなアニメーションの導入。</p>



<p><strong>通販サイト</strong>は、メールアドレスとパスワードを使用して新規登録やログイン機能がWebサイトに追加されています。</p>



<p>しかし、これらは<strong>基本的にHTML・CSSではできない</strong>です。</p>



<p><strong>アニメーションや会員登録などは、「JavaScript」と「PHP」</strong>２つのプログラミング言語がHTML・CSSの他に必要になります。</p>



<p>本記事では、「JavaScript」と「PHP」に焦点を当てて、両者の言語がどのようなことができるか紹介します。</p>



<p>また、できることを踏まえて、どちらの言語を優先して学習するべきか紹介します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>JavaScriptとPHPでできること・違いを知りたい。</li>



<li>どちらを優先して学習を進めていくべきか知りたい。</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>



<h2 class="wp-block-heading">JavaScript</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/11/JS.webp" alt="" class="wp-image-4428" srcset="https://alicia-ing.com/wp-content/uploads/2023/11/JS.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/11/JS-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/11/JS-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/11/JS-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/11/JS-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>JavaScriptは、<strong>動的なコンテンツやユーザーとの対話を可能にするためのプログラミング言語</strong>です。<br>主にウェブページのユーザーがブラウザ上で動作する場面で、使用されます。</p>



<p>JavaScriptでできる一例を紹介します。<br>他にもできることはありますが、本記事では、多くの人に該当するJavaScriptの用途を挙げます。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-blue-border-color cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">JSの用途</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Webサイトのアニメーション</li>



<li>ポップアップウィンドウ</li>



<li>フォーム制御</li>



<li>Web、スマホアプリ作成</li>



<li>Chrome・Firefoxの拡張機能</li>
</ul>
</div></div>



<h3 class="wp-block-heading">Webサイトのアニメーション</h3>



<p>スクロールすると、<strong>ふわっと画像が出てくる</strong>。（フェイドイン・フェイドアウト）<br>スクロールで、<strong>背景の画像がぱらぱらマンガのように動く</strong>。（例：<a target="_self" href="https://www.apple.com/jp/airpods-pro/" title="Apple-Airpods Pro公式サイト">Apple-Airpods Pro公式サイト</a>）</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>スクロールして画像が変わるアニメーションを紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/front-end/image-switching-scroll/" title="【CSS/JavaScript】スクロールに合わせて画像切り替え" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/image-switching-scroll-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS/JavaScript】スクロールに合わせて画像切り替え</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScriptでスクロール時に背景画像を切り替え、パララックス効果を実現します。スクロール位置に基づいて画像が滑らかに変化し、ページの動きに合わせて背景が移動します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<p>このようなWebサイトのアニメーションは、JavaScriptで作成することができます。</p>



<p>アニメーションを導入したサイトは閲覧者の目を引き、このようなWebページは彼らを楽しませるだけではなく、サイトの離脱を下げる効果があります。</p>



<h3 class="wp-block-heading">ポップアップウィンドウ・フォーム制御</h3>



<p>ポップアップウィンドウはサイトを操作中に、<br><strong>ディスプレイ上に表示されるウィンドウ</strong>のことです。</p>



<p>例えば、Webテストを受けていて、<br>終了ボタンを押すと、「本当に終了しますか？」という<strong>確認メッセージ</strong>が表示されます。</p>



<p>このメッセージ（ポップアップ）は、JavaScriptによって表示します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>&lt;script&gt;
    &#39;use strict&#39;
    if(window.confirm(&#39;本当に終了しますか？&#39;))
    {
        console.log(&#39;はい&#39;)
    }
　　else{
　　　　console.log(&#39;いいえ&#39;)
    }
&lt;/script&gt;</code></pre></div>



<p>このソースコードで表示されるポップアップウィンドはデフォルトで、デザインにはCSSを使います。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1924" height="1021" src="https://alicia-ing.com/wp-content/uploads/2023/11/JavaScript-pop.webp" alt="" class="wp-image-4429" srcset="https://alicia-ing.com/wp-content/uploads/2023/11/JavaScript-pop.webp 1924w, https://alicia-ing.com/wp-content/uploads/2023/11/JavaScript-pop-300x159.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/11/JavaScript-pop-1024x543.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/11/JavaScript-pop-768x408.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/11/JavaScript-pop-1536x815.webp 1536w" sizes="(max-width: 1924px) 100vw, 1924px" /></figure>



<p>ポップアップと聞くと、<strong>ポップアップ広告</strong>という言葉を聞いたことがある人もいるでしょう。<br>ウェブページに訪問すると、<strong>画面上に小さなウィンドウで出てくる広告</strong>です。</p>



<p><strong>販売促進、コンバージョン率の向上</strong>が見込めますが、<br><strong>あからさまに広告の押し売り</strong>になるので、ユーザーから嫌われます。<br><strong>サイトの評価も下がる</strong>ので、使い方には注意が必要です。</p>



<p>フォーム制御は、新規登録のような入力を<strong>サーバーに転送する</strong>際に、電話番号の桁数が足りない。メールアドレスに漢字が入っている。半角の数字ではなく全角で入力している。<br>このような<strong>間違いの入力があるときに、エラーを表示</strong>します。</p>



<h3 class="wp-block-heading">Web・スマホアプリ作成</h3>



<p>Webサイトで動くアプリは基本的にHTMLとCSSで静的な枠組みを作って、<br><strong>JavaScriptで動きを付けてアプリを作成</strong>しています。</p>



<p>また、Webの枠を超えて、スマホアプリも作ることができますが、<br>ゲームやスマホアプリは専用の言語を使うことをおすすめします。</p>



<p><strong>Webで動くゲームを作る</strong>場合は、Unityがおすすめです。<br>Unityは、ゲームを作るエンジンで、物理演算、AR/VRなど作ることができます。<br>Unityはプラットフォームを変えれば、PC・Web・Android・iOSいずれも作成することができます。</p>



<p><strong>本格的なアプリケーションを作る</strong>場合は、<br>iOS、Androidどちらでも動くFlutterがおすすめです。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>Flutterの環境設定を解説しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/flutter/vscode-setting/" title="【Flutter】VSCodeでWindowsの開発を環境構築" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/10/vscode-setting-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/10/vscode-setting-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/10/vscode-setting-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/10/vscode-setting-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Flutter】VSCodeでWindowsの開発を環境構築</div><div class="blogcard-snippet internal-blogcard-snippet">Windowsを使ってflutterでvscodeの環境構築を解説をしています。アプリの開発はOSごとに使用できる言語が異なりますが、Flutterはどちらも対応していて、企業の参入もしています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.11.05</div></div></div></div></a>
</div>



<h3 class="wp-block-heading">Chrome、Firefoxの拡張機能</h3>



<p>JavaScriptを使えば、Chrome、Firefoxなどの<strong>ブラウザの拡張機能の作成</strong>もできます。</p>



<p>ブラウザの拡張機能では、<strong>Webページの文字色を変えるカスタマイズ</strong>ができます。</p>



<p>高度な技術があれば、動画の倍速機能や英語のサイトを自動で日本語翻訳するなど様々な拡張機能を作成できます。</p>



<h2 class="wp-block-heading">PHP</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/11/php.webp" alt="" class="wp-image-4430" srcset="https://alicia-ing.com/wp-content/uploads/2023/11/php.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/11/php-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/11/php-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/11/php-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/11/php-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>続いて、PHPでできることを紹介します。</p>



<p>PHPは、<strong>サーバーサイドで動作するプログラミング言語</strong>です。<br>JSと同様に、動的なウェブページを作成するために使用されます。</p>



<p>PHPのコードはHTMLに埋め込むことができて、<strong>ウェブサーバー上で実行</strong>します。<br>ユーザーのブラウザには生成された<strong>HTMLコードが送信</strong>されます。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-blue-border-color cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">PHPの用途</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>SNSサイト</li>



<li>ECサイト</li>



<li>WordPressプラグイン</li>



<li>お問い合わせフォーム</li>



<li>MySQLとUnityの連携</li>
</ul>
</div></div>



<h3 class="wp-block-heading">SNSサイト作成</h3>



<p>X（Twitter）やFacebook、インスタなどのSNSサービスは次のような機能があります。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-blue-border-color cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SNS機能</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>アカウントの登録や更新削除</li>



<li>投稿の更新と削除</li>



<li>個人間のメッセージのやり取り</li>



<li>ログイン、ログアウト</li>
</ul>
</div></div>



<p>これらの機能はPHPを使って、データベースを管理する必要があります。</p>



<h3 class="wp-block-heading">ECサイト作成</h3>



<p>ECサイト（Electronic Commerce）とは、「Amazon」や「楽天」といった<strong>ショッピングサイト</strong>です。</p>



<p>先ほどのSNSサイトの機能でもあったように、<strong>ログイン・ログアウト</strong>でPHPを使います。</p>



<p>他にも、<strong>商品購入やお気に入り設定や商品の在庫確認</strong>はPHPで開発されます。</p>



<h3 class="wp-block-heading">WordPressプラグインを自作</h3>



<p>WordPressとは、ブログを運営するためのオープンソースのソフトウェアです。<br><strong>PHPで開発</strong>されていて、<strong>MYSQLでデータベースを管理</strong>しています。</p>



<p>さらに、WordPressプラグインは、PHPで作成されています。<br>おすすめや新着記事などの表示もPHPが関係しています。</p>



<h3 class="wp-block-heading">UnityとMySQLの連携</h3>



<p>ゲームエンジンUnityとデータベースを連携して通信する場合は、<strong>PHPを介して行う</strong>ことができます。<br>データベースを使うことで<strong>セーブデータの管理をサーバー上で行う</strong>ことができます。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>Unity(C#)とPHPを連携を解説しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/php-database-creation/" title="【Unity】PHP連携-MySQLでデータベースを作成" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/06/php-database-creation-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/06/php-database-creation-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/06/php-database-creation-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/06/php-database-creation-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】PHP連携-MySQLでデータベースを作成</div><div class="blogcard-snippet internal-blogcard-snippet">UnityとPHPを組み合わせたデータベース接続にはMySQLを使います。UnityからPHPを経由してデータベースにアクセスし、SQLを使用して連携します。編集はphpAdminを使用します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.28</div></div></div></div></a>
</div>



<h2 class="wp-block-heading">JavaScriptとPHPの違い</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1980" height="1020" src="https://alicia-ing.com/wp-content/uploads/2023/11/difference.webp" alt="" class="wp-image-4431" srcset="https://alicia-ing.com/wp-content/uploads/2023/11/difference.webp 1980w, https://alicia-ing.com/wp-content/uploads/2023/11/difference-300x155.webp 300w, https://alicia-ing.com/wp-content/uploads/2023/11/difference-1024x528.webp 1024w, https://alicia-ing.com/wp-content/uploads/2023/11/difference-768x396.webp 768w, https://alicia-ing.com/wp-content/uploads/2023/11/difference-1536x791.webp 1536w" sizes="(max-width: 1980px) 100vw, 1980px" /></figure>



<p>2つの言語は<strong>動的なウェブページを作成という観点</strong>で、同じような言語です。</p>



<p>JavaScriptは、ブラウザ内で実行され、ユーザーの端末上で動作します。<br>PHPは、ウェブサーバー上で実行され、HTMLとして表示されます。</p>



<p>その他にも、データベース連携が得意・不得意ことや実装する場所が違うなど違いは多くあります。</p>



<p>ウェブページを作成の上でどちらから学ぶべきでしょうか。</p>



<h3 class="wp-block-heading">特別な理由がなければ、JavaScriptから学ぶべき</h3>



<p>自分は、<strong>PHPにしか興味がない。</strong><br><strong>アカウント登録のシステム</strong>（ログイン・ログアウト）がとにかく作りたい。</p>



<p>これら<strong>サーバーを使うことは、JSは不向きなので、PHPから入るべき</strong>です。</p>



<p>いずれにおいても、PHPを扱う場合には、JavaScriptでのアニメーションが必要になります。<br><strong>PHPを学ぶならば、JavaScriptも習得を見通しておく</strong>ことをおすすめします。</p>



<h3 class="wp-block-heading">JavaScriptはすぐに始められる</h3>



<p><strong>PHPは環境設定が必要</strong>です。<br>PHPの実行するためには、<strong>ウェブサーバーとPHPのインストール</strong>します。<br>その後、PHPを設定して、<strong>ウェブサーバーと連携</strong>しなければいけません。</p>



<p>一方で、JavaScriptはインストールのようなひと手間は、基本的には不要です。</p>



<p>VScodeやドキュメントに<strong>ソースコードを書いて、拡張子を指定</strong>(script.js)すれば、<strong>JavaScriptは実行</strong>できます。</p>



<h3 class="wp-block-heading">PHPより知識がいらない</h3>



<p>PHPはデータやアカウントを扱うので、文法だけではなくデータベース(MySQL)やCookieなどを学ぶ必要があります。</p>



<p>一方でJavaScriptは、PHPのように知識はほとんど不要です。</p>



<p>慣れないうちはjQueryに苦戦しますが、<strong>jQueryはJavaScriptコードを容易に記述できるように設計された</strong>JavaScriptライブラリなので、マスターすれば<strong>柔軟なウェブデザインを開発</strong>ができます。</p>



<h3 class="wp-block-heading">JavaScriptの知識がPHPで役に立つ</h3>



<p>J<strong>avaScriptとPHPは文法がよく似ています。</strong><br>JavaScriptの知識がある程度あれば、PHPもすぐに身に着けることができます。</p>



<p>一例として、変数宣言・配列があります。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-blue-border-color cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">変数宣言</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Javascript</li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>let name = &quot;Hello, World!&quot;;</code></pre></div>



<ul class="wp-block-list">
<li>PHP</li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-php" data-lang="PHP"><code>$name = &quot;Hello, World!&quot;;</code></pre></div>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-blue-border-color cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">配列</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Javascript</li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>let arrayNum = [1, 2, 3];</code></pre></div>



<ul class="wp-block-list">
<li>PHP</li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-php" data-lang="PHP"><code>$arrayNum = array(1, 2, 3);</code></pre></div>
</div></div>



<p>ただし、異なる点もあります。<br>JavaScriptは変数の型を宣言する必要がありません。<br>PHPは変数の型を<strong>事前に宣言する</strong>必要があります。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-red-border-color cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">型宣言</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Javascript</li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-js" data-lang="JavaScript"><code>let name; // 型を宣言せずに変数を宣言

name = 10; // 数値型
console.log(name); // 10

name = &quot;Hello, World!&quot;; // 文字列型
console.log(name); // Hello, World!

name = true; // ブール型
console.log(name); // true</code></pre></div>



<ul class="wp-block-list">
<li>PHP</li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-php" data-lang="PHP"><code>&lt;?php
$name; // エラーになります。型の宣言が必要

$name = 10; // 数値型
echo $name; // 10

$name = &quot;Hello, World!&quot;; // 文字列型
echo $name; // Hello, World!

$name = true; // ブール型
echo $name; // 1 (trueは1に変換される)
?&gt;</code></pre></div>
</div></div>



<p>その他にも、<strong>JSは、var・let・constなどを使用して制御</strong>しますが、PHPにはありません。</p>



<h4 class="wp-block-heading">UdemyでWebデザインを学習</h4>



<p><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2F">Udemy</a>は、オンデマンド式の学習講座です。<br>趣味から実務まで使えるおすすめの講座を紹介します。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-pickup block-box has-border-color has-yellow-border-color">
<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fwordpress_master%2F">ちゃんと学ぶ、WordPress テーマ開発講座</a><br>WordPressの自作テーマを作成してWordPressの仕組み理解。<br><strong>WordPressで高度なカスタマイズをしたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fthe-web-developer-bootcamp-2021-japan%2F">【世界で70万人が受講】Web Developer Bootcamp 2023（日本語版）</a><br>フロントエンド言語でフレームワークの扱い方、セキュリティーを学習。<br><strong>Web開発を学びたい初心者から経験者まで</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fbackend-tutorial%2F">【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎(バックエンド編)<br></a>Webシステムの仕組みと挙動、システム構築などを学習。<br><strong>サーバーに関わる知識を付けたい人</strong>におすすめ。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<ul class="wp-block-list">
<li><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Ffront-dev-tutorial%2F">【2023年最新】【JavaScript＆CSS】ガチで学びたい人のためのWEB開発実践入門（フロントエンド編）</a><br>基礎レベルから実務レベルまで網羅していて、JSとCSSに焦点を当てた講座。<br><strong>Webデザインをしたい人</strong>におすすめ。</li>
</ul>
</div>



<h2 class="wp-block-heading">まとめ</h2>



<p>通常Webページには、骨組みのHTMLと装飾のCSSを使います。<br><strong>ウェブアニメーションや新規登録・ログインは、HTML・CSSではできない</strong>です。</p>



<p>これらは、「JavaScript」と「PHP」がHTML・CSSの他に必要になります。</p>



<p>2つの言語は動的なウェブページを作成する言語です。<br><strong>JavaScriptはブラウザ内、PHPはウェブサーバー上で実行</strong>します。<br>その他にも、<strong>データベース連携が得意不得意</strong>があります。</p>



<p>PHPは文法の他にもデータベースを扱うので、<strong>MySQLをマスターしないといけない</strong>ので、JSの学習を優先することをおすすめします。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 aligncenter micro-balloon micro-top mc-circle micro-copy"><span class="micro-balloon-content micro-content"><strong>Udemyで学習する</strong></span></div>



<div class="wp-block-cocoon-blocks-button-1 aligncenter button-block"><a target="_self" href="https://click.linksynergy.com/deeplink?id=IyOtUnEMtpw&amp;mid=47984&amp;murl=https%3A%2F%2Fwww.udemy.com%2Fcourses%2Fdevelopment%2F" class="btn btn-m btn-shine has-background has-light-green-background-color">Udemy 公式サイト</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/front-end/javascript-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
