<?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>HTML/CSS アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<atom:link href="https://nyanblog2222.com/category/programming/html-css/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/category/programming/html-css/</link>
	<description>ちょっとしたことを調べているよ</description>
	<lastBuildDate>Fri, 15 Nov 2024 08:56:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7</generator>

<image>
	<url>https://nyanblog2222.com/wp-content/uploads/2021/09/cropped-favicon-32x32.png</url>
	<title>HTML/CSS アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<link>https://nyanblog2222.com/category/programming/html-css/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>Visual Studio Codeのインストールや日本語化設定</title>
		<link>https://nyanblog2222.com/programming/javascript/5187/</link>
					<comments>https://nyanblog2222.com/programming/javascript/5187/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 25 Mar 2023 15:12:41 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[VSCode]]></category>
		<category><![CDATA[環境構築]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=5187</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png 1280w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />本記事ではVisual Studio Codeの環境構築を行います。 目次 Visual Studio Code（VSCode）とはVisual Studio CodeのインストールVisual Studio Codeに [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/5187/">Visual Studio Codeのインストールや日本語化設定</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1.png 1280w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230328_1-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>本記事ではVisual Studio Codeの環境構築を行います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Visual Studio Code（VSCode）とは</a></li><li><a href="#toc2" tabindex="0">Visual Studio Codeのインストール</a></li><li><a href="#toc3" tabindex="0">Visual Studio Codeに拡張機能をインストール</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Visual Studio Code（VSCode）とは</span></h2>



<p><span class="marker-under">Visual Studio Code</span>はMicrosoftが開発している<br>Windows、Linux、macOS、webで<span class="bold-red">無料で提供</span>されているソースコードエディタです。</p>



<p>調べるときに良く<span class="marker-under">VSCode</span>とも出てきます。</p>



<p><span class="bold-red">最大の特徴</span>は<span class="marker-under">拡張機能が豊富</span>にあり、<br>・英語・中国語・<span class="marker-under">日本語表示</span><br>・各開発言語の開発効率を向上させる機能（ソースコード入力補助等）<br>様々あるため、現在最も多く利用されているエディタといわれています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>なにより<span class="marker-under">多くの機能が無料で使える</span>！<br>これに尽きます。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc2">Visual Studio Codeのインストール</span></h2>



<p>さっそくVisual Studio Codeをインストールしていきます。<br>まずは<a rel="noopener" href="https://code.visualstudio.com/" target="_blank">Visual Studio Codeのページ</a>から<span class="bold-red">赤枠</span>をクリックし、ファイルをダウンロードします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="596" height="374" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code-Code-Editing-Redefined-Google-Chrome_2020-5-12_22-39-14_No-00.png" alt="VSCode　ダウンロード" class="wp-image-459" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code-Code-Editing-Redefined-Google-Chrome_2020-5-12_22-39-14_No-00.png 596w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code-Code-Editing-Redefined-Google-Chrome_2020-5-12_22-39-14_No-00-300x188.png 300w" sizes="(max-width: 596px) 100vw, 596px" /></figure>



<p><span class="bold-red">ダウンロードしたファイル「VSCodeUserSetup-x64-[ver名].exe」</span>をダブルクリックし<br>インストールを開始します。</p>



<p>セットアップ画面が開いたら<br><span class="bold-red">「同意する」</span>にチェックをつけて、<span class="bold-red">「次へ」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/dab39e13a9447a6af6677a51575cfbac-4.png" alt="VSCode セットアップ" class="wp-image-464" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/dab39e13a9447a6af6677a51575cfbac-4.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/dab39e13a9447a6af6677a51575cfbac-4-300x238.png 300w" sizes="(max-width: 539px) 100vw, 539px" /></figure>



<p>インストール先を指定します。<br>特に変更する必要がなければそのまま<span class="bold-red">「次へ」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/722d363e728379067c00b01a068530a0.png" alt="VSCode セットアップ" class="wp-image-465" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/722d363e728379067c00b01a068530a0.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/722d363e728379067c00b01a068530a0-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>スタートメニューにショートカットを作成します。<br>特にこだわりがなければ、このまま<span class="bold-red">「次へ」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/67c57268ebc9d8c32aaea6c8e913c9a2.png" alt="VSCode セットアップ" class="wp-image-466" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/67c57268ebc9d8c32aaea6c8e913c9a2.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/67c57268ebc9d8c32aaea6c8e913c9a2-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>ここでは、インストール時の追加要素を選択することができます。</p>



<p>今回は変更していませんが、おすすめは以下の3つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<p>・エクスプローラーのファイル　コンテキストメニューに[Code で開く]アクションを追加する<br>・エクスプローラーのディレクトリ　コンテキストメニューに[Code で開く]アクションを追加する<br>・<span class="bold-red">PATHへの追加</span></p>
</div>



<p>他のサイトでよくインストール作業の内容に関して、環境変数に設定する内容が記載されていますが、ここで<span class="bold-red">PATHへの追加</span>にチェックを入れておくと自分で作業する必要が無くなります。<br>そのため、チェックをつけた状態で<span class="bold-red">「次へ」</span>をクリックしましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/0182d5ad9156e01eb0f854096ccca089-1.png" alt="VSCode セットアップ" class="wp-image-473" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/0182d5ad9156e01eb0f854096ccca089-1.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/0182d5ad9156e01eb0f854096ccca089-1-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>インストールの確認前画面です。<br>内容に問題なければ<span class="bold-red">「インストール」</span>をクリックしてください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/98bfa2948a2cf57531107bf79c2b4c77.png" alt="VSCode セットアップ" class="wp-image-469" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/98bfa2948a2cf57531107bf79c2b4c77.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/98bfa2948a2cf57531107bf79c2b4c77-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<p>インストールが完了したら<span class="bold-red">「完了」</span>をクリックし、セットアップ画面を閉じてください。<br>これでVisual Studio Codeのインストールが完了です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="539" height="427" src="https://nyanblog2222.com/wp-content/uploads/2020/05/1da942a1b0f32f831099a98ad72c5fb1.png" alt="VSCode セットアップ" class="wp-image-471" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/1da942a1b0f32f831099a98ad72c5fb1.png 539w, https://nyanblog2222.com/wp-content/uploads/2020/05/1da942a1b0f32f831099a98ad72c5fb1-300x238.png 300w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure>



<h2 class="wp-block-heading"><span id="toc3">Visual Studio Codeに拡張機能をインストール</span></h2>



<p>拡張機能でインストールする方法を紹介します。<br>まず使うであろう<span class="bold-red">「日本語化」</span>の拡張機能をインストールします。</p>



<p>Visual Studio Codeを開きます。</p>



<p>左側のアクティビティバーにある、<span class="bold-red">赤枠「拡張機能」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="619" height="464" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-47_No-00-min.png" alt="Visual Studio Code" class="wp-image-475" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-47_No-00-min.png 619w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-47_No-00-min-300x225.png 300w" sizes="auto, (max-width: 619px) 100vw, 619px" /></figure>



<p>「Marketplace」に<span class="bold-red">「Japanese」</span>と入力してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="620" height="183" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-5.png" alt="" class="wp-image-485" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-5.png 620w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-5-300x89.png 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></figure>



<p><span class="bold-red">「Japanese Language Pack for Visual Studio Code」</span><br>のインストールを行ってください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="620" height="177" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-4.png" alt="" class="wp-image-484" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-4.png 620w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-55-58_No-00-min-4-300x86.png 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></figure>



<p>locale.jsonで日本語に設定します。<br><span class="bold-red">「Ctrl」+「Shift」+「P」</span>でコマンドパレットを起動します。</p>



<p>「configure」と入力すると予測変換が出てくるので<br><span class="bold-red">「Configure Display Language」</span>をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="617" height="179" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-8_No-00-min.png" alt="Visual Studio Code　日本語" class="wp-image-483" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-8_No-00-min.png 617w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-8_No-00-min-300x87.png 300w" sizes="auto, (max-width: 617px) 100vw, 617px" /></figure>



<p><span class="bold-red">「ja」</span>(japanese)をクリックします。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="617" height="180" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-11_No-00-min.png" alt="Visual Studio Code　日本語" class="wp-image-486" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-11_No-00-min.png 617w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Welcome-Visual-Studio-Code_2020-5-11_8-59-11_No-00-min-300x88.png 300w" sizes="auto, (max-width: 617px) 100vw, 617px" /></figure>



<p>再起動するか確認するメッセージボックスが出ますので、<span class="bold-red">「Restart」</span>をクリックしてください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="567" height="205" src="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code_2020-5-11_8-59-22_No-00.png" alt="Visual Studio Code　再起動" class="wp-image-488" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code_2020-5-11_8-59-22_No-00.png 567w, https://nyanblog2222.com/wp-content/uploads/2020/05/SnapCrab_Visual-Studio-Code_2020-5-11_8-59-22_No-00-300x108.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></figure>



<p>これで日本語化の完了です。</p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/5187/">Visual Studio Codeのインストールや日本語化設定</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/5187/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】JavaScriptでTODOリスト作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/5090/</link>
					<comments>https://nyanblog2222.com/programming/5090/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 09 Mar 2023 15:31:35 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[TODOリスト]]></category>
		<category><![CDATA[サンプル]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=5090</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg 800w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-300x157.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-768x401.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" />JavaScriptでTODOリストを作成しました。 シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪ 目次 はじめに実装内容（フロー）HTMLCSSJavaSc [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/5090/">【初心者】JavaScriptでTODOリスト作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.jpg 800w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-300x157.jpg 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-768x401.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" />
<p>JavaScriptでTODOリストを作成しました。</p>



<p>シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">実装内容（フロー）</a></li><li><a href="#toc3" tabindex="0">HTML</a></li><li><a href="#toc4" tabindex="0">CSS</a></li><li><a href="#toc5" tabindex="0">JavaScript</a><ol><li><a href="#toc6" tabindex="0">コード</a></li><li><a href="#toc7" tabindex="0">解説</a><ol><li><a href="#toc8" tabindex="0">・グローバル変数の定義・ページ読み込み後、変数にHTML要素を設定</a></li><li><a href="#toc9" tabindex="0">・タスク追加</a><ol><li><a href="#toc10" tabindex="0">・完了ボタンクリック</a></li><li><a href="#toc11" tabindex="0">・削除ボタンクリック</a></li></ol></li><li><a href="#toc12" tabindex="0">・チェックしたタスクを一括削除：deleteTask()</a></li><li><a href="#toc13" tabindex="0">・タスク内にあるボタンを作成：createTaskButton(class_name, name)</a></li></ol></li></ol></li><li><a href="#toc14" tabindex="0">デモ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずはTODOリストの機能を考えます。<br>今回は以下の機能を持たせて実装しました。</p>



<p>簡単な機能しか実装していませんが、好みに応じてカスタマイズしてみてください。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list">
<li>タスクを追加、完了、削除</li>



<li>タスクをまとめて削除する</li>
</ul>
</div>



<p>作成のイメージ図がこちらです。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.png" alt="" class="wp-image-5101" width="687" height="470" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308.png 687w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308-300x205.png 300w" sizes="auto, (max-width: 687px) 100vw, 687px" /></figure>



<h2 class="wp-block-heading"><span id="toc2">実装内容（フロー）</span></h2>



<p>次に箇条書きで処理フローを記述します。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list">
<li>変数を設定</li>



<li>タスク追加ボタン押下時：
<ol class="wp-block-list">
<li>タスク名の入力値チェック</li>



<li>タスクに必要な要素を追加する</li>
</ol>
</li>



<li>チェックしたタスクを一括削除ボタン押下時：
<ol class="wp-block-list">
<li>チェックしたタスクをを削除する</li>
</ol>
</li>



<li>完了ボタン押下時： 
<ol class="wp-block-list">
<li>ボタンを押下したタスクを完了</li>
</ol>
</li>



<li>削除ボタン押下時： 
<ol class="wp-block-list">
<li>ボタンを押下したタスクを削除</li>
</ol>
</li>
</ol>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>シンプルな機能だけ持たせています。<br>改善点は色々思い当たりますが、完了状態→タスク未完了状態に戻したりがありますね。</p>
</div></div>



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



<p>まずはHTMLを作成していきます。<br>作成しているのは、大きく以下の3つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list">
<li>タイトル（TODOリスト）</li>



<li>タスク名登録・タスク複数削除</li>



<li>タスク一覧（完了・削除ボタン）</li>
</ol>
</div>



<pre class="wp-block-code html"><code>&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;h1 id="header"&gt;TODOリスト&lt;/h1&gt;
    &lt;div id="input-wrap"&gt;
      &lt;input id="task-name" type="text" placeholder="タスク名を入力してください" /&gt;
      &lt;button onclick="addTask()"&gt;タスクを追加&lt;/button&gt;
      &lt;button class="deleteTask-button" onclick="deleteTask()"&gt;チェックしたタスクを削除&lt;/button&gt;
    &lt;/div&gt;
    &lt;div id="main-wrap"&gt;
      &lt;form name="task_form"&gt;
        &lt;ul id="todo-list"&gt;&lt;/ul&gt;
      &lt;/form&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<p>「タスクを追加」ボタンにクリックイベント&#8221;<span class="marker-under">addTask()</span>&#8220;<br>「チェックしたタスクを削除」ボタンにクリックイベント&#8221;<span class="marker-under">deleteTask()</span>&#8220;</p>



<p>を設定しています。</p>



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



<p>次にCSSでスタイルを決定します。<br>この辺りは好きなようにカスタマイズをしていただいて良いと思います！<br>※ 先にreset.cssを読み込んでからスタイルを設定していますので、注意してください。</p>



<p>特に記載するところはありませんが、<br>61行目「line-through」、87行目「disabled」はJavaScriptで「完了」ボタン押下時のイベントで使用するため、設定してください。</p>



<pre class="wp-block-code css"><code>@charset "utf-8";

/*全体*/
.wrapper{
  max-width: 600px;
  margin: 0 auto;
  color: #666;
}
#header {
  text-align: center;
  font-size: 24px;
  width: 100%;
  margin: 1.5rem 0;
}
#main-wrap {
  margin-bottom: 1.5rem;
}

/* 入力 */
#input-wrap {
  margin: 0 auto;
  width: 80%;
}
#input-wrap input{
  width: 40%;
  height: 24px;
  margin-right: 1rem;
}

/* リスト */
#main-wrap {
  text-align: center;
  margin: 0 auto;
  width: 70%;
  min-height: 120px;
  border: 1px solid #aaa;
  border-radius: 4px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  padding: 0.8rem 2rem;
}

#main-wrap ul {
  padding-inline-start: 0
}

#main-wrap li {
  text-align: left;
  list-style-type: none;
  border-bottom: 1px dashed #aaa;
  padding: 0.8rem 0;
  display: flex;
  line-height: 32px;
}

#main-wrap p {
  width: 60%;
}
#main-wrap p.line-through {
  text-decoration: line-through;
}

/*ボタン*/
button{
  height: 32px;

  cursor: pointer;
  background: #B78D4A;
  color: #fff;
  border: 1px solid #B78D4A;
  border-radius: 4px;
  font-size: 1rem;
  padding: 0.2rem 1.5rem;
  margin-bottom: 0.5rem;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
}

button:hover{
  background-color: #D4BB92;
  border-color: #D4BB92;
}
button.disabled {
  background-color: #D4BB92;
  border-color: #D4BB92;
  cursor: not-allowed;
  pointer-events: none;
}

button.deleteTask-button {
  margin-bottom: 1.5rem;
}

.end-button, .delete-button {
  margin-bottom: 0;
  padding: 0.2rem 1rem;
}

.end-button {
  margin-right: 0.4rem;
}

</code></pre>



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



<p>JavaScriptのコードと解説をしていきます。</p>



<h3 class="wp-block-heading"><span id="toc6">コード</span></h3>



<p>次項で詳しく解説していますが、コメントでも多少記述しています。<br>コピペも可能です！</p>



<pre class="wp-block-code javascript"><code>var todoList;
window.onload = function () {
  todoList = document.getElementById('todo-list');
}

// タスク追加
function addTask() {
  var taskName = document.getElementById('task-name');

  // タスク名の入力がなければ処理を終了
  if(taskName.value.Trim() == "") return;

  // liに要素を追加
  var li = document.createElement('li');

  // liにinputを追加
  var input = document.createElement('input');
  input.setAttribute('type', 'checkbox');
  input.setAttribute('name', 'task');
  li.appendChild(input);

  // liにpを追加
  var p = document.createElement('p');
  p.innerHTML = taskName.value;
  li.appendChild(p);

  // liにbuttonを追加
  var endButton = createTaskButton('end-button', '完了');
  li.appendChild(endButton);

  // liにbuttonを追加
  var deleteButton = createTaskButton('delete-button', '削除');
  li.appendChild(deleteButton);

  // ulにliを追加
  todoList.appendChild(li);

  taskName.value = "";

  // イベント処理
  // 完了ボタンクリック
  endButton.addEventListener('click', function(e){
    e.preventDefault();
    this.setAttribute('class', 'end-button disabled');
    this.previousElementSibling.setAttribute('class', 'line-through');
  });
  // 削除ボタンクリック
  deleteButton.addEventListener('click', function(e){
    e.preventDefault();
    todoList.removeChild(this.closest('li'));
  });
}

// チェックしたタスクを一括削除
function deleteTask() {
  var inputList = document.task_form.task;
  for(var i=inputList.length-1;i&gt;=0;i--) {
    if(inputList&#91;i].checked){
      todoList.removeChild(inputList&#91;i].closest('li'));
    }
  }
}

// タスク内にあるボタンを作成
function createTaskButton(className, name) {
  var btn = document.createElement('button');
  btn.setAttribute('class', className);
  btn.innerHTML = name;
  return btn;
}</code></pre>



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



<p>先述したコードに対して細かく解説していきます！</p>



<h4 class="wp-block-heading"><span id="toc8">・グローバル変数の定義・ページ読み込み後、変数にHTML要素を設定</span></h4>



<pre class="wp-block-code javascript"><code>var todoList;
window.onload = function () {
  todoList = document.getElementById('todo-list');
}</code></pre>



<p>ページ読み込み後に<span class="marker-under">&lt;ul&gt;のid&#8217;todo-list&#8217;を取得し、変数todoListに設定</span>しています。</p>



<h4 class="wp-block-heading"><span id="toc9">・タスク追加</span></h4>



<pre class="wp-block-code javascript"><code>function addTask() {
  var taskName = document.getElementById('task-name');

  // タスク名の入力がなければ処理を終了
  if(taskName.value.Trim() == "") return;

  // liに要素を追加
  var li = document.createElement('li');

  // liにinputを追加
  var input = document.createElement('input');
  input.setAttribute('type', 'checkbox');
  input.setAttribute('name', 'task');
  li.appendChild(input);

  // liにpを追加
  var p = document.createElement('p');
  p.innerHTML = taskName.value;
  li.appendChild(p);

  // liにbuttonを追加
  var endButton = createTaskButton('end-button', '完了');
  li.appendChild(endButton);

  // liにbuttonを追加
  var deleteButton = createTaskButton('delete-button', '削除');
  li.appendChild(deleteButton);

  // ulにliを追加
  todoList.appendChild(li);

  taskName.value = "";

  // イベント処理
  // のちほど説明のため省略
}</code></pre>



<p>「タスクを追加」ボタン押下時のイベントを実装します。</p>



<pre class="wp-block-code javascript"><code>var taskName = document.getElementById('task-name');</code></pre>



<p>タスク名を入力する<span class="marker-under">&lt;input&gt;のid&#8217;task-name&#8217;を取得し、変数taskNameに設定</span>しています。</p>



<pre class="wp-block-code javascript"><code>// タスク名の入力がなければ処理を終了
if(taskName.value.Trim() == "") return;
</code></pre>



<p>タスク名の入力値が空であれば処理を終了する。<br><span class="marker-under">Trim()は入力値の前後の空白を除きます</span>。</p>



<pre class="wp-block-code javascript"><code>// liに要素を追加
var li = document.createElement('li');

// liにinputを追加
var input = document.createElement('input');
input.setAttribute('type', 'checkbox');
input.setAttribute('name', 'task');
li.appendChild(input);

// liにpを追加
var p = document.createElement('p');
p.innerHTML = taskName.value;
li.appendChild(p);

// liにbuttonを追加
var endButton = createTaskButton('end-button', '完了');
li.appendChild(endButton);

// liにbuttonを追加
var deleteButton = createTaskButton('delete-button', '削除');
li.appendChild(deleteButton);
</code></pre>



<p>&lt;li&gt;の要素を作成します。&lt;li&gt;の中には以下の要素を作ります。</p>



<p>・チェックボックス<br>・タスク名<br>・完了ボタン<br>・削除ボタン</p>



<pre class="wp-block-code javascript"><code>// ulにliを追加
todoList.appendChild(li);
</code></pre>



<p>作成した&lt;li&gt;を&lt;ul&gt;に追加します。</p>



<pre class="wp-block-code javascript"><code>taskName.value = "";</code></pre>



<p>入力欄をリセットするため、空文字（&#8221;&#8221;）を設定します。</p>



<h5 class="wp-block-heading"><span id="toc10">・完了ボタンクリック</span></h5>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="692" height="437" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_2.png" alt="" class="wp-image-5131" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_2.png 692w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_2-300x189.png 300w" sizes="auto, (max-width: 692px) 100vw, 692px" /></figure>



<pre class="wp-block-code javascript"><code>endButton.addEventListener('click', function(e){
  e.preventDefault();
  this.setAttribute('class', 'end-button disabled');
  this.previousElementSibling.setAttribute('class', 'line-through');
});</code></pre>



<p>各タスクの「完了」ボタンを実装します。</p>



<pre class="wp-block-code javascript"><code>e.preventDefault();</code></pre>



<p>こちらの関数はイベントのデフォルト動作をキャンセルします。</p>



<pre class="wp-block-code javascript"><code>this.setAttribute('class', 'end-button disabled');</code></pre>



<p>end_button[完了ボタン]にclass属性&#8217;end-button <span class="marker-under">disabled</span>&#8216;を設定します。<br>disabledクラスはボタンを非活性するスタイルを設定します。</p>



<p><span class="marker-under">thisはendButton</span>を指します。</p>



<pre class="wp-block-code javascript"><code>this.previousElementSibling.setAttribute('class', 'line-through');</code></pre>



<p>タスク名&lt;p&gt;に取消線のクラス<span class="marker-under">&#8216;line-through&#8217;</span>を設定します。</p>



<p><span class="marker-under">previousElementSibling</span><span class="marker-under">：</span><span class="marker-under">一つ前の要素</span>。endButton[完了ボタン]の一つ前の要素&lt;p&gt;を指します。</p>



<h5 class="wp-block-heading"><span id="toc11">・削除ボタンクリック</span></h5>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="456" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_4.png" alt="" class="wp-image-5149" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_4.png 690w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_4-300x198.png 300w" sizes="auto, (max-width: 690px) 100vw, 690px" /></figure>



<pre class="wp-block-code javascript"><code>deleteButton.addEventListener('click', function(e){
  e.preventDefault();
  todoList.removeChild(this.closest('li'));
});</code></pre>



<p>各タスクの「削除」ボタンを実装します。<br>※ e.preventDefault();は先ほど出てきたので省略</p>



<pre class="wp-block-code javascript"><code>todo_list.removeChild(this.closest('li'));</code></pre>



<p>タスクを削除します。</p>



<p><span class="marker-under">removeChild()</span>：&lt;ul&gt;（todoList）の子要素を削除します。<br><span class="marker-under">this.closest(&#8216;li&#8217;)</span>：クリックしたボタンthis(deleteButton)の直近に存在する親要素、もしくは要素自身を返します。</p>



<h4 class="wp-block-heading"><span id="toc12">・チェックしたタスクを一括削除：deleteTask()</span></h4>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="434" src="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-1024x434.png" alt="" class="wp-image-5140" srcset="https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-1024x434.png 1024w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-300x127.png 300w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3-768x326.png 768w, https://nyanblog2222.com/wp-content/uploads/2023/03/20230308_3.png 1382w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<pre class="wp-block-code javascript"><code>function deleteTask() {
  var inputList = document.task_form.task;
  for(var i=inputList.length-1;i&gt;=0;i--) {
    if(inputList&#91;i].checked){
      todoList.removeChild(inputList&#91;i].closest('li'));
    }
  }
}</code></pre>



<p><span class="marker-under">「チェックしたタスクを削除」ボタン押下時に呼ばれる関数</span>&#8220;deleteTask()&#8221;を作成します。<br>チェックしたタスクを一度に削除する処理を行います。</p>



<pre class="wp-block-code javascript"><code>var inputList = document.task_form.task;</code></pre>



<p>&lt;form name=&#8221;task_form&#8221;&gt;の中の&lt;input name=&#8221;task&#8221;&gt;を一覧で取得して変数inputListに設定しています。</p>



<p>&#8220;task_form&#8221;と&#8221;task&#8221;はname属性で指定した値です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>htmlファイルと見比べながら確認すると分かりやすいです。</p>
</div></div>



<pre class="wp-block-code javascript"><code>// ①
for(var i=inputList.length-1;i&gt;=0;i--) {
  // ②
  if(inputList&#91;i].checked){
    // ③
    todo_list.removeChild(inputList&#91;i].closest('li'));
  }
}</code></pre>



<p>チェックしたタスク&lt;li&gt;を削除していきます。</p>



<p>①for文でinputListを後ろから一つずつ&lt;input&gt;を回し<br>②if文でチェックボックスでチェックしているか確認<br>※ チェックされているときはcheckedがtrue<br>③trueであればリスト（todoList）からliを削除<br>※ removeChildは「削除ボタンクリック」で開設済み</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p><span class="marker-under">①で後ろからfor文を回している理由</span>は、回しながらliを削除しているので<br>添字が変わってしまうことにより、チェックしているタスクが全て削除されなくなるというのを防いでいます。<br>※ ★このあたりは文章だと分かりずらいので、今後時間があれば図にするかもしれません…。</p>
</div></div>



<h4 class="wp-block-heading"><span id="toc13">・タスク内にあるボタンを作成：createTaskButton(class_name, name)</span></h4>



<pre class="wp-block-code javascript"><code>function createTaskButton(className, name) {
  var btn = document.createElement('button');
  btn.setAttribute('class', className);
  btn.innerHTML = name;
  return btn;
}</code></pre>



<p><span class="marker-under">タスクの「完了」「削除」ボタンを作成する関数</span>です。</p>



<pre class="wp-block-code javascript"><code>var btn = document.createElement('button');</code></pre>



<p>&lt;botton&gt;の要素を作成します。</p>



<pre class="wp-block-code javascript"><code>btn.setAttribute('class', className);
btn.innerHTML = name;</code></pre>



<p>ボタンに属性classを設定、innerHTMLにボタンに表示する内容を設定します。</p>



<p>最後にボタン（要素）を返します。</p>



<h2 class="wp-block-heading"><span id="toc14">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/todolist1/" target="_blank">こちらがデモページ</a>になります。</p>



<p>良かったら試してみてください♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/5090/">【初心者】JavaScriptでTODOリスト作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/5090/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】JavaScriptでストップウォッチの作り方</title>
		<link>https://nyanblog2222.com/programming/4829/</link>
					<comments>https://nyanblog2222.com/programming/4829/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 09 Sep 2022 06:31:39 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4829</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はJavaScriptでストップウォッチを作成しました。シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪ 目次 はじめに実装内容（フロー）HTMLCSSJav [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4829/">【初心者】JavaScriptでストップウォッチの作り方</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/65.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/65-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はJavaScriptでストップウォッチを作成しました。<br>シンプルでサンプル・解説ありなので、初心者のJavaScriptの勉強用に良かったら作成してみてください♪</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">はじめに</a></li><li><a href="#toc2" tabindex="0">実装内容（フロー）</a></li><li><a href="#toc3" tabindex="0">HTML</a></li><li><a href="#toc4" tabindex="0">CSS</a></li><li><a href="#toc5" tabindex="0">JavaScript</a><ol><li><a href="#toc6" tabindex="0">コード</a></li><li><a href="#toc7" tabindex="0">解説</a><ol><li><a href="#toc8" tabindex="0">・グローバル変数の定義</a></li><li><a href="#toc9" tabindex="0">・ページ読み込み後、変数にHTML要素を設定</a></li><li><a href="#toc10" tabindex="0">・スタートボタン押下時に呼ばれる関数：start()</a></li><li><a href="#toc11" tabindex="0">・ストップボタン押下時に呼ばれる関数：stop()</a></li><li><a href="#toc12" tabindex="0">・リセットボタン押下時に呼ばれる関数：reset()</a></li><li><a href="#toc13" tabindex="0">・時間を計測する関数（再帰関数）：measureTime()</a></li></ol></li></ol></li><li><a href="#toc14" tabindex="0">デモ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">はじめに</span></h2>



<p>まずはストップウォッチの機能を考えます。<br>今回は以下の機能を持たせて実装しました。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ul class="wp-block-list"><li>時間を計測する</li><li>ボタン：スタート、ストップ、リセット<br>※ 各ボタンを押すと各ボタンの有効・無効を判定</li><li>一度ストップしてから再度スタートすると継続して時間を計測</li><li>リセットを押すと&#8221;00:00.000&#8243;表示となりリセットされる</li></ul>
</div>



<p>実際に作成したイメージ図がこちらです。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="509" height="249" src="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-09-0001.png" alt="" class="wp-image-4835" srcset="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-09-0001.png 509w, https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-09-0001-300x147.png 300w" sizes="auto, (max-width: 509px) 100vw, 509px" /></figure>



<h2 class="wp-block-heading"><span id="toc2">実装内容（フロー）</span></h2>



<p>次に箇条書きで処理フローを記述します。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list"><li>ボタンやタイマーの各要素を変数に設定</li><li>スタートボタン押下時：<ol><li>時間を計測して表示</li><li>スタートボタンを無効</li><li>ストップ、リセットボタンを有効 </li></ol></li><li>ストップボタン押下時：<ol><li>時間計測をストップし、停止時間を保持</li><li>停止時間を保持</li><li>スタート、リセットボタンを有効</li><li>ストップボタンを無効</li></ol></li><li>リセットボタン押下時：<ol><li>時間計測をストップし、時間計測に使用する変数や表示時間を初期化</li><li>スタートボタンを有効</li><li>ストップ、リセットボタンを無効</li></ol></li></ol>
</div>



<p>この流れで実際にコーディングを進めていきます。</p>



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



<p>まずはHTMLを作成していきます。<br>作成しているのは、以下の2つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box has-border-color has-brown-border-color">
<ol class="wp-block-list"><li>計測時間の表示</li><li>スタート・ストップ・リセットボタン</li></ol>
</div>



<pre class="wp-block-code html"><code>&lt;body&gt;
  &lt;div class="wrapper"&gt;

    &lt;!-- 計測時間を表示 --&gt;
    &lt;div id="time"&gt;00:00.000&lt;/div&gt;
    &lt;div&gt;

      &lt;!-- スタート・ストップ・リセットボタン --&gt;
      &lt;button id="start" onclick="start()"&gt;Start&lt;/button&gt;
      &lt;button id="stop" onclick="stop()" disabled&gt;Stop&lt;/button&gt;
      &lt;button id="reset" onclick="reset()" disabled&gt;Reset&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



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



<p>次にCSSでスタイルを決定します。<br>この辺りは好きなようにカスタマイズをしていただいて良いと思います！</p>



<p>特に記載するところはありませんが、<br>強いて言えばボタンは有効時、hoverすると色変化、カーソル変化。無効時は色変化のスタイルを設定しています。</p>



<pre class="wp-block-code css"><code>@charset "utf-8";

/*全体*/
.wrapper{
    font-family: arial, sans-serif;
	max-width: 600px;
	margin: 0 auto;
	color: #666;
	text-align: center;
}

/* 時間表示 */
#time{
    font-size: 60px;
    margin: 20px 0;
}

/*ボタン*/
button {
    padding: 20px 0;
    font-size: 30px;
    display: inline-block;
    padding: .8rem 1.6rem;
    border: none;
    color: #FFF;
    background-color: #B78D4A;
    border-radius: 15px;
}
button:hover {
    cursor: pointer;
    background-color: #D4BB92;
}
button:disabled {
    cursor: default;
    background-color: #D4BB92;
}
</code></pre>



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



<p>JavaScriptのコードと解説をしていきます。</p>



<h3 class="wp-block-heading"><span id="toc6">コード</span></h3>



<p>次項で詳しく解説していますが、コメントでも多少記述しています。<br>コピペも可能です！</p>



<pre class="wp-block-code javascript"><code>var startButton;    // startボタン
var stopButton;     // stopボタン
var resetButton;    // resetボタン
var showTime;       // 表示時間

var timer;              // setinterval, clearTimeoutで使用
var startTime;          // 開始時間
var elapsedTime = 0;    // 経過時間
var holdTime = 0;       // 一時停止用に時間を保持

window.onload = function () {
    startButton = document.getElementById("start");
    stopButton = document.getElementById("stop");
    resetButton = document.getElementById("reset");
    showTime = document.getElementById("time");
}

// スタートボタン押下時
function start(){
    // 開始時間を現在の時刻に設定
    startTime = Date.now();

    // 時間計測
    measureTime();

    startButton.disabled = true;
    stopButton.disabled = false;
    resetButton.disabled = false;
}

// ストップボタン押下時
function stop(){
    // タイマー停止
    clearInterval(timer);

    // 停止時間を保持
    holdTime += Date.now() - startTime;

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = false;
}

// リセットボタン押下時
function reset(){
    // タイマー停止
    clearInterval(timer);

    // 変数、表示を初期化
    elapsedTime = 0;
    holdTime = 0;
    showTime.textContent = "00:00.000";

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = true;
}

// 時間を計測（再帰関数）
function measureTime() {
    // タイマーを設定
    timer = setTimeout(function () {
        // 経過時間を設定し、画面へ表示
        elapsedTime = Date.now() - startTime + holdTime;
        showTime.textContent = new Date(elapsedTime).toISOString().slice(14, 23);
        
        // 関数を呼び出し、時間計測を継続する
        measureTime();
    }, 10);
}</code></pre>



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



<p>先述したコードに対して細かく解説していきます！</p>



<h4 class="wp-block-heading"><span id="toc8">・グローバル変数の定義</span></h4>



<pre class="wp-block-code javascript"><code>var startButton;    // startボタン
var stopButton;     // stopボタン
var resetButton;    // resetボタン
var showTime;       // 表示時間

var timer;              // setinterval, clearTimeoutで使用
var startTime;          // 開始時間
var elapsedTime = 0;    // 経過時間
var holdTime = 0;       // 一時停止用に時間を保持</code></pre>



<p>コメントでそれぞれ記載していますが、使用する変数を宣言します。</p>



<p>1～4行がボタン、計測時間の表示でこの後HTMLの要素を設定します。<br>5～9行が時間の計測に使用する変数です。</p>



<h4 class="wp-block-heading"><span id="toc9">・ページ読み込み後、変数にHTML要素を設定</span></h4>



<pre class="wp-block-code javascript"><code>window.onload = function () {
  startButton = document.getElementById("start");
  stopButton = document.getElementById("stop");
  resetButton = document.getElementById("reset");
  showTime = document.getElementById("time");
}</code></pre>



<p>ページ読み込み後、ボタンや計測時間の表示のidを指定して各変数にHTML要素を設定します。</p>



<h4 class="wp-block-heading"><span id="toc10">・スタートボタン押下時に呼ばれる関数：start()</span></h4>



<pre class="wp-block-code javascript"><code>// スタートボタン押下時
function start(){
    // 開始時間を現在の時刻に設定
    startTime = Date.now();

    // 時間計測
    measureTime();

    startButton.disabled = true;
    stopButton.disabled = false;
    resetButton.disabled = false;
}</code></pre>



<p>スタートボタン押下時に呼ばれる関数です。</p>



<p><span class="marker-under">startTime = Date.now();</span><br>時間計測に使用する[開始時間]を変数に設定します。</p>



<p><span class="marker-under">measureTime();</span><br>次に時間計測を行う関数を呼び出します。<br>時間計測に関しては関数の説明で詳しく説明します。</p>



<p>最後にスタートボタンを無効、ストップ、リセットボタンを有効にします。</p>



<h4 class="wp-block-heading"><span id="toc11">・ストップボタン押下時に呼ばれる関数：stop()</span></h4>



<pre class="wp-block-code javascript"><code>// ストップボタン押下時
function stop(){
    // タイマー停止
    clearInterval(timer);

    // 停止時間を保持
    holdTime += Date.now() - startTime;

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = false;
}</code></pre>



<p>ストップボタン押下時に呼ばれる関数です。</p>



<p><span class="marker-under">clearInterval(timer);</span><br>時間計測に使用しているタイマーを停止します。</p>



<p><span class="marker-under">holdTime += Date.now() &#8211; startTime;</span><br>一度ストップを押下して再度スタートボタンを押下した際、続きから時間を計測するため、停止時間を保持します。</p>



<p>最後にスタート、リセットボタンを有効、ストップボタンを無効にします。</p>



<h4 class="wp-block-heading"><span id="toc12">・リセットボタン押下時に呼ばれる関数：reset()</span></h4>



<pre class="wp-block-code javascript"><code>// リセットボタン押下時
function reset(){
    // タイマー停止
    clearInterval(timer);

    // 変数、表示を初期化
    elapsedTime = 0;
    holdTime = 0;
    showTime.textContent = "00:00.000";

    startButton.disabled = false;
    stopButton.disabled = true;
    resetButton.disabled = true;
}</code></pre>



<p>ストップボタン押下時に呼ばれる関数です。</p>



<p><span class="marker-under">clearInterval(timer);</span><br>時間計測に使用しているタイマーを停止します。</p>



<p><span class="marker-under">elapsedTime = 0;</span><br><span class="marker-under">holdTime = 0;</span><br><span class="marker-under">showTime.textContent = &#8220;00:00.000&#8221;;</span><br>時間計測に使用する変数や表示時間を初期化します。</p>



<p>最後にスタートボタンを有効、ストップ、リセットボタンを無効にします。</p>



<h4 class="wp-block-heading"><span id="toc13">・時間を計測する関数（再帰関数）：measureTime()</span></h4>



<pre class="wp-block-code javascript"><code>// 時間を計測（再帰関数）
function measureTime() {
    // タイマーを設定
    timer = setTimeout(function () {
        // 経過時間を設定し、画面へ表示
        elapsedTime = Date.now() - startTime + holdTime;
        showTime.textContent = new Date(elapsedTime).toISOString().slice(14, 23);
        
        // 関数を呼び出し、時間計測を継続する
        measureTime();
    }, 10);
}</code></pre>



<p>時間を計測する関数です。</p>



<p>4～11行目まででタイマーを設定します。</p>



<p><span class="marker-under">elapsedTime = Date.now() &#8211; startTime + holdTime;</span><br>計測時間を計算します。<br>[現在の時刻] &#8211; [開始時間] + [保持している時間]で導き出されます。<br>startTimeはスタートボタン押下時、holdTimeはストップボタンを押下時に設定しています。</p>



<p><span class="marker-under">showTime.textContent = new Date(elapsedTime).toISOString().slice(14, 23);</span><br>計算した計測時間を表示します。</p>



<p><span class="bold-red">toISOString()</span>：ISO形式の文字列で常にYYYY-MM-DDTHH:mm:ss.sssZ形式を返します。</p>



<p><span class="bold-red">slice(14, 23)</span>：先頭を0として14～23文字目までを取得しているので、<br>[YYYY-MM-DDTHH:<span class="marker-under-red"><span class="bold-red">mm:ss.sss</span></span>Z]の赤線（赤文字）がshowTime.textContentに渡されます。</p>



<p><span class="marker-under">measureTime();</span><br><span class="marker-under-red">処理中に自身を呼び出します</span>。<br>これでストップボタンが押されるまで時間計測が行われます。</p>



<h2 class="wp-block-heading"><span id="toc14">デモ</span></h2>



<p><a href="https://nyanblog2222.com/demo/stopwatch/" target="_blank">こちらがデモページ</a>になります。</p>



<p>良かったら試してみてください♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/4829/">【初心者】JavaScriptでストップウォッチの作り方</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/4829/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【初心者】JavaScriptでおみくじの作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/4764/</link>
					<comments>https://nyanblog2222.com/programming/javascript/4764/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 06 Sep 2022 14:43:10 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ramdom]]></category>
		<category><![CDATA[おみくじ]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=4764</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />今回はJavaScriptでおみくじを作成しました。三段階で作成してみましたので、初心者の方が勉強するのにおすすめですよ♪ 段階としては三段階で作成していきます。 目次 ボタンを押しておみくじを表示ソースコード解説おみく [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4764/">【初心者】JavaScriptでおみくじの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/66.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/66-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>今回はJavaScriptでおみくじを作成しました。<br>三段階で作成してみましたので、初心者の方が勉強するのにおすすめですよ♪</p>



<p>段階としては三段階で作成していきます。</p>



<ul class="wp-block-list">
<li>ボタンを押しておみくじを表示する</li>



<li>おみくじの結果の確率を設定する</li>



<li>ボタンを押しておみくじルーレットを表示する<br>おみくじは画像で表示する</li>
</ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ボタンを押しておみくじを表示</a><ol><li><a href="#toc2" tabindex="0">ソースコード</a></li><li><a href="#toc3" tabindex="0">解説</a></li></ol></li><li><a href="#toc4" tabindex="0">おみくじの結果の確率を設定</a><ol><li><a href="#toc5" tabindex="0">ソースコード</a></li><li><a href="#toc6" tabindex="0">解説</a></li></ol></li><li><a href="#toc7" tabindex="0">ボタンを押しておみくじルーレットを表示</a><ol><li><a href="#toc8" tabindex="0">ソースコード</a><ol><li><a href="#toc9" tabindex="0">HTML</a></li><li><a href="#toc10" tabindex="0">JavaScript</a></li></ol></li><li><a href="#toc11" tabindex="0">解説</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ボタンを押しておみくじを表示</span></h2>



<p>まずは一番簡単なコードで作成していきます。</p>



<p><a href="https://nyanblog2222.com/demo/omikuji1/" target="_blank">こちらがデモページ</a>になります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="415" height="445" src="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232523.png" alt="" class="wp-image-4791" srcset="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232523.png 415w, https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232523-280x300.png 280w" sizes="auto, (max-width: 415px) 100vw, 415px" /></figure>



<h3 class="wp-block-heading"><span id="toc2">ソースコード</span></h3>



<p>こちらがソースコードです。</p>



<pre class="wp-block-code html"><code>&lt;script&gt;
  window.onload = function () {
    // おみくじ
    // この順番が良い順番らしい（吉と中吉が逆になることも）
    const list = &#91;"大吉","吉","中吉","小吉","末吉","凶","大凶"];

    document.getElementById("button").onclick = function () {
      var random = Math.floor(Math.random() * list.length);
      document.getElementById("result").textContent = list&#91;random];
    }
  }
&lt;/script&gt;

&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;p&gt;おみくじ&lt;br&gt;ボタンをクリックしてください。&lt;/p&gt;
    &lt;div class="wrapper-button"&gt;
      &lt;button id="button" class="button"&gt;おみくじを引く&lt;/button&gt;
    &lt;/div&gt;
    &lt;p id="result"&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



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



<p><span class="marker-under">HTML</span></p>



<ul class="wp-block-list">
<li>17～19行目　ボタン：押すことでおみくじが引く</li>



<li>20行目　pタグ：おみくじの結果を表示</li>
</ul>



<p><span class="marker-under">JavaScript</span></p>



<ul class="wp-block-list">
<li>5行目　おみくじの結果をリストに設定</li>



<li>7～10行目　ボタンのクリックイベント</li>



<li>8行目　random関数を利用して0～リストの数までのランダムの数を作成<br>　　　  floor関数で小数を切り捨てて整数にする</li>



<li>9行目　8行目で作成した数字を使っておみくじ結果リストにアクセスし、id=&#8221;result&#8221;に設定</li>
</ul>



<h2 class="wp-block-heading"><span id="toc4">おみくじの結果の確率を設定</span></h2>



<p>続いて、おみくじの結果の確率を設定して出やすさを変えていきます。</p>



<p><a href="https://nyanblog2222.com/demo/omikuji2/" target="_blank">こちらがデモページ</a>になります。</p>



<h3 class="wp-block-heading"><span id="toc5">ソースコード</span></h3>



<p>こちらがソースコードです。</p>



<pre class="wp-block-code html"><code>&lt;script&gt;
  window.onload = function () {
    const list = {
      "大吉" : 10,
      "吉" : 15,
      "中吉" : 20,
      "小吉" : 25,
      "末吉" :15,
      "凶" : 10,
      "大凶" : 5,
    };

    document.getElementById("button").onclick = function () {
      var random = Math.floor(Math.random() * 100);
      var rate = 0;
      for(var data in list){
        rate += list&#91;data];
        if(random &lt;= rate){
          document.getElementById("result").textContent = data;
          return;
        }
      }
    }
  }
&lt;/script&gt;

&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;p&gt;おみくじ&lt;br&gt;ボタンをクリックしてください。&lt;/p&gt;
    &lt;div class="wrapper-button"&gt;
      &lt;button id="button" class="button"&gt;おみくじを引く&lt;/button&gt;
    &lt;/div&gt;
    &lt;p id="result"&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



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



<p>HTMLは変更なしのため、解説は割愛します。</p>



<p><span class="marker-under">JavaScript</span></p>



<ul class="wp-block-list">
<li>3～11行目　おみくじの結果を<span class="marker-under">連想配列</span>に設定<br>　　　 valueを数字にして確率を設定（数字が大きい方が出やすい）<br>　　　 ※ <span class="marker-under">全ての項目のvalueの和が100</span>になるように</li>



<li>13～23行目　ボタンのクリックイベント</li>



<li>14行目　random関数を利用して<span class="marker-under">0～100の数</span>までのランダムの数を作成<br>　　　　 floor関数で小数を切り捨てて整数にする</li>



<li>15～21行目　<span class="marker-under">14行目でランダムに設定した値を使い、for文で連想配列を回しながら14行目で取得した値の結果</span>をid=&#8221;result&#8221;に設定</li>
</ul>



<h2 class="wp-block-heading"><span id="toc7">ボタンを押しておみくじルーレットを表示</span></h2>



<p>最後にボタンを「START」「STOP」に変更しておみくじルーレットを作成します。<br>また、おみくじの結果は画像にしました。</p>



<p><a href="https://nyanblog2222.com/demo/omikuji3/" target="_blank">こちらがデモページ</a>になります。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232524.png" alt="" class="wp-image-4792" width="230" height="451" srcset="https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232524.png 306w, https://nyanblog2222.com/wp-content/uploads/2022/09/2022-09-05-232524-153x300.png 153w" sizes="auto, (max-width: 230px) 100vw, 230px" /><figcaption class="wp-element-caption">表示画面</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc8">ソースコード</span></h3>



<p>こちらがソースコードです。</p>



<h4 class="wp-block-heading"><span id="toc9">HTML</span></h4>



<pre class="wp-block-code html"><code>&lt;body&gt;
  &lt;div class="wrapper"&gt;
    &lt;p&gt;おみくじ&lt;br&gt;ボタンをクリックしてください。&lt;/p&gt;
    &lt;div class="wrapper-button"&gt;
      &lt;button id="button" class="button"&gt;START&lt;/button&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;img id="img" src="img/muji.png" alt=""&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;</code></pre>



<h4 class="wp-block-heading"><span id="toc10">JavaScript</span></h4>



<pre class="wp-block-code html"><code>window.onload = function () {

  const list = {
    "daikichi":10,
    "kichi":15,
    "chuukichi":20,
    "syoukichi":25,
    "suekichi":15,
    "kyou":10,
    "daikyou":5,
  };

  var timer;
  // START・STOPボタンクリックのイベント
  document.getElementById("button").onclick = function () {
    // START
    if (this.textContent == "START") {
      // ボタンのテキストを"STOP"に変更
      this.textContent = "STOP";

      // ルーレットタイマーを設定
      timer = setInterval(function () {
        var random = Math.floor(Math.random() * Object.keys(list).length);
        document.getElementById("img").src = "img/" + Object.keys(list)&#91;random] + ".png";
      }, 10);
    // STOP
    } else {
      // ボタンのテキストを"START"に変更
      this.textContent = "START";

      var rate = 0;
      var random = Math.floor(Math.random() * 100);
      for(var data in list){
        rate += list&#91;data];
        if(random &lt;= rate){
          document.getElementById("img").src = "img/" + data + ".png";

          // ルーレットタイマーを停止
          clearInterval(timer);
          return;
        }
      }
    }
  };
};</code></pre>



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



<p><span class="marker-under">HTML</span></p>



<ul class="wp-block-list">
<li>4～6行目　ボタン：押すことでおみくじが引く</li>



<li>7～9行目　pタグ：おみくじの結果を表示</li>
</ul>



<p><span class="marker-under">JavaScript</span></p>



<ul class="wp-block-list">
<li>3～11行目　おみくじの結果を<span class="marker-under">連想配列</span>に設定</li>



<li>15～行目　ボタンのクリックイベント</li>



<li>16～24行目　<span class="marker-under">START表示時</span>にクリックしたときの処理<br>・19行目　ボタン表示を[STOP]に変更<br>・22～25行目　タイマーを設定（ルーレットを作ります）<br>・23行目　randomにランダムに値を設定（0～連想配列の数）<br>・24行目　23行目の値を使って画像を設定</li>



<li>26～43行目　<span class="marker-under">STOP表示時</span>にクリックしたときの処理<br>・29行目　ボタン表示を[START]に変更<br>・31～42行目　[おみくじの結果の確率を設定]のおみくじの設定を流用<br>・39行目　タイマー解除</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2021/07/2645602.png" alt="みみねこ" class="speech-icon-image"/></figure><div class="speech-name">みみねこ</div></div><div class="speech-balloon">
<p>上記で簡単に解説していますが、</p>



<p>START表示の処理は[ボタンを押しておみくじを表示]、</p>



<p>STOP表示の処理は[おみくじの結果の確率を設定]の実装を流用しています！</p>
</div></div>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/4764/">【初心者】JavaScriptでおみくじの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/4764/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript／JS】Canvasとは？【HTML5／使い方】</title>
		<link>https://nyanblog2222.com/programming/html-css/699/</link>
					<comments>https://nyanblog2222.com/programming/html-css/699/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 21:19:50 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=699</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />皆さんCanvasを使用したことはありますか？今回はCanvasを使って、2Dの簡単な図形を描画する方法を紹介していきます。 目次 Canvasとは？HTMLの設定描画コンテキストの取得四角形を描画プロパティ関数実装線（ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/699/">【JavaScript／JS】Canvasとは？【HTML5／使い方】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/93.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/93-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>皆さんCanvasを使用したことはありますか？<br>今回はCanvasを使って、2Dの簡単な図形を描画する方法を紹介していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Canvasとは？</a></li><li><a href="#toc2" tabindex="0">HTMLの設定</a></li><li><a href="#toc3" tabindex="0">描画コンテキストの取得</a></li><li><a href="#toc4" tabindex="0">四角形を描画</a><ol><li><a href="#toc5" tabindex="0">プロパティ</a></li><li><a href="#toc6" tabindex="0">関数</a></li><li><a href="#toc7" tabindex="0">実装</a></li></ol></li><li><a href="#toc8" tabindex="0">線（パス）を描画</a><ol><li><a href="#toc9" tabindex="0">関数</a></li><li><a href="#toc10" tabindex="0">実装</a></li></ol></li><li><a href="#toc11" tabindex="0">円（円弧）の描画</a><ol><li><a href="#toc12" tabindex="0">関数</a></li><li><a href="#toc13" tabindex="0">実装</a></li></ol></li><li><a href="#toc14" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Canvasとは？</span></h2>



<p>Canvasとは、<strong><span style="color:#b78d4a" class="has-inline-color">HTML5から追加された2Dの図形を描画するための技術</span></strong>です。<br>使い方としては、HTMLで要素を作成・IDを指定し、JavaScriptで描画する内容を実装します。<br>例として、グラフを描く、写真を合成する、シンプルなアニメーションを表現することができます。</p>



<h2 class="wp-block-heading"><span id="toc2">HTMLの設定</span></h2>



<p>HTMLで<strong><span style="color:#b78d4a" class="has-inline-color">canvasを設定</span></strong>します。<br>JavaScriptで指定するために<strong><span style="color:#b78d4a" class="has-inline-color">id=&#8221;canvas&#8221;</span></strong>を指定しています。<br>属性で幅(width)、高さ(height)を設定していますが、JavaScriptでも設定が可能です。</p>



<p>また、canvasブロック内で”代替コンテンツ”と設定していますが、<br>これはcanvasに対応しないブラウザやJavaScriptを無効にしている場合、<strong><span style="color:#b78d4a" class="has-inline-color">代替コンテンツを出力</span></strong>しています。<br>代替コンテンツには、テキストや画像など設定することができます。</p>



<pre class="wp-block-code javascript"><code>&lt;body>
    &lt;canvas id="canvas" width="500" height="500">代替コンテンツ&lt;/canvas>
&lt;/body></code></pre>



<h2 class="wp-block-heading"><span id="toc3">描画コンテキストの取得</span></h2>



<p>HTMLでCanvasを設定しましたが、そのままでは何も描画されません。<br><strong><span style="color:#b78d4a" class="has-inline-color">getContext関数</span></strong>で、<strong><span style="color:#b78d4a" class="has-inline-color">コンテキスト</span></strong>を取得することができます。</p>



<pre class="wp-block-code javascript"><code>// HTMLの読込完了後に実行
window.onload = function () {
    // id='canvas'の要素を取得
    var canvas = document.getElementById('canvas');

    // 2次元の描画コンテキストを取得
    var ctx = canvas.getContext('2d');
}</code></pre>



<p>getContext関数の第1引数にコンテキストの種類を指定することができます。<br>今回は2次元の描画コンテキスト（CanvasRenderingContext2D）を取得しています。<br>他の設定値は以下の通りです。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">webgl</span></strong><br>3次元グラフィックス描画（WebGL <strong><span style="color:#b78d4a" class="has-inline-color">ver1</span></strong>）コンテキスト<br>（<strong><span style="color:#b78d4a" class="has-inline-color">WebGL</span></strong>RenderingContext） を取得します。</li><li><strong><span style="color:#b78d4a" class="has-inline-color">webgl2</span></strong><br>3次元グラフィックス描画（WebGL <strong><span style="color:#b78d4a" class="has-inline-color">ver2</span></strong>）コンテキスト　　　　　　（<strong><span style="color:#b78d4a" class="has-inline-color">WebGL2</span></strong>RenderingContext） を取得します。</li></ul>



<p><strong><span style="color:#b78d4a" class="has-inline-color">WebGL</span></strong>・・・Web用のOpenGL（グラフィック専用のライブラリ）</p>



<p>これで描画する準備ができました。<br>次項目から実際に図形を描画してみましょう。</p>



<h2 class="wp-block-heading"><span id="toc4">四角形を描画</span></h2>



<p>まずは四角形を描画してみましょう。<br>こちらのプロパティと関数を使って描画することができます。</p>



<h3 class="wp-block-heading"><span id="toc5">プロパティ</span></h3>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">fillStyle</span></strong>・・・塗りつぶしのスタイルを設定（色・グラデーション・パターン値）</li><li><strong><span style="color:#b78d4a" class="has-inline-color">strokeStyle</span></strong>・・・境界線のスタイルを設定（色・グラデーション・パターン値）</li><li><strong><span style="color:#b78d4a" class="has-inline-color">lineWidth</span></strong>・・・境界線の幅を設定</li></ul>



<h3 class="wp-block-heading"><span id="toc6">関数</span></h3>



<ul class="wp-block-list"><li><span style="color:#b78d4a" class="has-inline-color"><strong>fillRect(x, y, width, height)</strong></span>・・・塗りつぶし状態の四角形を描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">strokeRect(x, y, width, height)</span></strong>・・・四角形の境界線を描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">clearRect(x, y, width, height)</span></strong>・・・指定範囲の四角形を消去し、透明になる</li></ul>



<h3 class="wp-block-heading"><span id="toc7">実装</span></h3>



<p>それでは実際に描画してみましょう。<br>こちらがソースコードです。詳しい内容はコメントを記載しています。</p>



<pre class="wp-block-code javascript"><code>&lt;script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 塗りつぶしの色を設定
    ctx.fillStyle = "#FFF3D9";
    // 塗りつぶされた状態の四角形を描画
    ctx.fillRect(25, 25, 120, 150);

    // 指定範囲の四角形を消去し、透明になる
    ctx.clearRect(40, 45, 90, 75);

    // 境界線の色を設定
    ctx.strokeStyle = "#C6A35B";
    // 線の幅を設定
    ctx.lineWidth = 5;

    // 四角形の境界線を描画する
    ctx.strokeRect(60, 57.5, 50, 50);
&lt;/script></code></pre>



<p>こちらが実際に描画したcanvasです。</p>



<canvas id="canvas" width="200" height="200">代替コンテンツ</canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');

        // 塗りつぶしの色を設定
        ctx.fillStyle = "#FFF3D9";
        // 塗りつぶされた状態の四角形を描画
        ctx.fillRect(25, 25, 120, 150);

        // 指定範囲の四角形を消去し、透明になる
        ctx.clearRect(40, 45, 90, 75);

        // 境界線の色を設定
        ctx.strokeStyle = "#C6A35B";
        // 線の幅を設定
        ctx.lineWidth = 5;

        // 四角形の境界線を描画する
        ctx.strokeRect(60, 57.5, 50, 50);
    </script>



<h2 class="wp-block-heading"><span id="toc8">線（パス）を描画</span></h2>



<p>四角形の他には、パスを組み合わせて描画することで図形を表現することができます。<br>パスを用いた図形の描画では、次の関数を使用します。</p>



<h3 class="wp-block-heading"><span id="toc9">関数</span></h3>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">beginPath()</span></strong>・・・新規パスを作成。以降の描画呼び出しはパスを構築します。</li><li><strong><span style="color:#b78d4a" class="has-inline-color">closePath()</span></strong>・・・開始パスに直線を描画し、パスを閉じる</li><li><strong><span style="color:#b78d4a" class="has-inline-color">stroke()</span></strong>・・・境界線を描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">fill()</span></strong>・・・塗りつぶして描画</li><li><strong><span style="color:#b78d4a" class="has-inline-color">moveTo(x, y)</span></strong>・・・指定座標に移動</li><li><strong><span style="color:#b78d4a" class="has-inline-color">lineTo(x, y)</span></strong>・・・現在地から指定座標まで線を描画</li></ul>



<h3 class="wp-block-heading"><span id="toc10">実装</span></h3>



<p>実際に描画してみましょう。<br>詳細はコメントにそれぞれ記載していますので、実装しながらだと理解しやすいかもしれません。</p>



<pre class="wp-block-code javascript"><code>&lt;canvas id="canvas" width="200" height="200">代替コンテンツ&lt;/canvas>
&lt;script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 塗りつぶし
    ctx.beginPath();    // パス開始
    ctx.moveTo(50,30);  // x=50, y=30に移動
    ctx.lineTo(80,80);  // x=50→80, y=30→80へパスを設定
    ctx.lineTo(20,80);  // x=80→20, y=80→80へパスを設定
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#A2D7DD";  // 塗りつぶしの色を設定
    ctx.fill();  // 塗りつぶしで描画

    // 輪郭線
    ctx.beginPath();    // パス開始
    ctx.moveTo(10,120); // x=10, y=120に移動
    ctx.lineTo(80,20);  // x=10→80, y=120→20へパスを設定
    ctx.lineTo(180,70); // x=80→180, y=20→70へパスを設定
    ctx.closePath();    // パス終了
    ctx.strokeStyle = "#65C294";    // 輪郭線の色を設定
    ctx.stroke();       // 輪郭線で描画

    // 円（三日月）
    ctx.beginPath();    // パス開始
    ctx.arc(250, 60, 40, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF3D4";  // 塗りつぶしの色を設定
    ctx.fill();  // 塗りつぶしで描画

    ctx.beginPath();    // パス開始
    ctx.arc(270, 60, 25, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF";  // 塗りつぶしの色を設定
    ctx.fill();  // 塗りつぶしで描画

&lt;/script></code></pre>



<p>こちらが実際に描画したcanvasです。</p>



<canvas id="canvas2" width="200" height="200">代替コンテンツ</canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('canvas2');
        var ctx = canvas.getContext('2d');

        //塗りつぶし
        ctx.beginPath();
        ctx.moveTo(50,30);
        ctx.lineTo(80,80);
        ctx.lineTo(20,80);
        ctx.fillStyle = "#A2D7DD";
        ctx.fill();

        //輪郭線
        ctx.beginPath();
        ctx.moveTo(10,120);
        ctx.lineTo(80,20);
        ctx.lineTo(180,70);
        ctx.closePath();
        ctx.strokeStyle = "#65C294";
        ctx.stroke();
    </script>



<p>このようにして、パス使って図形を描画することができました。</p>



<p>注意点ですが、<span style="font-weight: bold; color: rgb(183, 141, 74);" class="has-inline-color">beginPath()の呼び出し直後は、どの関数が呼び出されてもmoveTo()として扱われ実行</span>されます。<br>例えると紙に書く時、鉛筆を紙に添えている動作をイメージしたものです。<br>そのため、基本的には、beginPath()の後や、canvasを新規で作成した後はmoveTo()を意識的に呼び出すようにしてください。</p>



<h2 class="wp-block-heading"><span id="toc11">円（円弧）の描画</span></h2>



<p>続いて、円（円弧）の描画についてです。<br>まずは関数の説明です。</p>



<h3 class="wp-block-heading"><span id="toc12">関数</span></h3>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">arc(x, y, radius, startAngle, endAngle</span></strong>[, anticlocwise]<strong><span style="color:#b78d4a" class="has-inline-color">)</span></strong>・・・円弧を描画<br>x,y=中心地、radius=半径、startAngle=開始角度、endAngle=終了角度、anticlocwise=周る方向（初期設定：時計回り）</li></ul>



<h3 class="wp-block-heading"><span id="toc13">実装</span></h3>



<p>続いて、ソースコードの内容です。<br>詳細はコメントに記載しています。</p>



<pre class="wp-block-code javascript"><code>&lt;canvas id="canvas" width="200" height="200">代替コンテンツ&lt;/canvas>
&lt;script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 円（三日月）大きい円
    ctx.beginPath();    // パス開始
    // (50, 60)を中心に半径40で0～360度分、円を描画
    ctx.arc(50, 60, 40, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF3D4";  // 塗りつぶしの色を設定（薄い黄色）
    ctx.fill();  // 塗りつぶしで描画

    // 円 小さい円で月の中を表現
    ctx.beginPath();    // パス開始
    // (70, 60)を中心に半径25で0～360度分、円を描画
    ctx.arc(70, 60, 25, 0, Math.PI * 2);
    ctx.closePath();    // パス終了
    ctx.fillStyle = "#FFF";  // 塗りつぶしの色を設定（白）
    ctx.fill();  // 塗りつぶしで描画

&lt;/script></code></pre>



<p>こちらが実際に描画したcanvasです。</p>



<canvas id="canvas3" width="200" height="200">代替コンテンツ</canvas>
    <script type="text/javascript">
        var canvas = document.getElementById('canvas3');
        var ctx = canvas.getContext('2d');

        // 円（三日月）
        ctx.beginPath();
        ctx.arc(50, 60, 40, 0, Math.PI * 2);
        ctx.closePath();
        ctx.fillStyle = "#FFF3D4";
        ctx.fill();

        ctx.beginPath();
        ctx.arc(70, 60, 25, 0, Math.PI * 2);
        ctx.closePath();
        ctx.fillStyle = "#FFF";
        ctx.fill();
    </script>



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



<p>今回はHTML5とJavaScriptを使用して、Canvasで2Dの描画をしてみました。<br>ぜひ試してみてくださいね！</p>



<p>今回の記事が何かの参考になれば幸いです♪　</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/699/">【JavaScript／JS】Canvasとは？【HTML5／使い方】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/699/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</title>
		<link>https://nyanblog2222.com/programming/javascript/1506/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1506/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Thu, 25 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[img要素]]></category>
		<category><![CDATA[画像]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1506</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はJavaScriptでcanvas要素を使って、複数の画像を1つのimg要素へ出力する方法をご紹介します。 同じフォルダ構成＋ファイル名の画像さえあれば、コピペで再現できます！ 目次 HTMLCSSJa [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1506/">【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/92.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/92-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はJavaScriptでcanvas要素を使って、複数の画像を1つのimg要素へ出力する方法をご紹介します。</p>



<p>同じフォルダ構成＋ファイル名の画像さえあれば、コピペで再現できます！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p>今回のHTMLは至ってシンプルです。<br><strong><span style="color:#b78d4a" class="has-inline-color">img要素を作成する親div</span></strong>を記述しています。</p>



<pre class="wp-block-code html"><code>&lt;body>
    &lt;div id="result">&lt;/div>
&lt;/body></code></pre>



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



<p>今回はCSSは使用していないので、不要です。<br>※ その代わりJavaScriptがしっかり目です。</p>



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



<p>JavaScriptはこちらです。<br>今回はJQueryは使っていません。</p>



<p>要所要所で、解説用にコメントを記述してみました。</p>



<pre class="wp-block-code javascript"><code>window.onload = function () {
    // 色々宣言・初期化
    var canvas = document.createElement("canvas");
    canvas.width = 0;
    canvas.height = 0;
    var images = &#91;];
    var srcs = &#91;
        'img/1.jpg',
        'img/2.jpg',
        'img/3.jpg',
        'img/4.jpg',
    ];
    var loadCount = 0;

    // Canvas上に画像を表示
    for (var i = 0; i &lt; srcs.length; i++) {
        // Imageのインスタンスを生成し、それぞれの画像を設定
        images&#91;i] = new Image();
        images&#91;i].src = srcs&#91;i];

        // 画像の読み込みが終わったら
        images&#91;i].onload = function () {
            // カウントを取る
            loadCount++;

            // 画像全てloadが終わったら
            if (loadCount === images.length) {
                // ロード後の処理
                loadProcess(images, canvas);
            }
        };
    }
};

// ロード後の処理
function loadProcess(images, canvas) {
    // 画像それぞれのサイズを計算して、canvasのサイズを設定
    setCanvasSize(images, canvas);

    // canvasをクリアにする
    let ctx = canvas.getContext('2d');
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // カンバスに画像を描画
    drowImage(images, ctx);

    // canvasを画像に変換
    canvasToImage(canvas);
}

// カンバスサイズを設定
function setCanvasSize(images, canvas) {
    for (let i = 0; i &lt; images.length; i++) {
        // 横幅は一番大きい画像に設定
        if (canvas.width &lt; images&#91;i].naturalWidth) {
            canvas.width = images&#91;i].naturalWidth;
        }
        // 高さはプラスしていく
        canvas.height += images&#91;i].naturalHeight;
    }
}

// カンバスに画像を描画
function drowImage(images, ctx) {
    var set_y = 0;
    for (let i = 0; i &lt; images.length; i++) {
        ctx.drawImage(images&#91;i], 0, set_y);
        // 前の画像分、高さをずらして表示させるため、set_yに現在の画像の高さを設定
        set_y += images&#91;i].naturalHeight;
    }
}

// canvasからImgに変換
function canvasToImage(canvas) {
    // img要素を作成
    var outputImg = document.createElement('img');
    // canvasを画像に変換
    outputImg.src = canvas.toDataURL('image/png');
    // 変換したimg要素をdiv要素の中に追加
    document.getElementById('result').appendChild(outputImg);
}</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/canvas_img/" target="_blank">デモページはこちら</a></strong>です。<br>サイズの取得を確認できるよう、さまざまな画像を使ってみました。</p>



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



<p>いかがでしたでしょうか。<br>このようなcanvasの使い方もできるんですねぇ。。。<br>色んな描画の使い方ができるので、もっと！もっと！とできるようになりたいです。<br>（ちょっとしたミニゲームっぽいのもそろそろ作ってみたい。。。）</p>



<p>今回に限った話ではないですが、実務でC#をやっておきながら、JavaScriptでオブジェクト指向の書き方が全然できておらず、猛勉強中です。</p>



<p>可読性も上げたいと思っているので、近いうちに記事にできるようしっかり勉強していきます。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1506/">【JavaScript】Canvasで複数の画像を1つのimgタグで順番に出力してみよう【HTML5】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1506/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】アナログ時計の作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/1382/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1382/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 24 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Dateオブジェクト]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1382</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。先日JavaScriptでカウントダウンタイマーを作成してみました！詳しくはこちらをご欄ください。 今回はDateオブジェクトを使用して、アナログ時計を作成してみました。良かったら試してみてください。 目次  [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1382/">【JavaScript】アナログ時計の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/64.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/64-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。先日JavaScriptでカウントダウンタイマーを作成してみました！<br>詳しくはこちらをご欄ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/1200/" title="【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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/69-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/69-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/69-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JavaScript】カウントダウンタイマーの作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JavaScript（JS）でカウントダウンタイマーを作成しました。サンプル付きでデモもあるので分かりやすくなっています。コピペでも良いのでよかったら試してみてください♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.08.13</div></div></div></div></a>
</div></figure>



<p>今回はDateオブジェクトを使用して、アナログ時計を作成してみました。<br>良かったら試してみてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML</a></li><li><a href="#toc2" tabindex="0">CSS</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p>まずは、HTMLからです。<br>それぞれの役割はこちらです。</p>



<p>wrapperクラス：ラッパー<br>clockクラス：時計全体<br>scaleクラス：時計のメモリの枠<br>　※ JavaScriptでそれぞれのメモリを設定します。<br>hourクラス：時針<br>minクラス：分針<br>secクラス：秒針</p>



<pre class="wp-block-code html"><code>&lt;body&gt;
    &lt;div class="wrapper"&gt;
        &lt;div class="clock"&gt;
            &lt;div class="scale"&gt;&lt;/div&gt;
            &lt;div class="hour line"&gt;&lt;/div&gt;
            &lt;div class="min line"&gt;&lt;/div&gt;
            &lt;div class="sec line"&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;</code></pre>



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



<p>こちらがスタイルの設定です。</p>



<pre class="wp-block-code css"><code>@<strong>charset</strong> "utf-8";

.wrapper {
    width: 100%;
    padding: 40px;
    box-sizing: border-box;

    display: flex;
    align-items: center;
    flex-direction: column;
}

.clock {
    background-color: rgba(255, 243, 217, 0.2);
    border: 3px solid #C6A35B;
    width: 400px;
    height: 400px;
    position: relative;
    border-radius: 50%;
}

.clock::after {
    width: 16px;
    height: 16px;
    background: #C6A35B;
    content: "";

    position: absolute;
    top: calc(50% - 8px);
    left: calc(50% - 8px);
    border-radius: 50%;
}

.line {
    position: absolute;
    transform-origin: bottom;
}

.hour {
    width: 8px;
    height: 140px;
    background: #C6A35B;
    top: calc(50% - 140px);
    left: calc(50% - 4px);
}

.min {
    width: 4px;
    height: 180px;
    background: #C6A35B;
    top: calc(50% - 180px);
    left: calc(50% - 2px);
}

.sec {
    width: 1px;
    height: 180px;
    background: #D4BB92;
    top: calc(50% - 180px);
    left: calc(50% - 0.5px);
}

.scale {
    position: relative;
    width: 100%;
    height: 100%;
}

.scale &gt; <strong>div</strong> {
    position: absolute;
    top: 0;
    left: calc(50% - 2px);
    width: 4px;
    height: 50%;
    transform-origin: bottom;
}

.scale &gt; <strong>div</strong>::after {
    position: absolute;
    top: 0;
    content: "";
    width: 4px;
    height: 12px;
    background-color: #C6A35B;
}</code></pre>



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



<p>JavaScriptで針の動きと、時計のメモリを設定しています。</p>



<p>・setIntervalは1秒ごとなので1000でも良いですが、起動後に1秒待つ必要があるため、100で設定しています。<br>・針やメモリはstyle.transformでrotateを指定して角度を設定しています。<br>・window.onloadの関数内では、scaleクラスの要素の最後にdiv要素を追加しています。</p>



<pre class="wp-block-code javascript"><code>setInterval(<strong>function</strong> () {
    <em>// 時間を取得</em>
    <strong>var</strong> now = <strong>new</strong> Date();

    <em>// 針の角度</em>
    <strong>var</strong> deg_h = now.getHours() * (360 / 12) + now.getMinutes() * (360 / 12 / 60);
    <strong>var</strong> deg_m = now.getMinutes() * (360 / 60);
    <strong>var</strong> deg_s = now.getSeconds() * (360 / 60);

    <em>// それぞれの針に角度を設定</em>
    document.querySelector(".hour").style.transform = `rotate(${deg_h}deg)`;
    document.querySelector(".min").style.transform = `rotate(${deg_m}deg)`;
    document.querySelector(".sec").style.transform = `rotate(${deg_s}deg)`;
}, 100);

window.onload = <strong>function</strong> () {
    <em>// メモリを追加</em>
    <strong>for</strong> (<strong>let</strong> i = 1; i &lt;= 12; i++) {
        <em>// scaleクラスの要素の最後にdiv要素を追加</em>
        <strong>let</strong> scaleElem = document.querySelector(".scale");
        <strong>let</strong> addElem = document.createElement("div");
        scaleElem.appendChild(addElem);

        <em>// 角度をつける</em>
        document.querySelector(".scale div:nth-child(" + i + ")").style.transform = `rotate(${i * 30}deg)`;
    }
}</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/analog_clock/" target="_blank">デモページはこちら</a></strong>です。<br>実際の時刻に合わせて時計が動いているのが分かります。</p>



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



<p>いかがでしたでしょうか。<br>今回はJavaScriptでアナログ時計を作成してみました。</p>



<p>Dateオブジェクト以外にも、CSSのtransformの使い方やJavaScriptで要素内に要素を追加する方法も中で行っているので、ぜひ試してみてください。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1382/">【JavaScript】アナログ時計の作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1382/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>＜input type=&#8221;file&#8221;＞で読み込んだ画像を表示させよう【JavaScript】</title>
		<link>https://nyanblog2222.com/programming/javascript/1132/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1132/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Fri, 05 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[input要素]]></category>
		<category><![CDATA[画像表示]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1132</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />前回は、＜input type = &#8220;file&#8221;＞で選択するボタンの装飾について説明しました。詳しくは、こちらをご覧ください。 今回はinput要素で読み込んだ画像を表示させてみようと思います。そ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1132/">＜input type=&#8221;file&#8221;＞で読み込んだ画像を表示させよう【JavaScript】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/91.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/91-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>前回は、＜input type = &#8220;file&#8221;＞で選択するボタンの装飾について説明しました。<br>詳しくは、こちらをご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/html-css/1102/" title="ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&quot;file&quot;＞" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/90-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/90-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ファイルを選択するボタンの画像やスタイルを設定する方法＜input type="file"＞</div><div class="blogcard-snippet internal-blogcard-snippet">input要素において、「確認する」ボタンを でsrc属性に画像のパスを設定すると、「確認する」ボタンを画像に設定することができます。しかし、ファイルを選択するinput要素では、既にtype = &quot;file&quot;が設定されているため、少し工夫が必要になります！今回は選択ボタンの画像やスタイルの変更をいく...</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.03</div></div></div></div></a>
</div></figure>



<p><br>今回はinput要素で読み込んだ画像を表示させてみようと思います。<br>それでは、img要素とdiv要素それぞれのパターンでみていきましょう。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【サンプル1】img要素に出力</a></li><li><a href="#toc2" tabindex="0">【サンプル2】div要素に出力</a></li><li><a href="#toc3" tabindex="0">デモ</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【サンプル1】img要素に出力</span></h2>



<p>まずは、img要素に出力してみます。<br>input要素、type=&#8221;file&#8221;では、<strong><span style="color:#b78d4a" class="has-inline-color">ファイルを選択後、onchangeのイベントが呼ばれます</span></strong>。<br>JavaScriptでは、<strong><span style="color:#b78d4a" class="has-inline-color">on(&#8220;change&#8221;, function())関数</span></strong>です。</p>



<p>HTMLではinput要素とimg要素を宣言します。</p>



<pre class="wp-block-code html"><code>&lt;input type="file" id="input1"/&gt;
&lt;img id="sample1"&gt;</code></pre>



<p>JavaScriptに1～4の内容を記述します。</p>



<p>1. ファイル選択後に呼ばれるイベントを記述<br>2. イベント内で画像ファイルの読み込みクラスを設定<br>3. 読み込みクラスの準備が終わったらimg要素のsrc属性に画像ファイルの情報を設定<br>4. 読み込んだ画像ファイルをURLに変換</p>



<pre class="wp-block-code javascript"><code>// 1. ファイル選択後に呼ばれるイベント
$("#input1").on("change", function (e) {

    // 2. 画像ファイルの読み込みクラス
    var reader = new FileReader();

    // 3. 準備が終わったら、id=sample1のsrc属性に選択した画像ファイルの情報を設定
    reader.onload = function (e) {
        $("#sample1").attr("src", e.target.result);
    }

    // 4. 読み込んだ画像ファイルをURLに変換
    reader.readAsDataURL(e.target.files&#91;0]);
});</code></pre>



<h2 class="wp-block-heading"><span id="toc2">【サンプル2】div要素に出力</span></h2>



<p>次はdiv要素に画像ファイルを出力してみます。<br>JavaScriptの記述方法も変えてみました。</p>



<p>先ほどと異なり、input要素の<strong><span style="color:#b78d4a" class="has-inline-color">onchange属性にOutputImage関数を設定</span></strong>しています。</p>



<pre class="wp-block-code html"><code>&lt;input type="file" id="input2" onchange="OutputImage(this);"/>
&lt;div id="sample2">&lt;/div></code></pre>



<p>JavaScriptではサンプル1と同様、ファイル読み込みクラスを使用して、画像を表示させます。<br>サンプル1と異なるのはImageクラスを使って、<strong><span style="color:#b78d4a" class="has-inline-color">heightとwidthの設定を追加</span></strong>しています。</p>



<p>1. input要素のonchange属性に関数を設定<br>2. イベント内で画像ファイルの読み込みクラスを設定<br>3. 読み込みクラスの準備が終わったら画像の情報を設定<br>4. Imageクラスに読み込んだ画像の情報を設定し、div要素に読み込んだ画像の縦・横のサイズを設定<br>5. backgroundスタイルを設定<br>6. 読み込んだ画像ファイルをURLに変換</p>



<pre class="wp-block-code javascript"><code>// 1. onchange属性に設定した関数
function OutputImage(target)
{
    // 2. ファイル読み込みクラス
    var reader = new FileReader();

    // 3. 読み込みクラスの準備が終わった後、画像の情報を設定
    reader.onload = function () {
        $sample2 = $("#sample2");

        // 4. Imageクラスを使ってdiv要素に画像のheightとwidthのサイズを設定
        img = new Image();
        img.src = this.result;
        img.onload = function() {
            $sample2.css("width", img.naturalWidth);
            $sample2.css("height", img.naturalHeight);
        }
        // 5. backgroundスタイルを設定
        $sample2.css("background", "url(" + this.result + ") center center / contain no-repeat");
    }
    // 6. 読み込んだ画像ファイルをURLに変換
    reader.readAsDataURL(target.files&#91;0]);
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">デモ</span></h2>



<p>こちらがサンプル1とサンプル2のデモです。<br>内容は一緒ですが、出力方法や要素がimgかdivであることが異なります。</p>



<style type="text/css">
        #demo > div {
margin: 1rem;
}

        #demo p {
margin: 0;
}

#demo input {
height: auto;
    padding: 0;
border: none;
}
    </style>

<div id="demo">
           
        <div>
            <p>サンプル1</p>
            <input type="file" id="input1">
            <img id="sample1">
        </div>
        
        <div>
            <p>サンプル2</p>
            <input type="file" id="input2" onchange="OutputImage(this);">
            <div id="sample2"></div>
        </div>
        
        </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script type="text/javascript">
        $("#input1").on("change", function (e) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $("#sample1").attr("src", e.target.result);
            }
            reader.readAsDataURL(e.target.files[0]);
        });
        
        function OutputImage(target)
        {
            var reader = new FileReader();
            reader.onload = function () {
                $sample2 = $("#sample2");
                img = new Image();
                img.src = this.result;
                img.onload = function() {
                    $sample2.css("width", img.naturalWidth);
                    $sample2.css("height", img.naturalHeight);
                }
                $sample2.css("background", "url(" + this.result + ") center center / contain no-repeat");
            }
            reader.readAsDataURL(target.files[0]);
        }
    </script>



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



<p>今回はinput type=file要素で取得した画像ファイルを出力する方法を説明していきました。<br>divに関して、今回例で試してみただけなので、別の要素でも試してみてください。<br>次回は複数ファイルを読み込んで出力してみましょう。</p>



<p>本記事をご覧いただきありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1132/">＜input type=&#8221;file&#8221;＞で読み込んだ画像を表示させよう【JavaScript】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1132/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&#8221;file&#8221;＞</title>
		<link>https://nyanblog2222.com/programming/html-css/1102/</link>
					<comments>https://nyanblog2222.com/programming/html-css/1102/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 03 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[input要素]]></category>
		<category><![CDATA[ファイルを選択]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1102</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />input要素において、「確認する」ボタンを ＜input type = &#8220;image&#8221;＞ でsrc属性に画像のパスを設定すると、「確認する」ボタンを画像に設定することができます。 しかし、ファイ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/1102/">ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&#8221;file&#8221;＞</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/90.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/90-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>input要素において、「確認する」ボタンを ＜input type = &#8220;image&#8221;＞ でsrc属性に画像のパスを設定すると、「確認する」ボタンを画像に設定することができます。</p>



<p>しかし、ファイルを選択するinput要素では、既にtype = &#8220;file&#8221;が設定されているため、少し工夫が必要になります！<br>今回は選択ボタンの画像やスタイルの変更をいくつかの方法でご紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【サンプル1】ボタンを画像に設定する</a></li><li><a href="#toc2" tabindex="0">ボタンのスタイルを変更</a><ol><li><a href="#toc3" tabindex="0">【サンプル2】&lt;label&gt;で囲んでスタイルを設定</a></li><li><a href="#toc4" tabindex="0">【サンプル3】CSSとJavaScriptを使ってスタイルを変更</a></li></ol></li><li><a href="#toc5" tabindex="0">デモ</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【サンプル1】ボタンを画像に設定する</span></h2>



<p>ボタンを画像にする方法について、<br>HTMLでは、<strong><span style="color:#b78d4a" class="has-inline-color">input要素をlabel要素</span></strong>で囲みます。</p>



<pre class="wp-block-code html"><code>&lt;label id="sample1"&gt;
   &lt;input type="file"/&gt;
&lt;/label&gt;</code></pre>



<p>CSSでlabel要素に画像を設定します。<br>他にもサイズやポインタなど、スタイルを変更しておきましょう。</p>



<p>デフォルトでinput要素はボタンが出力されるので、display: none; で表示を消しておきます。</p>



<p>また、hoverの疑似クラスで別の画像を設定しておくと、少し動きが出ますね。</p>



<pre class="wp-block-code css"><code><strong>#sample1</strong> {
    // サイズを設定
    height: 54px;
    width: 150px;

    // ボタンにする画像を設定
    background: url(../img/sample1.png) center center / contain no-repeat;

    // インラインボックスに設定
    display: inline-block;
    // マウスカーソルを当てた時、ポインタに設定
    cursor: pointer;
}

<strong>#sample1</strong>:hover {
    background: url(../img/sample1_hover.png) center center / contain no-repeat;
}

<strong>#sample1</strong> <strong>input</strong>{
    // デフォルトのinputは出力なし
    display: none;
}</code></pre>



<p>また、今回はサンプルなので簡単な画像なのですが、<br>この程度の画像の動きであればスタイルでも実現可能です。</p>



<h2 class="wp-block-heading"><span id="toc2">ボタンのスタイルを変更</span></h2>



<h3 class="wp-block-heading"><span id="toc3">【サンプル2】&lt;label&gt;で囲んでスタイルを設定</span></h3>



<p>先ほどの画像の設定と同様にinput要素をlabel要素で囲みます。</p>



<pre class="wp-block-code html"><code>&lt;label id="sample2">
   &lt;input type="file"/>
&lt;/label></code></pre>



<p>続いて、今度はlabel要素をCSSで設定していきます。</p>



<pre class="wp-block-code css"><code>#sample2 {
  position: relative;
  display: inline-block;
  padding: 0.25em 0.5em;
  text-decoration: none;
  background: #00BCD4;/*背景色*/
  color: #00BCD4;/*=背景色*/
  box-shadow: inset 0 2px 0 rgba(255,255,255,0.2);
  border-bottom: solid 2px #118e9e;
  border-radius: 4px;
  font-weight: bold;
  text-shadow: -1px -1px rgba(255, 255, 255, 0.44), 1px 1px rgba(0, 0, 0, 0.38);
  cursor: pointer;
}

#sample2:active {
  /*押したとき*/
  border-bottom: solid 2px #00BCD4;
  box-shadow: none;
  text-shadow: -1px -1px rgba(255, 255, 255, 0.3), 1px 1px rgba(0, 0, 0, 0.3);
}

#sample2 input{
    // デフォルトのinputは出力なし
    display: none;
}</code></pre>



<h3 class="wp-block-heading"><span id="toc4">【サンプル3】CSSとJavaScriptを使ってスタイルを変更</span></h3>



<p>次はdiv要素でボタンを作成し、CSSで装飾を付けます。<br>input要素はサンプル2と同様、出力しないようにします。</p>



<pre class="wp-block-code html"><code>&lt;div id="sample3">ファイルを選択&lt;/div>
&lt;input type="file" id="sample3_input"/></code></pre>



<pre class="wp-block-code css"><code>#sample3 {
    position: relative;
    display: inline-block;
    padding: 0.75em 1.25em;
    text-decoration: none;
    color: #FFF;
    background: #03A9F4;/*色*/
    border: solid 1px #0f9ada;/*線色*/
    border-radius: 4px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
    text-shadow: 0 1px 0 rgba(0,0,0,0.2);
    cursor: pointer;
}

#sample3:active {
    border: solid 1px #03A9F4;
    box-shadow: none;
    text-shadow: none;
}

#sample3 input{
    // デフォルトのinputは出力なし
    display: none;
}</code></pre>



<p>JavaScriptでdiv要素をクリックしたときに、input要素をクリックしたイベントを呼び出します。<br>今回はJQueryで記述しています。</p>



<pre class="wp-block-code javascript"><code>$(function () {
    $('#sample3').click(function() {
        $('#sample3_input').trigger('click');
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc5">デモ</span></h2>



<p>今までのサンプルそれぞれのデモです。<br>ボタンをクリックするとダイアログが表示されますが、ファイルを選択しても何も起こりません。</p>



<style type="text/css">
#demo > div {
margin: 1rem;
}

        #demo p {
margin: 0;
}

#demo input {
height: auto;
    padding: 0;
border: none;
}

#sample1 {
height: 54px;
width: 150px;
background: url(https://nyanblog2222.com/wp-content/uploads/2020/06/sample1.png) center center / contain no-repeat;
display: inline-block;
cursor: pointer;
}

#sample1:hover {
background: url(https://nyanblog2222.com/wp-content/uploads/2020/06/sample1_hover.png) center center / contain no-repeat;
}

#sample1 input,
#sample2 input,
#sample3_input {
display: none;
}

#sample2 {
position: relative;
display: inline-block;
padding: 0.75em 1.25em;
text-decoration: none;
background: #fd9535;/*背景色*/
color: #d27d00;/*=背景色*/
box-shadow: inset 0 2px 0 rgba(255,255,255,0.2);
border-bottom: solid 2px #d27d00;
border-radius: 4px;
font-weight: bold;
text-shadow: -1px -1px rgba(255, 255, 255, 0.44), 1px 1px rgba(0, 0, 0, 0.38);
cursor: pointer;
}

#sample2:active {
border-bottom: solid 2px #fd9535;
box-shadow: none;
text-shadow: -1px -1px rgba(255, 255, 255, 0.3), 1px 1px rgba(0, 0, 0, 0.3);
}

#sample3 {
position: relative;
display: inline-block;
padding: 0.75em 1.25em;
text-decoration: none;
color: #FFF;
background: #03A9F4;/*色*/
border: solid 1px #0f9ada;/*線色*/
border-radius: 4px;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
text-shadow: 0 1px 0 rgba(0,0,0,0.2);
margin: 0;
cursor: pointer;
}

#sample3:active {
/*押したとき*/
border: solid 1px #03A9F4;
box-shadow: none;
text-shadow: none;
}

    </style>
   
    <div id="demo">
        <div>
            <p>デフォルト</p>
            <input type="file">
        </div>
           
        <div>
            <p>サンプル1</p>
            <label id="sample1">
                <input type="file">
            </label>
        </div>
        
        <div>
            <p>サンプル2</p>
            <label id="sample2">ファイルを選択
                <input type="file">
            </label>
        </div>
        
        <div>
            <p>サンプル3</p>
            <div id="sample3">ファイルを選択</div>
            <input type="file" id="sample3_input">
        </div>
        </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#sample3').click(function() {
                $('#sample3_input').trigger('click');
            });
        });
    </script>



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



<p>今回はinput要素でファイル選択ボタンのスタイルを変更や、画像の設定を行いました。</p>



<p>ぜひ色々試してみてくださいね！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/1102/">ファイルを選択するボタンの画像やスタイルを設定する方法＜input type=&#8221;file&#8221;＞</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/1102/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【JavaScript】非同期処理と処理の順番について【初心者・入門】</title>
		<link>https://nyanblog2222.com/programming/javascript/984/</link>
					<comments>https://nyanblog2222.com/programming/javascript/984/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 02 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[同期処理]]></category>
		<category><![CDATA[非同期処理]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=984</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />JavaScriptは同期的でシングルスレッドの処理で実行されていますが、非同期処理が可能な言語です。ここでは、非同期処理と同期処理・スレッドについてまず説明し、その後処理の順番について説明していきます。 目次 同期処理 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/984/">【JavaScript】非同期処理と処理の順番について【初心者・入門】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/78.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/78-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>JavaScriptは同期的でシングルスレッドの処理で実行されていますが、非同期処理が可能な言語です。<br>ここでは、<strong><span style="color:#b78d4a" class="has-inline-color">非同期処理と同期処理・スレッド</span></strong>についてまず説明し、その後<strong><span style="color:#b78d4a" class="has-inline-color">処理の順番</span></strong>について説明していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">同期処理と非同期処理</a><ol><li><a href="#toc2" tabindex="0">同期処理</a></li><li><a href="#toc3" tabindex="0">非同期処理</a></li></ol></li><li><a href="#toc4" tabindex="0">スレッドについて</a></li><li><a href="#toc5" tabindex="0">処理の順番</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">同期処理と非同期処理</span></h2>



<h3 class="wp-block-heading"><span id="toc2">同期処理</span></h3>



<p><strong><span style="color:#b78d4a" class="has-inline-color">同期処理はプログラムの記述順に1つずつ実行</span></strong>されます。<br>そのため、次の処理は前の処理が終わらないと実行することができません。</p>



<h3 class="wp-block-heading"><span id="toc3">非同期処理</span></h3>



<p>非同期処理は同期処理と異なり<strong><span style="color:#b78d4a" class="has-inline-color">処理が実行する準備をしている空き時間の間に、別の処理を実行</span></strong>することができます。</p>



<p>この説明だけだと、<strong><span style="color:#b78d4a" class="has-inline-color">非同期処理は並列で色んな処理ができるってこと？</span></strong>と思うかもしれません。</p>



<p>答えは　<strong><span style="color:#b78d4a" class="has-inline-color">「No」</span></strong>　です。</p>



<p>あくまで、準備している空き時間を活用しているだけなので、並列で複数の処理ができるわけではありません。<br><strong><span style="color:#b78d4a" class="has-inline-color">並列処理を行うためにはマルチスレッドで処理を実行</span></strong>する必要がありますが、<strong><span style="color:#b78d4a" class="has-inline-color">JavaScriptはシングルスレッド</span></strong>で動きますので、<strong><span style="color:#b78d4a" class="has-inline-color">並列処理ではなく、並行処理</span></strong>と言えます。</p>



<p>並列処理と並行処理の違いはこちらです。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">並列処理</span></strong><br>物理的に<strong><span style="color:#b78d4a" class="has-inline-color">複数の処理を同時に実行</span></strong>することができる</li><li><strong><span style="color:#b78d4a" class="has-inline-color">並行処理</span></strong><br>常に<strong><span style="color:#b78d4a" class="has-inline-color">1つの処理のみ実行</span></strong>しているが、タイミングを見計らって<strong><span style="color:#b78d4a" class="has-inline-color">処理を切り替えて処理を効率よく実行</span></strong>する<br><strong><span style="color:#b78d4a" class="has-inline-color">同時に実行しているように見せかけている</span></strong></li></ul>



<h2 class="wp-block-heading"><span id="toc4">スレッドについて</span></h2>



<p>先ほど<strong><span style="color:#b78d4a" class="has-inline-color">シングルスレッド</span></strong>と<strong><span style="color:#b78d4a" class="has-inline-color">マルチスレッド</span></strong>について話が出てきましたが、<strong><span style="color:#b78d4a" class="has-inline-color">スレッド</span></strong>とは何でしょうか。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">スレッド</span></strong>とは、1つ1つ実行する処理を表します。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">シングルスレッド</span></strong>はその名の通り1つの処理を実行することができます。</p>



<p>対し、<strong><span style="color:#b78d4a" class="has-inline-color">マルチスレッド</span></strong>は複数の処理を実行することができます。</p>



<p>これを先ほどの並列処理と並行処理に当てはめると、このようになります。</p>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">並列処理</span></strong>・・・マルチスレッドで実行</li><li><strong><span style="color:#b78d4a" class="has-inline-color">並行処理</span></strong>・・・シングルスレッドで実行</li></ul>



<p>JavaScriptは<strong><span style="color:#b78d4a" class="has-inline-color">シングルスレッド</span></strong>のため、<strong><span style="color:#b78d4a" class="has-inline-color">並行処理をしている</span></strong>ことになりますね。</p>



<h2 class="wp-block-heading"><span id="toc5">処理の順番</span></h2>



<p>さて先述のようにJavaScriptはシングルスレッドであることが理解できましたが、並行処理をしているということは、<strong><span style="color:#b78d4a" class="has-inline-color">処理の順番が入れ替わってしまうこと</span></strong>があります。</p>



<p>JavaScriptは<strong><span style="color:#b78d4a" class="has-inline-color">上から順番でキューに関数を登録し、処理</span></strong>しています。<br>しかし、処理が同期的なものと非同期的なものによって、順番が入れ替わることがあります。</p>



<p>＜上から順番に処理する＞</p>



<pre class="wp-block-code javascript"><code>console.log("one");
console.log("two");
console.log("three");</code></pre>



<p>実行結果</p>



<pre class="wp-block-code plaintext"><code>one
two
three</code></pre>



<p>＜順番が入れ替わっている＞</p>



<pre class="wp-block-code javascript"><code>console.log("one");
setTimeout(function(){console.log("two")}, 0);
console.log("three");</code></pre>



<p>実行結果</p>



<pre class="wp-block-code plaintext"><code>one
three
two</code></pre>



<p>順番が入れ替わっているパターンでは<strong><span style="color:#b78d4a" class="has-inline-color">「setTimeout」関数のタイマーを0ミリ秒で設定</span></strong>しています。<br>ここで不思議なのは、タイマーは0ミリ秒…つまり待ち時間なしで実行するように記述されていますが、実際の実行結果はone→<strong><span style="color:#b78d4a" class="has-inline-color">three→two</span></strong>と<strong><span style="color:#b78d4a" class="has-inline-color">2行目と3行目の順番が入れ替わって</span></strong>います。</p>



<p>キューに登録されているのは、<br>　1. ログ表示　&#8221;one&#8221;<br>　2. タイマー登録　0ミリ秒<br>　3. ログ表示　&#8221;three&#8221;<br>この3つの処理になります。<br>つまり、この時点では、<strong><span style="color:#b78d4a" class="has-inline-color">「ログ表示　&#8221;two&#8221;」はキューにまだ登録されていない</span></strong>のです。</p>



<p>では、いつ「ログ表示　&#8221;two&#8221;」はキューに登録されるのか？</p>



<p>それは、<strong><span style="color:#b78d4a" class="has-inline-color">同期処理が全て終わってから</span></strong>です。</p>



<p>なので、キューの登録の順番は、<br>同期処理<br>　1. ログ表示　&#8221;one&#8221;<br>　2. タイマー登録　0ミリ秒<br>　3. ログ表示　&#8221;three&#8221;<br>同期処理の登録完了後、非同期処理<br>　<strong><span style="color:#b78d4a" class="has-inline-color">4.ログ表示　&#8221;two&#8221;</span></strong><br>となります。</p>



<p>だから先ほどの実行結果のように、順番が入れ替わります。</p>



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



<p>今回はJavaScriptの<strong><span style="color:#b78d4a" class="has-inline-color">非同期処理と同期処理、処理の順番</span></strong>について、説明していきました。<br>JavaScriptで開発するためには、このあたりをまず始めに理解しておきたいところですね！</p>



<p>非同期処理を同期的に処理する方法については、<br>別の記事にしたいと思います。<br>ご覧いただき、ありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/984/">【JavaScript】非同期処理と処理の順番について【初心者・入門】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/984/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</title>
		<link>https://nyanblog2222.com/programming/javascript/1016/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1016/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 31 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[ビンゴカード]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1016</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。今回はJavaScriptを使ってビンゴカードを作成してみました。Jqueryも使用していますので、ご注意ください。 目次 HTMLの設定CSSの設定JavaScriptデモまとめ HTMLの設定 まずは、枠 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1016/">【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/62.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/62-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はJavaScriptを使ってビンゴカードを作成してみました。Jqueryも使用していますので、ご注意ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-22" checked><label class="toc-title" for="toc-checkbox-22">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTMLの設定</a></li><li><a href="#toc2" tabindex="0">CSSの設定</a></li><li><a href="#toc3" tabindex="0">JavaScript</a></li><li><a href="#toc4" tabindex="0">デモ</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTMLの設定</span></h2>



<p>まずは、枠作りのHTMLからです。</p>



<p>ビンゴカードの枠と作成用のボタンを設定しています。</p>



<pre class="wp-block-code html"><code>&lt;div&gt;
    &lt;table id="bingo" cellspacing="10"&gt;
        &lt;tbody&gt;
            &lt;tr&gt;
                &lt;th&gt;B&lt;/th&gt;
                &lt;th&gt;I&lt;/th&gt;
                &lt;th&gt;N&lt;/th&gt;
                &lt;th&gt;G&lt;/th&gt;
                &lt;th&gt;O&lt;/th&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi0"&gt;&lt;/td&gt;
                &lt;td id="bi1"&gt;&lt;/td&gt;
                &lt;td id="bi2"&gt;&lt;/td&gt;
                &lt;td id="bi3"&gt;&lt;/td&gt;
                &lt;td id="bi4"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi5"&gt;&lt;/td&gt;
                &lt;td id="bi6"&gt;&lt;/td&gt;
                &lt;td id="bi7"&gt;&lt;/td&gt;
                &lt;td id="bi8"&gt;&lt;/td&gt;
                &lt;td id="bi9"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi10"&gt;&lt;/td&gt;
                &lt;td id="bi11"&gt;&lt;/td&gt;
                &lt;td id="bi12"&gt;&lt;/td&gt;
                &lt;td id="bi13"&gt;&lt;/td&gt;
                &lt;td id="bi14"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi15"&gt;&lt;/td&gt;
                &lt;td id="bi16"&gt;&lt;/td&gt;
                &lt;td id="bi17"&gt;&lt;/td&gt;
                &lt;td id="bi18"&gt;&lt;/td&gt;
                &lt;td id="bi19"&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td id="bi20"&gt;&lt;/td&gt;
                &lt;td id="bi21"&gt;&lt;/td&gt;
                &lt;td id="bi22"&gt;&lt;/td&gt;
                &lt;td id="bi23"&gt;&lt;/td&gt;
                &lt;td id="bi24"&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
    &lt;p id="button"&gt;&lt;input type="button" value="カード作成" id="bingo-create"&gt;&lt;/p&gt;
&lt;/div&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc2">CSSの設定</span></h2>



<p>ビンゴカードと作成ボタンのスタイルを設定しています。</p>



<pre class="wp-block-code css"><code><em>/* カード全体のスタイル */</em>
<strong>#bingo</strong>{
    width: 340px;
    margin: 0 auto;
}

<em>/* B I N G Oと番号のスタイル */</em>
<strong>#bingo</strong> <strong>th</strong>,
<strong>#bingo</strong> <strong>td</strong> {
    text-align: center;
    font-weight: normal;
}

<em>/* B I N G O の文字のスタイル */</em>
<strong>#bingo</strong> <strong>th</strong>{
    color: #B78D4A;
}

<em>/* 番号のスタイルを設定 */</em>
<strong>#bingo</strong> <strong>td</strong> {
    width: 60px;
    height: 55px;
    text-align: center;
    vertical-align: middle;
    
    border-radius: 1.5rem 1.5rem 0 0;
    color: #fff;
    background-color: #B78D4A;
    border: 2px solid #B78D4A;
}

<em>/* 番号をチェックした時に変更するクラス、スタイルを設定 */</em>
<strong>#bingo</strong> <strong>td</strong>.check {
    color: #B78D4A;
    background-color: #F0F0F0;
}

<em>/* 番号をマウスオーバーした時にポインタを指矢印に変更 */</em>
<strong>#bingo</strong> <strong>td</strong>:hover {
    cursor: pointer;
    cursor: hand;
}

<em>/* 作成ボタンのスタイル */</em>
<strong>p</strong><strong>#button</strong>{
    text-align: center;
}</code></pre>



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



<p>JavaScriptでカードの番号をランダムに設定する動きと、<br>番号をクリックした際にスタイルを変更するクラスをつけ外ししています。</p>



<pre class="wp-block-code"><code>$(<strong>function</strong> () {
    <strong>var</strong> make_col = <strong>function</strong> (base) {
        <strong>var</strong> arr = &#91;];
        <strong>for</strong>(<strong>var</strong> i=0; i&lt;15; i++) {
            arr.add(i);
        }
        <strong>var</strong> list = &#91;];
        <strong>for</strong> (<strong>var</strong> i = 1; i &lt;= 5; i++) {
            <em>// ランダムで値を取得</em>
            <strong>var</strong> a = parseInt(Math.random() * arr.length);
            list.push(arr&#91;a] + base);
            <em>// 数字を重複させないため、元々のリストから値を削除する</em>
            arr.splice(a, 1);
        }
        <strong>return</strong> list;
    };

    <strong>var</strong> make_table = <strong>function</strong> () {
        <em>// B列、I列...とそれぞれで5つの数字をランダムで取得</em>
        <strong>var</strong> col_b = make_col(1);
        <strong>var</strong> col_i = make_col(16);
        <strong>var</strong> col_n = make_col(31);
        <strong>var</strong> col_g = make_col(46);
        <strong>var</strong> col_o = make_col(61);
        
        <em>// 25個分の数字を格納できるtableに取ってきた列の数字を設定</em>
        <strong>var</strong> list = <strong>new</strong> Array(25);
        <strong>for</strong> (<strong>var</strong> i = 0; i &lt; 5; i++) {
            list&#91;i * 5 + 0] = col_b&#91;i];
            list&#91;i * 5 + 1] = col_i&#91;i];
            list&#91;i * 5 + 2] = col_n&#91;i];
            list&#91;i * 5 + 3] = col_g&#91;i];
            list&#91;i * 5 + 4] = col_o&#91;i];
        }
        <em>// 中心はfreeで固定</em>
        list&#91;12] = 'free';
        <strong>return</strong> list;
    };
    
    <em>// カード作成関数</em>
    <strong>var</strong> create_card = <strong>function</strong> () {
        <em>// 取ってきた数字が入ったtableをhtmlに出力する</em>
        <strong>var</strong> table = make_table();
        <strong>for</strong> (<strong>var</strong> i = 0; i &lt; table.length; i++) {
            $('#bi' + i).text(table&#91;i]);
        }
    };

    <em>// 初期化関数</em>
    <strong>var</strong> init = <strong>function</strong> () {
        create_card();
        
        <em>// チェック状態を外す</em>
        $('#bingo td').each(<strong>function</strong> () {
            $(<strong>this</strong>).removeClass('check');
        });
    };
    
    <em>// 初期</em>
    init();
    
    <em>// カード作成 ボタンをクリックすると、初期化</em>
    $('#bingo-create').click(<strong>function</strong> () {
        init();
    });
    
    <em>// 番号をクリックすると、スタイルを変更するクラスをつけ外しできる</em>
    $('#bingo td').click(<strong>function</strong> (){
        $(<strong>this</strong>).toggleClass('check');
    });
});</code></pre>



<h2 class="wp-block-heading"><span id="toc4">デモ</span></h2>



<p>こちらが作成したビンゴカードです。</p>



<p><strong><a class="link" href="https://nyanblog2222.com/demo/bingo1/" target="_blank">デモページはこちら<br><img loading="lazy" decoding="async" width="370" height="470" src="https://nyanblog2222.com/wp-content/uploads/2020/06/3506124f65b985a6ade8cea60d65888f.png" alt="" class="wp-image-1168" srcset="https://nyanblog2222.com/wp-content/uploads/2020/06/3506124f65b985a6ade8cea60d65888f.png 370w, https://nyanblog2222.com/wp-content/uploads/2020/06/3506124f65b985a6ade8cea60d65888f-236x300.png 236w" sizes="auto, (max-width: 370px) 100vw, 370px" /></a></strong><br></p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">番号をクリックすると見た目が変更</span></strong>されます。<br>（押し間違い対策でもう一度番号をクリックすると元に戻ります。）<br>カードをリセットしたい場合は、<strong><span style="color:#b78d4a" class="has-inline-color">「カード変更」</span></strong>ボタンをクリックすると、初期化されます。</p>



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



<p>今回はJavaScriptを使って、ビンゴカードを作成してみました。<br>列がそろったらBINGO！の表示を追加するのも面白いですね！<br>近いうちに試してみたいと思います。</p>



<p>次回の記事も良かったらご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog-にゃんぶろぐ wp-block-embed-nyanblog-にゃんぶろぐ"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/1194/" title="【Bingo Game】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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/63-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/63-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/63-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Bingo Game】JavaScriptでビンゴゲームの作り方【サンプル】</div><div class="blogcard-snippet internal-blogcard-snippet">JSでビンゴマシンを作成してみましたのでサンプルコードをご紹介します。簡単にできて解説もついて分かりやすくしています。ビンゴカード作成の記事もありますので、良かったら見てみてください♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.09</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1016/">【Bingo Game】JavaScriptでビンゴカードの作り方【サンプル】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1016/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS】object-fit,object-positionのIE対応【object-fit-images】</title>
		<link>https://nyanblog2222.com/programming/javascript/965/</link>
					<comments>https://nyanblog2222.com/programming/javascript/965/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 27 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[object-fit]]></category>
		<category><![CDATA[object-fit-images]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=965</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />前回まで、CSSのobject-fit、object-positionプロパティの使い方をご紹介しました。 ただし、前回までの記事でも記載したように、このプロパティはIEには対応しておらず、別途対応する必要があります。今 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/965/">【CSS】object-fit,object-positionのIE対応【object-fit-images】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/89.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>前回まで、CSSの<strong><span style="color:#b78d4a" class="has-inline-color">object-fit、object-positionプロパティ</span></strong>の使い方をご紹介しました。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/html-css/884/" title="【CSS】object-fitの使い方【img要素の縦横比固定方法】" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/87-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/87-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-fitの使い方【img要素の縦横比固定方法】</div><div class="blogcard-snippet internal-blogcard-snippet">CSSに「object-fit」プロパティで「cover」を設定することにより、画像の縦横比を固定したまま指定サイズで画像を配置する方法を紹介します。他にも「object-fit」プロパティにてどのように配置するか設定することも可能。コピペで試せるサンプル付きなので、勉強にもどうぞ♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.24</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/html-css/928/" title="【CSS】object-positionの使い方【img要素の画像配置設定】" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/88-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-positionの使い方【img要素の画像配置設定】</div><div class="blogcard-snippet internal-blogcard-snippet">img要素などの置換要素に対して、コンテンツをどこに配置するかを設定する「object-position」プロパティを詳しく紹介します。コピペで試せるサンプル付きなので、勉強にもどうぞ♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.26</div></div></div></div></a>
</div></figure>



<p>ただし、前回までの記事でも記載したように、このプロパティはIEには対応しておらず、別途対応する必要があります。<br>今回はIEに対応させる<strong><span style="color:#b78d4a" class="has-inline-color">object-fit-images</span></strong>を使用して、<strong><span style="color:#b78d4a" class="has-inline-color">object-fit、object-positionプロパティを有効</span></strong>にできる方法を紹介していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-24" checked><label class="toc-title" for="toc-checkbox-24">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">object-fit-imagesライブラリを有効にする</a><ol><li><a href="#toc2" tabindex="0">CDNを貼り付ける</a></li><li><a href="#toc3" tabindex="0">ダウンロードしたファイルを読み込む</a></li></ol></li><li><a href="#toc4" tabindex="0">img要素にクラスを追加</a></li><li><a href="#toc5" tabindex="0">CSSに”font-family”プロパティを設定</a></li><li><a href="#toc6" tabindex="0">JavaScriptの記述を追加</a></li><li><a href="#toc7" tabindex="0">処理結果</a></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">object-fit-imagesライブラリを有効にする</span></h2>



<p>まずは、object-fit-imagesライブラリを有効にしていきます。<br>方法は2つあり、<br>1つはCDNを読み込む方法。<br>もう1つはダウンロードしたファイルを読み込む方法。です。</p>



<h3 class="wp-block-heading"><span id="toc2">CDNを貼り付ける</span></h3>



<p>CDNとは、<strong><span style="color:#b78d4a" class="has-inline-color">「Content Delivery Network」</span></strong>の頭文字を取った略称で、<strong><span style="color:#b78d4a" class="has-inline-color">「コンテンツ配信ネットワーク」</span></strong>を指します。<br>簡単に言うと、<strong><span style="color:#b78d4a" class="has-inline-color">ネットワーク上に配置されているファイルにアクセスできる仕組み</span></strong>のことです。<br>この仕組みを使うとサーバの負荷を一部肩代わりしてくれるようになるため、レスポンスが早くなると言われています。</p>



<p>htmlにscript要素を使って、CDNを読み込ませます。</p>



<pre class="wp-block-code html"><code>&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/object-fit-images/3.2.4/ofi.js"&gt;&lt;/script&gt;</code></pre>



<h3 class="wp-block-heading"><span id="toc3">ダウンロードしたファイルを読み込む</span></h3>



<p>こちらのサイトから<strong><span style="color:#b78d4a" class="has-inline-color">「Clone or download」</span></strong>をクリックしてダウンロードしてください。<br><a rel="noopener" class="link" href="https://github.com/bfred-it/object-fit-images" target="_blank">https://github.com/bfred-it/object-fit-images</a></p>



<p>ダウンロードしたファイルの中から<strong><span style="color:#b78d4a" class="has-inline-color">「ofi.js」</span></strong>ファイルを読み込む設定をhtmlのscript要素で設定します。</p>



<pre class="wp-block-code html"><code>&lt;script src="ofi.min.js"&gt;&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc4">img要素にクラスを追加</span></h2>



<p>object-fit、object-positionプロパティを使用するimg要素にクラスを追加します。<br><strong><span style="color:#b78d4a" class="has-inline-color">クラス名は任意で問題ない</span></strong>ので、既にクラスを指定している場合はそのクラスを使っても大丈夫です。</p>



<pre class="wp-block-code html"><code>&lt;img src="img/01.jpg" class="object-image"&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc5">CSSに”font-family”プロパティを設定</span></h2>



<p>2～5行目まではimgのサイズ設定と処理結果が分かりやすいように、背景色と境界線を設定しています。</p>



<p>7、8行目：object-fit、object-positionプロパティを設定しています。<br>10行目：IE用に<strong><span style="color:#b78d4a" class="has-inline-color">「font-family」プロパティ</span></strong>を設定します。値は7、8行目で設定した値と同じ値を設定します。</p>



<pre class="wp-block-code css"><code><strong>object-image</strong>{
    width: 400px;
    height: 300px;
    background-color: #999;
    border: 1px solid #666;

    object-fit: none;
    object-position: right;
    // IEのブラウザに対応
    font-family: 'object-fit: none; object-position: right;';
}</code></pre>



<p>10行目があれば、7、8行目は不要なのかも？と思い、試してみましたが、<strong><span style="color:#b78d4a" class="has-inline-color">object-fit、object-positionが反映されなかった</span></strong>ので、別々に記述が必要みたいです。</p>



<h2 class="wp-block-heading"><span id="toc6">JavaScriptの記述を追加</span></h2>



<p>htmlファイル内の&lt;/body&gt;の直前にscript要素を追加し、objectFitImages関数を呼び出します。</p>



<p>全てのimg要素に対応させる場合は引数なし。<br>任意のクラスに画像を対応させたい場合は引数に<strong><span style="color:#b78d4a" class="has-inline-color">「img.クラス名」</span></strong>を設定します。<br>※ クラス名のみでは、反映されないので、注意してください。</p>



<pre class="wp-block-code"><code>// 全てのimg要素に対応
&lt;script&gt;
    objectFitImages();
&lt;/script&gt;

// 指定のimg要素のクラスに対応
&lt;script&gt;
    objectFitImages('img.object-image');
&lt;/script&gt;</code></pre>



<h2 class="wp-block-heading"><span id="toc7">処理結果</span></h2>



<p>ここまで設定が終わりましたら、処理結果を見てみましょう。<br><strong><span style="color:#b78d4a" class="has-inline-color">このページをIEで開き</span></strong>、対応前と比較して<strong><span style="color:#b78d4a" class="has-inline-color">対応後ではobject-fitが効いていること</span></strong>を確認してみてください。<br>他のブラウザでは対応前と対応後では一緒の動きをしています。</p>



<p>object-fit-images対応前</p>



<style type="text/css">
    <!--
img.sample{
    width: 400px;
    height: 300px;

    /* imgのサイズを分かりやすくするため、background-color、
       borderを設定し、object-fitはnoneを設定しています。 */
    background-color: #999;
    border: 1px solid #666;
    object-fit: none;
    object-position: right;
}

    -->
</style>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit-image確認" class="sample">



<p>object-fit-images対応後</p>



<script src="https://cdnjs.cloudflare.com/ajax/libs/object-fit-images/3.2.4/ofi.js"></script>
<style type="text/css">
    <!--
img.object-image{
    width: 400px;
    height: 300px;

    /* imgのサイズを分かりやすくするため、background-color、
       borderを設定し、object-fitはnoneを設定しています。 */
    background-color: #999;
    border: 1px solid #666;
    object-fit: none;
    object-position: right;
    font-family: 'object-fit: none; object-position: right;';
}

    -->
</style>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit-image確認" class="object-image">

<script>
    objectFitImages('img.object-image');
</script>



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



<p>いかがでしたでしょうか。<br>今回は「object-fit-imagesライブラリ」を使って、IEのブラウザにobject-fitを対応させてみました。<br><s>まだまだIEのブラウザは使用されているので、対応させて損はないと思います。</s><br>※<span class="bold-red"> 2022年6月15日でサポート終了予定</span></p>



<p>4つの簡単なステップで対応ができるので、良かったら試してみてください。</p>



<p>今回の記事が何かの参考になれば幸いです。<br>ご来訪ありがとうございました。それでは♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/965/">【CSS】object-fit,object-positionのIE対応【object-fit-images】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/965/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS】object-positionの使い方【img要素の画像配置設定】</title>
		<link>https://nyanblog2222.com/programming/html-css/928/</link>
					<comments>https://nyanblog2222.com/programming/html-css/928/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 26 May 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[img]]></category>
		<category><![CDATA[object-position]]></category>
		<category><![CDATA[置換要素]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=928</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/88.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />前回はCSSで「object-fit」プロパティを使って、img要素などの置換要素に対してコンテンツをどのようにはめ込むかを設定しました。よければこちらの記事もご覧になってください。 今回は置換要素に対して、コンテンツを [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/928/">【CSS】object-positionの使い方【img要素の画像配置設定】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/88.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>前回はCSSで<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>を使って、img要素などの置換要素に対して<strong><span style="color:#b78d4a" class="has-inline-color">コンテンツをどのようにはめ込むか</span></strong>を設定しました。<br>よければこちらの記事もご覧になってください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/html-css/884/" title="【CSS】object-fitの使い方【img要素の縦横比固定方法】" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/87-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/87-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-fitの使い方【img要素の縦横比固定方法】</div><div class="blogcard-snippet internal-blogcard-snippet">CSSに「object-fit」プロパティで「cover」を設定することにより、画像の縦横比を固定したまま指定サイズで画像を配置する方法を紹介します。他にも「object-fit」プロパティにてどのように配置するか設定することも可能。コピペで試せるサンプル付きなので、勉強にもどうぞ♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.24</div></div></div></div></a>
</div></figure>



<p>今回は置換要素に対して、<strong><span style="color:#b78d4a" class="has-inline-color">コンテンツをどこに配置するか</span></strong>を設定する<strong><span style="color:#b78d4a" class="has-inline-color">「object-position」プロパティ</span></strong>を詳しく紹介していきたいと思います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-26" checked><label class="toc-title" for="toc-checkbox-26">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">object-positionプロパティ</a></li><li><a href="#toc2" tabindex="0">値の設定について</a></li><li><a href="#toc3" tabindex="0">サンプル</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">object-positionプロパティ</span></h2>



<p>このプロパティは<strong><span style="color:#b78d4a" class="has-inline-color">「iframe」</span></strong>、<strong><span style="color:#b78d4a" class="has-inline-color">「video」</span></strong>、<strong><span style="color:#b78d4a" class="has-inline-color">「img」</span></strong>など要素の中身（コンテンツ）を要素のどこに配置するか設定します。</p>



<p>先ほども説明あったようにコンテンツをどのようにはめ込むかは<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>を設定します。</p>



<h2 class="wp-block-heading"><span id="toc2">値の設定について</span></h2>



<p>値はこのように設定することができます。<br><strong><span style="color:#b78d4a" class="has-inline-color">object-fit: [左右] [上下]</span></strong><br>初期値は真ん中の<strong><span style="color:#b78d4a" class="has-inline-color">&#8220;50% 50%&#8221;</span></strong>が設定されています。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">[左右]</span></strong>：<strong><span style="color:#b78d4a" class="has-inline-color">left、right、center</span></strong><br>　　　もしくは　<strong><span style="color:#b78d4a" class="has-inline-color">left、right + 数値（単位付）</span></strong><br>　　　もしくは　<strong><span style="color:#b78d4a" class="has-inline-color">数値（単位付）のみ</span></strong><br><strong><span style="color:#b78d4a" class="has-inline-color">[上下]</span></strong>：<strong><span style="color:#b78d4a" class="has-inline-color">top、bottom、center</span></strong><br>　　　もしくは　<strong><span style="color:#b78d4a" class="has-inline-color">top、bottom + 数値（単位付）</span></strong><br>　　　もしくは　<strong><span style="color:#b78d4a" class="has-inline-color">数値（単位付）のみ</span></strong></p>



<p>※ デフォルトで50%がそれぞれ設定されているので、片方省略も可能<br>例：object-fit: right もしくは、object-fit: bottom など</p>



<p>設定値だけ見てもイメージが湧きにくいと思いますので、<br>次は実際にコードを記述して、結果を見てみましょう。</p>



<h2 class="wp-block-heading"><span id="toc3">サンプル</span></h2>



<p>それでは実際にソースコードを記述して配置を見てみましょう。<br>使用する画像はこちらです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="320" height="240" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position サンプル画像" class="wp-image-895" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg 320w, https://nyanblog2222.com/wp-content/uploads/2020/05/01-300x225.jpg 300w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>



<pre class="wp-block-code html"><code>&lt;p&gt;右中央に表示&lt;/p&gt;
&lt;img src="img/01.jpg" class="right-center sample"&gt;

&lt;p&gt;中央下に表示&lt;/p&gt;
&lt;img src="img/01.jpg" class="center-bottom sample"&gt;

&lt;p&gt;左上に表示&lt;/p&gt;
&lt;img src="img/01.jpg" class="left-top sample"&gt;

&lt;p&gt;パーセント表記で設定（80%、20%）&lt;/p&gt;
&lt;img src="img/01.jpg" class="set-percentage1 sample"&gt;

&lt;p&gt;パーセント表記で設定（右から80%、下から20%）&lt;/p&gt;
&lt;img src="img/01.jpg" class="set-percentage2 sample"&gt;

&lt;p&gt;ピクセルで設定（50px、180px）&lt;/p&gt;
&lt;img src="img/01.jpg" class="set-pixel sample"&gt;</code></pre>



<pre class="wp-block-code css"><code><strong>img</strong>{
    width: 400px;
    height: 300px;

    // imgのサイズを分かりやすくするため、background-color、
    // borderを設定し、object-fitはnoneを設定しています。
    background-color: #999;
    border: 1px solid #666;
    object-fit: none;
}

// 右中央
.right-center{
    object-position: right;
}

// 中央下
.center-bottom{
    object-position: bottom;
}

// 左上
.left-top{
    object-position: left top;
}

// パーセントで値を設定（80%, 20%）
.set-percentage1{
    object-position: 80% 20%;
}

// パーセントで値を設定（右から80%、下から20%）
.set-percentage2{
    object-position: right 80% bottom 20%;
}

// ピクセルで値を設定（50<strong>px</strong>, 180<strong>px</strong>）
.set-pixel{
    object-position: 50px 180px;
}</code></pre>



<p>結果がこちらです。</p>



<style type="text/css">
    <!--
    img.sample{
        width: 400px;
        height: 300px;

        /* imgのサイズを分かりやすくするため、background-color、
           borderを設定し、object-fitはnoneを設定しています。 */
        background-color: #999;
        border: 1px solid #666;
        object-fit: none;
    }

    .right-center{
        object-position: right;
    }
    .center-bottom{
        object-position: bottom;
    }
    .left-top{
        object-position: left top;
    }
    .set-percentage1{
        object-position: 80% 20%;
    }
    .set-percentage2{
        object-position: right 80% bottom 20%;
    }
    .set-pixel{
        object-position: 50px 180px;
    }
    -->
</style>
<p>右中央に表示<br>
<img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position確認 右、中央" class="right-center sample"></p>
<p>中央下に表示<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position確認 中央、下" class="center-bottom sample"></p>
<p>左上に表示<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position確認 左、上" class="left-top sample"></p>
<p>パーセント表記で設定（80%、20%）<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position確認 パーセント設定" class="set-percentage1 sample"></p>
<p>パーセント表記で設定（右から80%、下から20%）<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position確認 パーセント設定" class="set-percentage2 sample"></p>
<p>ピクセルで設定（50px、180px）<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-position確認 ピクセル設定" class="set-pixel sample"></p>



<p>最後の結果についてですが、img要素からはみ出ている部分は<strong><span style="color:#b78d4a" class="has-inline-color">出力されていない</span></strong>ことが分かります。<br>つまりimg要素の中で画像を配置しているので、img要素からはみ出ている<strong><span class="has-inline-color has-pale-pink-color">赤枠部分</span></strong>は表示されず、トリミングされています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="402" height="449" src="https://nyanblog2222.com/wp-content/uploads/2020/05/473b1f50c2101c4ac7b2cf5eaef8328c.png" alt="トリミングされている箇所" class="wp-image-957" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/473b1f50c2101c4ac7b2cf5eaef8328c.png 402w, https://nyanblog2222.com/wp-content/uploads/2020/05/473b1f50c2101c4ac7b2cf5eaef8328c-269x300.png 269w" sizes="auto, (max-width: 402px) 100vw, 402px" /></figure>



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



<p>今回は<strong><span style="color:#b78d4a" class="has-inline-color">「object-position」プロパティ</span></strong>をご紹介しました。<br>前回紹介した<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>と合わせて使いこなしていきたいですね！</p>



<p>ただし、<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>と同様<strong><span class="has-inline-color has-pale-pink-color">IEにはどのバージョンでも現時点（2020年5月）では対応できていません</span></strong>ので、別途IE対応が必要なのは一緒ですね。<br>IE対応する方法として<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit-images」</span></strong>について以下の記事で紹介していますので、宜しければご覧ください♪</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/965/" title="【CSS】object-fit,object-positionのIE対応【object-fit-images】" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/89-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/89-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-fit,object-positionのIE対応【object-fit-images】</div><div class="blogcard-snippet internal-blogcard-snippet">CSSのobject-fit、object-positionプロパティはIEに対応していません。なので、object-fit-imagesを使用して、IEに対応させる方法を紹介します！　object-fit、object-positionの使い方については前記事で触れていますので、良かったら一緒にどうぞ♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.27</div></div></div></div></a>
</div></figure>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/928/">【CSS】object-positionの使い方【img要素の画像配置設定】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/928/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSS】object-fitの使い方【img要素の縦横比固定方法】</title>
		<link>https://nyanblog2222.com/programming/html-css/884/</link>
					<comments>https://nyanblog2222.com/programming/html-css/884/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sun, 24 May 2020 09:09:11 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[img]]></category>
		<category><![CDATA[object-fit]]></category>
		<category><![CDATA[置換要素]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=884</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/87.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/87.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />画像の縦横比を固定する方法で、cssに「object-fit」プロパティで「cover」を設定することにより、画像の縦横比を固定したまま指定のサイズで画像を配置することができます。他にも「object-fit」プロパティ [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/884/">【CSS】object-fitの使い方【img要素の縦横比固定方法】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/87.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/87.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/87-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>画像の縦横比を固定する方法で、cssに<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>で<strong><span style="color:#b78d4a" class="has-inline-color">「cover」</span></strong>を設定することにより、<strong><span style="color:#b78d4a" class="has-inline-color">画像の縦横比を固定したまま</span></strong>指定のサイズで画像を配置することができます。<br>他にも<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>を使うことで、どのように配置するか設定することができます。</p>



<p>今回は<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit」プロパティ</span></strong>の使い方と設定値の内容を詳しく紹介していきたいと思います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-28" checked><label class="toc-title" for="toc-checkbox-28">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">object-fitプロパティ</a></li><li><a href="#toc2" tabindex="0">値の設定について</a></li><li><a href="#toc3" tabindex="0">サンプル</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">object-fitプロパティ</span></h2>



<p>このプロパティは置換要素である、<strong><span style="color:#b78d4a" class="has-inline-color">「iframe」</span></strong>、<strong><span style="color:#b78d4a" class="has-inline-color">「video」</span></strong>、<strong><span style="color:#b78d4a" class="has-inline-color">「img」</span></strong>など要素の中身（コンテンツ）をどのようにはめ込むかを設定します。</p>



<p>また、コンテンツをどのように配置するかは<strong><span style="color:#b78d4a" class="has-inline-color">「object-position」プロパティ</span></strong>を使用します。</p>



<h2 class="wp-block-heading"><span id="toc2">値の設定について</span></h2>



<p>object-fitプロパティは複数の値を設定することができます。<br>設定の内容を表にまとめてみました。<br>要素=img、コンテンツ=画像を見立てると、分かりやすいと思います。</p>



<figure class="wp-block-table">
    <table>
        <tbody>
            <tr>
                <th width="20%" class="text-aline-center">値</th>
                <th class="text-aline-center">説明</th>
            </tr>
            <tr>
                <th>contain</th>
                <td>コンテンツは<strong class="brown_color">アスペクト比が固定されたまま</strong>、要素のサイズに収まるように表示されます。<br>要素とコンテンツのアスペクト比が合わない場合、<strong class="brown_color">要素の一部分がレターボックス表示</strong>になります。※ 要は何も表示されません。</td>
            </tr>
            <tr>
                <th>cover</th>
                <td>コンテンツは<strong class="brown_color">アスペクト比が固定されたまま</strong>、要素のサイズに収まるように表示されます。<br>要素とコンテンツのアスペクト比が合わない場合、<strong class="brown_color">コンテンツが合わせるようにトリミング</strong>されます。</td>
            </tr>
            <tr>
                <th>fill</th>
                <td>コンテンツが<strong class="brown_color">要素を満たして表示</strong>されます。<br>要素とコンテンツのアスペクト比が合わない場合、要素の大きさに合わせて<strong class="brown_color">コンテンツが引き延ばされ</strong>ます。</td>
            </tr>
            <tr>
                <th>none</th>
                <td>コンテンツは拡大も縮小もされず、そのまま表示されます。</td>
            </tr>
            <tr>
                <th>scale-down</th>
                <td>コンテンツは<strong class="brown_color">「none」</strong>または<strong class="brown_color">「contain」</strong>どちらかを指定した状態で、コンテンツが要素よりも小さい場合は<strong class="brown_color">「none」</strong>として表示されます。</td>
            </tr>
        </tbody>
    </table>
</figure>



<h2 class="wp-block-heading"><span id="toc3">サンプル</span></h2>



<p>それでは実際に試してみましょう。<br>使用するのは、こちらの画像です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="320" height="240" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit　サンプル画像" class="wp-image-895" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg 320w, https://nyanblog2222.com/wp-content/uploads/2020/05/01-300x225.jpg 300w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>



<p>さっそく、HTMLとCSSを設定してみましょう。</p>



<pre class="wp-block-code html"><code>&lt;p&gt;cover&lt;/p&gt;
&lt;img src="img/01.jpg" class="cover"&gt;

&lt;p&gt;contain&lt;/p&gt;
&lt;img src="img/01.jpg" class="contain"&gt;

&lt;p&gt;fill&lt;/p&gt;
&lt;img src="img/01.jpg" class="fill"&gt;

&lt;p&gt;none&lt;/p&gt;
&lt;img src="img/01.jpg" class="none"&gt;

&lt;p&gt;scale-down&lt;/p&gt;
&lt;img src="img/01.jpg" class="scale-down"&gt;</code></pre>



<pre class="wp-block-code css"><code><strong>img</strong>{
    width: 180px;
    height: 60px;

    // 左端に寄せてサイズを見やすくしたかったので、設定
    object-position: left;

    // imgのサイズを分かりやすくするため、background-colorを設定
    background-color: #999;
}

.cover {
    object-fit: cover;
}

.contain {
    object-fit: contain;
}

.fill {
    object-fit: fill;
}

.none {
    object-fit: none;
}

.scale-down {
    object-fit: scale-down;
}</code></pre>



<p>結果がこちらです。</p>



<style type="text/css">
    <!--
    img.sample{
        width: 180px;
        height: 80px;
        object-position: left;
        margin-bottom: 0;
        background-color: #999;
    }

    .cover {
        object-fit: cover;
    }

    .contain {
        object-fit: contain;
    }

    .fill {
        object-fit: fill;
    }

    .none {
        object-fit: none;
    }

    .scale-down {
        object-fit: scale-down;
    }
    -->
</style>
<p>cover<br>縦横比そのまま、画像の上下トリミング<br>
<img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit確認 キーワードcover" class="cover sample"></p>
<p>contain<br>縦横比そのまま、要素の右側が空いた状態<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit確認 キーワードcontain" class="contain sample"></p>
<p>fill<br>画像全体をimg要素のサイズに合わせて表示。<br>画像が押しつぶされたような見た目。<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit確認 キーワードfill" class="fill sample"></p>
<p>none<br>画像をimg要素のサイズに合わせて一部分切り取っている。<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit確認 キーワードnone" class="none sample"></p>
<p>scale-down<br>このサンプルでは、containが適用されています。<br>
    <img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2020/05/01.jpg" alt="object-fit確認 キーワードscale-down" class="scale-down sample"></p>



<p>このように値<strong><span style="color:#b78d4a" class="has-inline-color">「contain」「cover」「none」「scale-down」</span></strong>を使えばアスペクト比を変わらずコンテンツを設定することができます。<br>状況に応じて使ってみてください。</p>



<p>ただし、このプロパティは残念ながら<strong><span class="has-inline-color has-pale-pink-color">IEには対応しておりません</span></strong>。<br>また、このプロパティを対応させるためには、cssかHTMLの属性で<strong><span class="has-inline-color has-pale-pink-color">サイズを設定する</span></strong>必要があります。<br><strong><span style="color:#b78d4a" class="has-inline-color">object-fitプロパティが対応されていない！</span></strong>状況に陥りましたら、まずはサイズが設定されているかを確認してみてください。</p>



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



<p>今回はobject-fitプロパティの使い方をご紹介しました。<br>要素のサイズさえ指定できれば値の設定も簡単なので、使いやすいかと思います。</p>



<p>ただ、先述しましたようにIEでは、現在（2020年5月）使用することができません。別途対策が必要になりますね！<br>IE対応する方法として<strong><span style="color:#b78d4a" class="has-inline-color">「object-fit-images」</span></strong>について以下の記事で紹介していますので、宜しければご覧ください♪</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/javascript/965/" title="【CSS】object-fit,object-positionのIE対応【object-fit-images】" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/89-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/89-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/89-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-fit,object-positionのIE対応【object-fit-images】</div><div class="blogcard-snippet internal-blogcard-snippet">CSSのobject-fit、object-positionプロパティはIEに対応していません。なので、object-fit-imagesを使用して、IEに対応させる方法を紹介します！　object-fit、object-positionの使い方については前記事で触れていますので、良かったら一緒にどうぞ♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.27</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/programming/html-css/928/" title="【CSS】object-positionの使い方【img要素の画像配置設定】" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/88-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/88-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/88-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【CSS】object-positionの使い方【img要素の画像配置設定】</div><div class="blogcard-snippet internal-blogcard-snippet">img要素などの置換要素に対して、コンテンツをどこに配置するかを設定する「object-position」プロパティを詳しく紹介します。コピペで試せるサンプル付きなので、勉強にもどうぞ♪</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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.05.26</div></div></div></div></a>
</div></figure>



<p>また、こちらの記事も良かったら覗いてみてください♪</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/884/">【CSS】object-fitの使い方【img要素の縦横比固定方法】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/884/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【CSSで】スムーススクロールでふわっとページ移動してみよう</title>
		<link>https://nyanblog2222.com/programming/html-css/170/</link>
					<comments>https://nyanblog2222.com/programming/html-css/170/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Sat, 02 May 2020 04:00:00 +0000</pubDate>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Web制作]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=170</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/86.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/86.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/86-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/86-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/86-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />こんにちは。前回はJQueryを使用してスムーススクロールをご紹介いたしました。以下リンク先です。 今回はCSSのみでスムーススクロールを実装してみました。早速ご紹介いたします。HTMLとCSSは前回と同じコードを使用し [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/170/">【CSSで】スムーススクロールでふわっとページ移動してみよう</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/86.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/86.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/86-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/86-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/86-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。前回はJQueryを使用してスムーススクロールをご紹介いたしました。以下リンク先です。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/javascript/73/" title="【JQuery】スムーススクロールでふわっとページ移動してみよう" 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 decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/71-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/71-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/71-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【JQuery】スムーススクロールでふわっとページ移動してみよう</div><div class="blogcard-snippet internal-blogcard-snippet">スムーススクロールでふわっとページ移動してみませんか。こんにちは。JQueryを使用して簡単に出来るスムーススクロールをご紹介いたします。まずは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://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.04.29</div></div></div></div></a>
</div></figure>



<p><br>今回はCSSのみでスムーススクロールを実装してみました。<br>早速ご紹介いたします。<br>HTMLとCSSは前回と同じコードを使用しています。</p>



<p>余談：ふと疑問になってスムーススクロールとスムーズスクロールどっちが正しいのかと疑問に思い調べてみましたが、どちらでも良いみたいですね。<br>英語でsmooth scroll、スムーズにスクロールするの意、それぞれあるようです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-30" checked><label class="toc-title" for="toc-checkbox-30">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">CSSでHTMLにスムーススクロールを設定</a></li><li><a href="#toc2" tabindex="0">対応ブラウザ</a></li><li><a href="#toc3" tabindex="0">scroll-behaviorプロパティ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">CSSでHTMLにスムーススクロールを設定</span></h2>



<p>html要素に <strong><span style="color:#b78d4a" class="has-inline-color">scroll-behavior: smooth;</span></strong> を指定することでページ内リンクにスムーススクロールの動きをつけることができます。</p>



<pre class="wp-block-code css"><code>html{
  scroll-behavior: smooth;
}</code></pre>



<p>この設定のみでスムーススクロールが表現できるなんてとても便利ですね！</p>



<h2 class="wp-block-heading"><span id="toc2">対応ブラウザ</span></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="599" height="350" src="https://nyanblog2222.com/wp-content/uploads/2020/05/css-001-min-1.jpg" alt="" class="wp-image-181" srcset="https://nyanblog2222.com/wp-content/uploads/2020/05/css-001-min-1.jpg 599w, https://nyanblog2222.com/wp-content/uploads/2020/05/css-001-min-1-300x175.jpg 300w" sizes="auto, (max-width: 599px) 100vw, 599px" /></figure>



<p>設定が簡単にできるので、多用してもいいかな。と思いますが、このようにIE・Safariには対応していないようです。<br>実際に業務で使用する場合は、対応ブラウザに注意して適用させる必要があります。<br>参考：<a class="link" href="https://developer.mozilla.org/ja/docs/Web/CSS">MDN web docs ： CSS: カスケーディングスタイルシート</a></p>



<h2 class="wp-block-heading"><span id="toc3">scroll-behaviorプロパティ</span></h2>



<p>scroll-behaviorプロパティについて、指定した範囲内でスクロールが発生した際の振る舞いを指定できます。</p>



<p>＜キーワード＞<br>・<strong><span style="color:#b78d4a" class="has-inline-color">auto（初期値）</span></strong> : リンク先に瞬時にスクロールします。<br>・<strong><span style="color:#b78d4a" class="has-inline-color">smooth</span></strong> : 設定したセレクタの範囲内でページ内リンクによるスクロールが発生した場合、スムーススクロールでリンク先に移動します。</p>



<p>今回はCSSのみでスムーススクロールを実装してみました。<br>対応ブラウザは限定されますが、用途に応じて使ってみてください。</p>



<p></p>
<p>投稿 <a href="https://nyanblog2222.com/programming/html-css/170/">【CSSで】スムーススクロールでふわっとページ移動してみよう</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/html-css/170/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
