<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ CSS - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ エキスパートの手によるプログラミングチュートリアル記事を幅広く掲載。ウェブ開発、データサイエンス、DevOps、セキュリティ、開発者としてのキャリアなどについて学びましょう。 ]]>
        </description>
        <link>https://www.freecodecamp.org/japanese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ CSS - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/japanese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 15 May 2026 19:50:06 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/japanese/news/tag/css/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ JavaScript を使ったドロップダウンメニューを作成する方法 ]]>
                </title>
                <description>
                    <![CDATA[ インターネットを使うかたなら、おそらくドロップダウンメニューを使ったことがあるでしょう。ドロップダウンメニューは主に 2 つの目的で使用されます。1 つはウェブフォームでユーザーの入力を収集するため、もう 1 つはウェブアプリケーションにアクションやナビゲーションメニューを実装するためです。 ドロップダウンは、似たようなの要素の集まりに対して多数のオプションを提供する最良の方法の 1 つです。これにより、アプリケーションの一般的なレイアウトの流れを崩さずに多くの選択肢を提供することができます。ウェブアプリ以外にも、ドロップダウンメニューはスタンドアロンのソフトウェアやオペレーティングシステムなどでも使用されています。 このガイドでは、HTML、CSS、JavaScript を使用してドロップダウンナビゲーションメニューを作成する方法を学びます。 以下は、これから作成するもののスクリーンショットです。このガイドの最後に、CodePen ファイルを提供しているので、それを使って実際に試してみることができます。 ドロップダウンメニューの最終成果物ドロップダウンメニューの基礎について ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/how-to-build-a-dropdown-menu-with-javascript/</link>
                <guid isPermaLink="false">64a846edfbe7fd06692b04de</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Saki Basken ]]>
                </dc:creator>
                <pubDate>Thu, 13 Jul 2023 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/07/how-to-build-a-dropdown-menu-with-javascript.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/how-to-build-a-dropdown-menu-with-javascript/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Build a Dropdown Menu with JavaScript</a>
      </p><h3 id="-2-1-1-">インターネットを使うかたなら、おそらくドロップダウンメニューを使ったことがあるでしょう。ドロップダウンメニューは主に 2 つの目的で使用されます。1 つはウェブフォームでユーザーの入力を収集するため、もう 1 つはウェブアプリケーションにアクションやナビゲーションメニューを実装するためです。</h3><p></p><p>ドロップダウンは、似たようなの要素の集まりに対して多数のオプションを提供する最良の方法の 1 つです。これにより、アプリケーションの一般的なレイアウトの流れを崩さずに多くの選択肢を提供することができます。ウェブアプリ以外にも、ドロップダウンメニューはスタンドアロンのソフトウェアやオペレーティングシステムなどでも使用されています。</p><p>このガイドでは、HTML、CSS、JavaScript を使用してドロップダウンナビゲーションメニューを作成する方法を学びます。</p><p>以下は、これから作成するもののスクリーンショットです。このガイドの最後に、CodePen ファイルを提供しているので、それを使って実際に試してみることができます。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/07/dropdown-menu-with-css.png" class="kg-image" alt="dropdown-menu-with-css" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/07/dropdown-menu-with-css.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/07/dropdown-menu-with-css.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/07/dropdown-menu-with-css.png 1055w" sizes="(min-width: 720px) 720px" width="1055" height="386" loading="lazy"><figcaption>ドロップダウンメニューの最終成果物</figcaption></figure><p>ドロップダウンメニューの基礎についての説明を終えたので、次はその作成手順について説明します。</p><h2 id="-1-">ステップ 1 – ドロップダウンのマークアップを追加する</h2><p>このガイドではアイコンを使用するため、まず初めにアイコンをインポートしなければなりません。その分かりやすさから、<a href="https://boxicons.com/">Boxicons</a> という無料のライブラリを使用します。他にもあるので、ぜひお好きなライブラリを使ってみて下さい。</p><p>Boxicons を<a href="https://boxicons.com/usage">設定する</a>方法はいくつかありますが、最も簡単な方法は、次のように HTML ファイルの <code>head</code> で script タグを定義することです。</p><pre><code class="language-html">&lt;head&gt;
   &lt;link 
     href="https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css" 
     rel="stylesheet"
    /&gt;
 &lt;/head&gt;</code></pre><p>アイコンをインポートした後、クラス名が <code>container</code> の <code>div</code> 要素を作成します。この要素内に、ボタンとドロップダウンメニューを入れていきます。</p><p>コンテナ内でボタン要素を作成し、それに <code>btn</code> というクラスと ID を与えます。そのボタンに、テキストと矢印アイコンを渡します。</p><p>ボタンのマークアップは以下のとおりです。</p><pre><code class="language-html">&lt;button class="btn" id="btn"&gt;
  Dropdown
  &lt;i class="bx bx-chevron-down" id="arrow"&gt;&lt;/i&gt;
&lt;/button&gt;</code></pre><p>次に、ドロップダウンメニュー自体のマークアップを追加します。button タグの下に <code>div</code> 要素を作成し、それに <code>dropdown</code> というクラスと ID を与えます。div 要素内で、個々のドロップダウン項目ごとに <code>a</code> タグを作成し、それぞれのアイコンとテキストを渡します。</p><p>マークアップは以下のようになります。</p><pre><code class="language-html">&lt;div class="dropdown" id="dropdown"&gt;
  &lt;a href="#create"&gt;
    &lt;i class="bx bx-plus-circle"&gt;&lt;/i&gt;
    Create New
  &lt;/a&gt;
  &lt;a href="#draft"&gt;
    &lt;i class="bx bx-book"&gt;&lt;/i&gt;
    All Drafts
  &lt;/a&gt;
  &lt;a href="#move"&gt;
    &lt;i class="bx bx-folder"&gt;&lt;/i&gt;
    Move To
  &lt;/a&gt;
  &lt;a href="#profile"&gt;
    &lt;i class="bx bx-user"&gt;&lt;/i&gt;
    Profile Settings
  &lt;/a&gt;
  &lt;a href="#notification"&gt;
    &lt;i class="bx bx-bell"&gt;&lt;/i&gt;
    Notification
  &lt;/a&gt;
  &lt;a href="#settings"&gt;
    &lt;i class="bx bx-cog"&gt;&lt;/i&gt;
    Settings
  &lt;/a&gt;
&lt;/div&gt;</code></pre><p>出力は以下のようになります。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/07/dropdown-menu-markup.png" class="kg-image" alt="dropdown-menu-markup" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/07/dropdown-menu-markup.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2023/07/dropdown-menu-markup.png 772w" sizes="(min-width: 720px) 720px" width="772" height="144" loading="lazy"><figcaption>ドロップダウンメニューのマークアッププレビュー</figcaption></figure><p>このままではまだ見栄えがよくないので、メニューのスタイリングをしましょう。</p><h2 id="-2-">ステップ 2 – ドロップダウンメニューのスタイルを設定する</h2><p>まず、ページ上のすべての要素のデフォルトのマージンとパディングをリセットし、いくつかの値を変数に保存して、CSS ファイル全体で再利用できるようにします。次に、body 要素にグローバルなスタイルを適用します。</p><pre><code class="language-css">@import url(https://fonts.googleapis.com/css?family=Inter:100,200,300,regular,500,600,700,800,900);

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Inter", sans-serif;
  --shadow: rgba(0, 0, 0, 0.05) 0px 6px 10px 0px,
    rgba(0, 0, 0, 0.1) 0px 0px 0px 1px;
  --color: #166e67;
  --gap: 0.5rem;
  --radius: 5px;
}

body {
  margin: 2rem;
  background-color: #b3e6f4;
  font-size: 0.9rem;
  color: black;
}</code></pre><p>次のステップでは、ボタンとドロップダウンコンテナー自体のスタイリングを行います。作業をスピードアップするため、重要なスタイリングの部分のみを説明します。</p><p>以下のマークアップをコピーして、CSS ファイルに貼り付けてください。</p><pre><code class="language-css">.btn {
  background-color: white;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  column-gap: var(--gap);
  padding: 0.6rem;
  cursor: pointer;
  border-radius: var(--radius);
  border: none;
  box-shadow: var(--shadow);
  position: relative;
}

.bx {
  font-size: 1.1rem;
}

.dropdown {
  position: absolute;
  width: 250px;
  box-shadow: var(--shadow);
  border-radius: var(--radius);
  margin-top: 0.3rem;
  background: white;
}

.dropdown a {
  display: flex;
  align-items: center;
  column-gap: var(--gap);
  padding: 0.8rem 1rem;
  text-decoration: none;
  color: black;
}

.dropdown a:hover {
  background-color: var(--color);
  color: white;
}</code></pre><p>ドロップダウンメニューは通常、要素の上に重なるように表示されるため、ボタンを相対的 (relative) に、ドロップダウンメニューを絶対的 (absolute) に配置しています。これにより、両方の要素が近くに配置され、ドロップダウンメニューが他の要素の上に表示されることが保証されます。こうすることで、切り替え時にページのフローに影響を与えなくなります。</p><p>出力は以下のようになります。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/07/dropdown-menu-with-css--1-.png" class="kg-image" alt="dropdown-menu-with-css--1-" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/07/dropdown-menu-with-css--1-.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/07/dropdown-menu-with-css--1-.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/07/dropdown-menu-with-css--1-.png 1055w" sizes="(min-width: 720px) 720px" width="1055" height="386" loading="lazy"><figcaption>ドロップダウンメニューのスタイリング</figcaption></figure><p>ドロップダウンのスタイルが設定されたので、即座に表示されるのではなく、ボタンがクリックされたときにのみドロップダウンが表示されるようにしたいと思います。非表示にするには CSS を使用します。</p><p>以前 <a href="https://freecodecamp.org/news/how-to-build-a-modal-with-javascript">JavaScript でモーダルを作成する方法</a>という記事では、最初にビューポートからモーダル要素を非表示にするために、<code>display: none</code> を使用しました。しかし、<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties">MDN Docs</a> によると、このプロパティを利用する場合の欠点は、アニメーション化できないことです。</p><p>したがってこのガイドでは、別の方法を用いてドロップダウンメニューを非表示にしたいと思います。これには、<code>visibility</code> と <code>opacity</code> のプロパティを組み合わせることで、達成することができます。そしてこの方法は、<a href="https://github.com/">GitHub</a> がドロップダウンメニューを実装している方法です。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/07/github-dropdown-menu.png" class="kg-image" alt="github-dropdown-menu" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/07/github-dropdown-menu.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/07/github-dropdown-menu.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/07/github-dropdown-menu.png 1304w" sizes="(min-width: 720px) 720px" width="1304" height="575" loading="lazy"><figcaption>GitHub のドロップダウンメニュー</figcaption></figure><p>前に作成したドロップダウンクラス内に、visibility プロパティを追加し、値を hidden に設定したら、不透明度を <code>0</code> に設定します。そうすることで、ページからドロップダウンメニューが非表示になります。</p><p>ドロップダウンメニューを表示するために、<code>show</code> という別のクラスを作成します。このクラスは、<code>visible</code> の値と不透明度 <code>1</code> の visibility プロパティを保持します。そして、後ほど JavaScript を使用してこのクラスをドロップダウンメニューに追加します。</p><p>コードは以下のとおりです。</p><pre><code class="language-css">.dropdown {
  position: absolute;
  width: 250px;
  box-shadow: var(--shadow);
  border-radius: var(--radius);
  margin-top: 0.3rem;
  background: white;
  transition: all 0.1s cubic-bezier(0.16, 1, 0.5, 1);
    
  transform: translateY(0.5rem);
  visibility: hidden;
  opacity: 0;
}

.show {
  transform: translateY(0rem);
  visibility: visible;
  opacity: 1;
}

.arrow {
  transform: rotate(180deg);
  transition: 0.2s ease;
}</code></pre><p>ドロップダウンメニューの要素を非表示にするスタイルに加えて、ドロップダウンボタンをクリックしたときに矢印アイコンを回転させる、別のクラスも追加しました。</p><h2 id="-3-">ステップ 3 – ドロップダウン機能を追加する</h2><p>まず、それぞれの要素を変数に保存して再利用できるようにしましょう。</p><pre><code class="language-js">const dropdownBtn = document.getElementById("btn");
const dropdownMenu = document.getElementById("dropdown");
const toggleArrow = document.getElementById("arrow");</code></pre><p>次のステップでは、ボタンがクリックされたときにドロップダウン要素の <code>show</code> というクラスの切り替えと、ドロップダウンの矢印の回転を行う関数を作成します。この関数の名前を <code>toggleDropdown</code> とします。</p><pre><code class="language-js">const toggleDropdown = function () {
  dropdownMenu.classList.toggle("show");
  toggleArrow.classList.toggle("arrow");
};</code></pre><p>そして、<code>addEventListener</code> メソッドを使用して、ドロップダウンボタンでこの関数を呼び出すことができます。そうすれば、ボタンをクリックするたびにドロップダウンメニューの表示と非表示を制御する関数が起動されます。</p><pre><code class="language-js">dropdownBtn.addEventListener("click", function (e) {
  e.stopPropagation();
  toggleDropdown();
});</code></pre><p>もうお気づきかもしれませんが、ドロップダウン関数内に <code>stopPropagation()</code> メソッドを追加しました。これにより、ボタン要素の機能が親要素に伝達されるのを防ぎ、関数が 2 回実行されるのを防ぐことができます。次のセクションでこれについて詳しく説明します。</p><p>出力は以下のようになります。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/07/toggle-dropdown-menu-.gif" class="kg-image" alt="toggle-dropdown-menu-" width="938" height="373" loading="lazy"><figcaption>ドロップダウンメニューの切り替え</figcaption></figure><h2 id="dom-">DOM 要素をクリックしたときにドロップダウンメニューを閉じる方法</h2><p>ドロップダウンメニューは通常、次の 4 つの異なる方法で閉じられます。</p><ul><li>ドロップダウンメニューを有効にするボタンをクリックすること</li><li>子要素のいずれかをクリックすること</li><li>メニューの外側 (ボディ部分) をクリックすること</li><li>Esc キーまたは下矢印キーを押すこと</li></ul><p>ただし、このガイドでは、最初の 3 つに焦点を当てましょう。</p><p>まず、<code>document.documentElement</code> を使用してルート要素 <code>&lt;html&gt;</code> を選択します。そうしたら、先ほどと同様に <code>toggleDropdown()</code> 関数を渡します。</p><p>しかし、今回はドロップダウンメニューが <code>show</code> というクラスを持っているかどうかをチェックする条件を設定したいと思います。<code>show</code> というクラスを持っている場合にのみ、ドロップダウンメニューを閉じる関数を実行したいからです。</p><pre><code class="language-js">document.documentElement.addEventListener("click", function () {
  if (dropdownMenu.classList.contains("show")) {
    toggleDropdown();
  }
});</code></pre><p>その結果が、最終的にこのようになります。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/07/close-dropdown-when-dom-element-is-clicked.gif" class="kg-image" alt="close-dropdown-when-dom-element-is-clicked" width="904" height="349" loading="lazy"><figcaption>DOM 要素をクリックするとドロップダウンが閉じる</figcaption></figure><p>これが JavaScript でドロップダウンメニューを作成する方法です。以下は、このドロップダウンメニューをテストするための CodePen ファイルです。</p><figure class="kg-card kg-embed-card"><iframe height="400" scrolling="no" title="Embedded content" src="https://codepen.io/evavic44/embed/eYKQJjJ?default-tab=html%2Cresult&amp;theme-id=light" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: Lato, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 720px;"></iframe></figure><h2 id="-">まとめ</h2><p>この投稿が興味深かったり、役に立ったと感じていただければ幸いです。今後の投稿を見逃さないよう、お友達と共有するか、私のブログを読者登録してみてください。読んでくださりありがとうございます。</p><p><a href="https://github.com/evavic44">GitHub</a> | <a href="https://twitter.com/victorekea">Twitter</a> | <a href="https://eke.hashnode.dev/">Blog</a> | <a href="https://victoreke.com/">Portfolio</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS を HTML にリンクする方法 – スタイルシートファイルのリンク ]]>
                </title>
                <description>
                    <![CDATA[ HTML は、web ページの構造を定義するために使用されるマークアップ言語です。CSS は、web ページの構造の見栄えを良くしたり、レイアウトを組むために使用されるスタイルシート言語です。 CSS で実装したスタイリングを HTML に反映するためには、CSS を HTML にリンクする必要があります。 リンクする方法として、インライン CSS、内部 CSS、外部 CSS があります。 ベストプラクティスとして CSS と HTML は分けた方がいいので、この記事では外部 CSS で HTML にリンクする方法を説明します。 CSS を HTML にリンクする方法 CSS を HTML にリンクするためには、link タグと複数の属性を使います。 link タグは自己終了タグで、HTML の head タグ内で使用できます。 link タグを使って CSS を HTML にリンクする: <link rel="stylesheet" type="text/css" href="styles.css" ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/how-to-link-css-to-html/</link>
                <guid isPermaLink="false">644ca243575f110652ab43a6</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Yuki Shibata ]]>
                </dc:creator>
                <pubDate>Mon, 01 May 2023 10:26:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/04/linkHTMLCSS.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/how-to-link-css-to-html/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Link CSS to HTML – Stylesheet File Linking</a>
      </p><p>HTML は、web ページの構造を定義するために使用されるマークアップ言語です。CSS は、web ページの構造の見栄えを良くしたり、レイアウトを組むために使用されるスタイルシート言語です。</p><p>CSS で実装したスタイリングを HTML に反映するためには、CSS を HTML にリンクする必要があります。</p><p>リンクする方法として、インライン CSS、内部 CSS、外部 CSS があります。</p><p>ベストプラクティスとして CSS と HTML は分けた方がいいので、この記事では外部 CSS で HTML にリンクする方法を説明します。</p><h2 id="css-html-"><strong>CSS を HTML にリンクする方法</strong></h2><p>CSS を HTML にリンクするためには、link タグと複数の属性を使います。</p><p>link タグは自己終了タグで、HTML の head タグ内で使用できます。</p><p>link タグを使って CSS を HTML にリンクする:</p><pre><code class="language-css">&lt;link rel="stylesheet" type="text/css" href="styles.css" /&gt;
</code></pre><p>以下のように、head タグ内に link タグを設置してください:</p><pre><code class="language-html">&lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
    &lt;link rel="stylesheet" type="text/css" href="styles.css" /&gt; 
    &lt;title&gt;Link CSS to HTML&lt;/title&gt;
&lt;/head&gt;</code></pre><h2 id="link-"><strong>link タグの属性</strong></h2><h3 id="rel-"><code><strong>rel</strong></code><strong> 属性</strong></h3><p><code>rel</code> 属性は、外部ファイルと自ファイルの関係を指定する属性です。CSS の場合、値は <code>stylesheet</code> になります。例えば、<code>rel="stylesheet"</code> のように指定できます。</p><h3 id="type-"><code><strong>type</strong></code><strong> 属性</strong></h3><p><code>type</code> 属性は、HTML にリンクしようとしているドキュメントのタイプを指定する属性です。CSS の場合、値は <code>text/css</code> になります。例えば、<code>type="text/css"</code> のように指定できます。</p><h3 id="href-"><code><strong>href</strong></code><strong> 属性</strong></h3><p><code>href</code> は“hypertext reference”の略称です。CSS ファイルの場所とファイル名を指定するために使用します。クリック可能なリンクになるので、<code>CTRL</code> を押しながらクリックして CSS ファイルを表示することができます。</p><p>例えば、CSS ファイルが HTML ファイルと同じフォルダにある場合、<code>href="styles.css"</code> のように指定できます。CSS ファイルが HTML ファイルと別のフォルダにある場合、<code>href="folder/styles.css"</code> のように指定できます。</p><h2 id="-"><strong>まとめ</strong></h2><p>この記事では、<code>link</code> タグと複数の属性を使って外部 CSS を HTML にリンクする方法を紹介しました。</p><p>また、仕組みを知らないまま使ってしまわないように、それぞれの属性が持つ意味についても見ていきました。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML 背景色のチュートリアル – div の背景色の変更方法をコード例付きで解説 ]]>
                </title>
                <description>
                    <![CDATA[ ウェブ開発を行う上で、HTML 要素の背景色の変更はよくある作業です。しかし、CSS の background-color  プロパティの使い方を理解していないとややこしく感じるかもしれません。 この記事では以下の内容を扱います。  * HTML 要素のデフォルトの背景色  * よく使われる要素である div の背景色を変更する方法  * background-color プロパティは CSS ボックスモデルのどの部分に影響するか  * background-color プロパティに指定できるさまざまな値 要素のデフォルトの背景色 div のデフォルトの背景色は transparent (透明) です。そのため、div に background-color  を指定しなかった場合にはその親要素の背景色で表示されます。 div の背景色の変更 この例では、次の div 要素の背景色を変更します。 <div class="div-1"> I love HTML </div> <div class="div-2"> I ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/html-background-color-tutorial-how-to-change-a-div-background-color-explained-with-code-examples/</link>
                <guid isPermaLink="false">642f10f5c549af058e3885aa</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Thu, 06 Apr 2023 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/04/5f9c9b32740569d1a4ca2a54.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/html-background-color-tutorial-how-to-change-a-div-background-color-explained-with-code-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML Background Color Tutorial – How to Change a Div Background Color, Explained with Code Examples</a>
      </p><p>ウェブ開発を行う上で、HTML 要素の背景色の変更はよくある作業です。しかし、CSS の <code>background-color</code> プロパティの使い方を理解していないとややこしく感じるかもしれません。</p><p>この記事では以下の内容を扱います。</p><ul><li>HTML 要素のデフォルトの背景色</li><li>よく使われる要素である div の背景色を変更する方法</li><li><code>background-color</code> プロパティは CSS ボックスモデルのどの部分に影響するか</li><li><code>background-color</code> プロパティに指定できるさまざまな値</li></ul><h3 id="-">要素のデフォルトの背景色</h3><p>div のデフォルトの背景色は <code>transparent</code> (透明) です。そのため、div に <code>background-color</code> を指定しなかった場合にはその親要素の背景色で表示されます。</p><h3 id="div-">div の背景色の変更</h3><p>この例では、次の div 要素の背景色を変更します。</p><pre><code class="language-html">&lt;div class="div-1"&gt; I love HTML &lt;/div&gt;
&lt;div class="div-2"&gt; I love CSS &lt;/div&gt;
&lt;div class="div-3"&gt; I love JavaScript &lt;/div&gt;
</code></pre><p>スタイルを何も指定しなかった場合は次のような見た目になります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-12.22.48-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-12.22.48-PM.png 1682w" sizes="(min-width: 720px) 720px" width="1682" height="200" loading="lazy"></figure><p>では、クラスにスタイルを追加して div の背景色を変更します。コード例を HTML ファイルに入力して試してみましょう。</p><pre><code class="language-html">&lt;style&gt;
    .div-1 {
        background-color: #EBEBEB;
    }
    
    .div-2 {
    	background-color: #ABBAEA;
    }
    
    .div-3 {
    	background-color: #FBD603;
    }
&lt;/style&gt;

&lt;body&gt;
    &lt;div class="div-1"&gt; I love HTML &lt;/div&gt;
    &lt;div class="div-2"&gt; I love CSS &lt;/div&gt;
    &lt;div class="div-3"&gt; I love JavaScript &lt;/div&gt;
&lt;/body&gt;
</code></pre><p>次のような表示になります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.12.29-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.12.29-AM-1.png 1702w" sizes="(min-width: 720px) 720px" width="1702" height="226" loading="lazy"></figure><p>これでこの div 要素の背景色を変更することができました。では次は、このプロパティについてもっと詳しく学びましょう。<code>background-color</code> プロパティが CSS ボックスモデルのパーツにどう影響するか見ていきます。</p><h3 id="-css-">背景色と CSS ボックスモデル</h3><p>CSS ボックスモデルでは、すべての HTML 要素が長方形のボックスとして表されます。各ボックスは、下記の図に示した 4 つのパーツで構成されます。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.07.00-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.00-AM-1.png 1720w" sizes="(min-width: 720px) 720px" width="1720" height="902" loading="lazy"><figcaption>CSS ボックスモデル</figcaption></figure><p>ボックスモデルについてよく知らない場合は詳しく調べてみるのもいいでしょう。ここでの疑問は、div の背景色を変更すると、ボックスモデルのどの部分が影響されるかという点です。答えはずばり、パディング領域とコンテンツ領域です。例を用いて確認してみましょう。</p><pre><code class="language-html">&lt;style&gt;
    body {
        background-color: #ABBAEA;
    }
    .child {
        height: 200px;
        margin: 20px;
        border: 5px solid;
        background-color: #FBD603;
    }
&lt;/style&gt;
&lt;body&gt;
    &lt;div&gt;
        &lt;p&gt;This is the parent div which contains the div we are testing&lt;/p&gt;

        &lt;div class="child"&gt;
            &lt;p&gt;This example shows that changing the background color of a div does not affect the border and margin of the div.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

</code></pre><p>このコードは次のような表示になります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.07.10-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.10-AM-1.png 1712w" sizes="(min-width: 720px) 720px" width="1712" height="654" loading="lazy"></figure><p>上の例を見ると、マージン領域と境界線の領域は、背景色の変更に影響されないことが分かります。境界線の色は <code>border-color</code> プロパティを使って変更できます。マージン領域は透明のままとなり、親要素の背景色が反映されます。</p><p>最後に、<code>background-color</code> プロパティが取ることのできる値について説明します。</p><h3 id="background-color-">background-color の値</h3><p><code>color</code> プロパティと同様に、<code>background-color</code> プロパティも 6 種類の値を取ることが可能です。ここでは最もよく使われる 3 種類の値の例を見ていきましょう。次の例では、異なる値を使用して div の背景色を赤に設定しています。</p><pre><code class="language-html">&lt;style&gt;
    /* キーワード値 (色の名前) */
    .div-1 {
        background-color: red;
    }
    
    /* 16 進の値 */
    .div-2 {
       background-color: #FF0000;
    }
    
    /* RGB 値 */
    .div-3 {
    	background-color: rgb(255,0,0);
    }
    
&lt;/style&gt;

&lt;body&gt;
    &lt;div class="div-1"&gt;
        &lt;p&gt;The background property can take six different values.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="div-2"&gt;
        &lt;p&gt;The background property can take six different values.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="div-3"&gt;
        &lt;p&gt;The background property can take six different values.&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;
</code></pre><p>どれも同じ背景色になることが分かります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.07.24-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.07.24-AM-1.png 1718w" sizes="(min-width: 720px) 720px" width="1718" height="468" loading="lazy"></figure><p><code>background-color</code> プロパティが取ることのできる値には他に、HSL 値、特殊なキーワード値、グローバル値があります。それぞれの例は以下の通りです。</p><pre><code class="language-css">/* HSL 値 */
background-color: hsl(0, 100%, 25%;

/* 特殊なキーワード値 */
background-color: currentcolor;
background-color: transparent;

/* グローバル値 */
background-color: inherit;
background-color: initial;
background-color: unset;
</code></pre><p>これらの値について詳しくは<a href="https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Colors/Applying_color">こちら</a>を参照してください。</p><h3 id="--1">補足</h3><p>要素に背景色を設定する際は、背景色と文字色のコントラスト比が十分大きくなるようにすることが重要です。これは、テキストを目の悪い人にも読みやすくするためです。</p><p>次の 2 つの div を見てください。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png" class="kg-image" alt="Screen-Shot-2020-05-08-at-11.11.44-AM-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/04/Screen-Shot-2020-05-08-at-11.11.44-AM-1.png 1702w" sizes="(min-width: 720px) 720px" width="1702" height="294" loading="lazy"></figure><p>1 つ目の div は背景色と文字色のコントラストが十分でないため、誰にでも読みやすい状態ではありません。あなた一人だけが見るウェブサイトを作っていて、しかもあなたがとても目が良いのでない限りは、このような組み合わせは避けるべきでしょう。</p><p>2 つ目の div の背景色と文字色のコントラスト比は、はるかに良くなっています。したがって、こちらの方が多くの人にとってアクセスしやすく、はっきりと読みやすいでしょう。</p><h2 id="--2">結論</h2><p>この記事では、div の背景色を変更する方法を説明しました。また、背景色の変更が CSS ボックスモデルのどの部分に影響するかについても述べました。最後に、<code>background-color</code> プロパティが取ることのできる値について述べました。</p><p>この記事がお役に立てば幸いです。お読みいただきありがとうございました。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS の図形: 円や三角形などの図形を CSS だけで描く方法 ]]>
                </title>
                <description>
                    <![CDATA[ CSS やウェブ開発を学び始めたばかりですか？インターネットのいたるところで目にする綺麗な図形がどうやって作られているか疑問に思ったことがありますか？もう疑問に思うことはありません。この記事で答えを見つけましょう。 以下、CSS で図形を作成する基本を説明します。このトピックについては説明することがたくさんあります！そのためツールや図形のすべてはカバーしませんが (扱うのはほんの一部です)、CSS で図形を描く方法の基本的な考え方がわかるはずです。 一部の図形では他の図形に比べ多くのコツが必要です。CSS による図形は通常、 width、height、top、right、left、border、bottom、transform などや、:before、:after  のような疑似要素を組み合わせて作成します。shape-outside や clip-path のような比較的新しい CSS プロパティもあり、こちらについても後ほど説明します。 CSS の図形 - 基本の方法 CSS のコツをいくつか使うと、よく目にする CSS プロパティだけで正方形、円、三角形などの基本的な図形を ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/css-shapes-explained-how-to-draw-a-circle-triangle-and-more-using-pure-css/</link>
                <guid isPermaLink="false">640bbea35ba18905807bfbd1</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Sun, 12 Mar 2023 23:26:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/03/delila-ziebart-b0GSCFJ-Gzg-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/css-shapes-explained-how-to-draw-a-circle-triangle-and-more-using-pure-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">CSS Shapes Explained: How to Draw a Circle, Triangle, and More Using Pure CSS</a>
      </p><p>CSS やウェブ開発を学び始めたばかりですか？インターネットのいたるところで目にする綺麗な図形がどうやって作られているか疑問に思ったことがありますか？もう疑問に思うことはありません。この記事で答えを見つけましょう。</p><p>以下、CSS で図形を作成する基本を説明します。このトピックについては説明することが<strong>たくさん</strong>あります！そのためツールや図形のすべてはカバーしませんが (扱うのはほんの一部です)、CSS で図形を描く方法の基本的な考え方がわかるはずです。</p><p>一部の図形では他の図形に比べ多くのコツが必要です。CSS による図形は通常、<strong>width、height、top、right、left、border、bottom、transform</strong> などや、<strong>:before、:after</strong> のような疑似要素を組み合わせて作成します。<strong>shape-outside</strong> や <strong>clip-path</strong> のような比較的新しい CSS プロパティもあり、こちらについても後ほど説明します。</p><h2 id="css-">CSS の図形 - 基本の方法</h2><p>CSS のコツをいくつか使うと、よく目にする CSS プロパティだけで正方形、円、三角形などの基本的な図形を作成できます。その例を見てみましょう。</p><h3 id="-">正方形と長方形</h3><p>正方形と長方形は一番描きやすい図形でしょう。div 要素もデフォルトの状態で正方形または長方形です。</p><p>下記のコードに示すように、width (幅) と height (高さ) を設定します。あとは要素に背景色を追加するだけです。必要に応じてその他のプロパティも追加できます。</p><pre><code class="language-css">#square {
    background: lightblue;
    width: 100px;
    height: 100px;
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/square.png" class="kg-image" alt="square" width="274" height="276" loading="lazy"><figcaption>CSS の正方形</figcaption></figure><h3 id="--1">円</h3><p>円を作成するのも同じくらい簡単です。円を作成するには、要素に border-radius を設定します。このプロパティは要素の角を丸くします。</p><p>border-radius を 50% に設定すると円になります。width と height の値が異なるときは楕円になります。</p><pre><code class="language-css">#circle {
    background: lightblue;
    border-radius: 50%;
    width: 100px;
    height: 100px;
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/circle.png" class="kg-image" alt="circle" width="276" height="272" loading="lazy"><figcaption>CSS の円</figcaption></figure><h3 id="--2">三角形</h3><p>三角形は少し難易度が上がります。三角形になるように border (境界線) を設定しなければなりません。要素の width と height をゼロに設定すると、実質的には境界線の幅が要素の幅になります。</p><p>要素の境界線が接する端は 45° の対角線になることを頭に置いておいてください。それを利用して三角形を作ることができます。境界線の 1 本を単色に設定し、他の境界線を transparent (透明) に設定すると、三角形の形ができます。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/borders.png" class="kg-image" alt="borders" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/borders.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/borders.png 763w" sizes="(min-width: 720px) 720px" width="763" height="357" loading="lazy"><figcaption>CSS の境界線の端には角度が付いています</figcaption></figure><pre><code class="language-css">#triangle {
    width: 0;
    height: 0;
    border-left: 40px solid transparent;
    border-right: 40px solid transparent;
    border-bottom: 80px solid lightblue;
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/triangle.png" class="kg-image" alt="triangle" width="236" height="236" loading="lazy"><figcaption>CSS の三角形</figcaption></figure><p>三角形 (矢印) の方向を変えたい場合は、どちら側の境界線を表示させたいかに応じて border プロパティの設定値を変更します。または <em>transform</em> プロパティで要素を回転させても構いません。</p><pre><code class="language-css"> #triangle {
     width: 0;
     height: 0;
     border-top: 40px solid transparent;
     border-right: 80px solid lightblue;
     border-bottom: 40px solid transparent;
 }
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/triangle2.png" class="kg-image" alt="triangle2" width="242" height="236" loading="lazy"><figcaption>別方向の CSS の三角形</figcaption></figure><p>以上が CSS の基本的な図形の紹介です。作成したい図形の種類は無限にあることでしょう。ここで紹介したのは基礎のみですが、少しの創造性と根気があれば、基本の CSS プロパティだけでもさまざまなことができます。</p><p>もっと高度な図形を作成する場合、:after や :before などの疑似セレクターを使うのも良いでしょう。この記事は入門として基礎的な内容にとどめておこうと思うので、疑似セレクターについては扱いません。</p><h3 id="--3">デメリット</h3><p><strong>上記の方法には 1 つ大きな欠点があります。</strong>例えばテキストを図形に沿って回り込ませたい場合です。通常の HTML div 要素で背景と境界線を使って図形を作る場合はそれができません。テキストは図形に沿う形ではなく、div 要素自体 (正方形または長方形) に沿って回り込みます。</p><p>下記が三角形とテキストの回り込み方を示した図です。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/textflow-bad.png" class="kg-image" alt="textflow-bad" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/textflow-bad.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/textflow-bad.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/textflow-bad.png 1312w" sizes="(min-width: 720px) 720px" width="1312" height="454" loading="lazy"></figure><p>幸い、代わりに使える新しい CSS プロパティがあります。</p><h2 id="css--1">CSS の図形 - もう一つの方法</h2><p>近年では、<strong>shape-outside</strong> という CSS プロパティが使えます。このプロパティを使ってテキストが回り込む形状を定義できます。</p><p>このプロパティでは以下のような基本的な図形が使えます。</p><p><strong>inset()</strong><br><strong>circle()</strong><br><strong>ellipse()</strong><br><strong>polygon()</strong></p><p><strong>補足</strong>: <strong>clip-path</strong> プロパティを使うこともできます。このプロパティでも同様に図形を作成できますが、shape-outside と違ってテキストを図形に沿って回り込ませることができません。</p><p>shape-outside プロパティを使って形状を指定する要素は浮動 (float) 要素でなければなりません。また、width と height が指定されていなければなりません。<strong>これは重要なので覚えておきましょう！</strong></p><p>理由について<a href="https://developer.mozilla.org/ja/docs/Web/CSS/shape-outside">詳しくはこちら</a>を参照してください。リンク先には次のように書かれています。</p><blockquote><code>shape-outside</code> プロパティは、<em>浮動領域</em>と<em>浮動要素</em>を表す以下に挙げた値を使用して指定します。浮動領域はインラインコンテンツ (浮動要素) が囲む形状を指定します。(引用元: <a href="https://developer.mozilla.org/ja/docs/Web/CSS/shape-outside">developer.mozilla.org</a>)</blockquote><h3 id="inset-">inset()</h3><p>inset() を使うと長方形または正方形を作成でき、オプションでテキストの回り込みのオフセットを指定できます。この値で、周りのテキストが図形にどれだけ重なるかを指定できます。</p><p>四方向すべてに同じオフセットを指定するには <strong>inset(20px)</strong> のように指定します。または <strong>inset(20px 5px 30px 10px)</strong> のように、それぞれの方向を個別に指定できます。</p><p>オフセットの設定には、パーセントなど他の単位も使用できます。値は <strong>inset(上 右 下 左)</strong> の方向に対応します。</p><p>下記のコード例を見てください。この例では inset の値を上側が 20px、右側が 5px、下側が 30px、左側が 10px に設定しています。テキストを重ねるのではなく、正方形の周囲に沿ってテキストを回り込ませたいなら inset() を使用しなくても構いません。その場合は div 要素のサイズと背景を指定するだけです。</p><pre><code class="language-css"> #square {
     float: left;
     width: 100px;
     height: 100px;
     shape-outside: inset(20px 5px 30px 10px);
     background: lightblue;
 }
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/inset.png" class="kg-image" alt="inset" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/inset.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/inset.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/inset.png 1536w" sizes="(min-width: 720px) 720px" width="1536" height="314" loading="lazy"><figcaption>テキストが指定された値の分オフセットされ、内側に入っています。この例では上側が 20px、右側が 5px、下側が 30px、左側が 10px です。</figcaption></figure><p>また、inset() に 2 つ目の値を渡して、inset の border-radius を指定することも可能です。次のとおりです。</p><pre><code class="language-css"> #square {
     float: left;
     width: 100px;
     height: 100px;
     shape-outside: inset(20px 5px 30px 10px round 50px);
     background: lightblue;
 }
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/inset2.png" class="kg-image" alt="inset2" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/inset2.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/inset2.png 920w" sizes="(min-width: 720px) 720px" width="920" height="558" loading="lazy"><figcaption>inset の border-radius を 50px に設定した場合</figcaption></figure><h3 id="circle-">circle()</h3><p>次の例では <strong>shape-outside</strong> プロパティを使って円を作成します。円を表示させるには、対応するプロパティで <strong>clip-path</strong> も適用する必要があります。</p><p><strong>clip-path</strong> プロパティは shape-outside プロパティと同じ値を取ることができるので、<strong>shape-outside</strong> に使ったのと同じ、標準的な <strong>circle()</strong> の形状を指定しましょう。またここではテキストとの間にスペースを空けるため、要素に 20px のマージンを適用しています。</p><pre><code class="language-css">#circle {
    float: left;
    width: 300px;
    height: 300px;
    margin: 20px;
    shape-outside: circle();
    clip-path: circle();
    background: lightblue;
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/circle-shape-margin-1.png" class="kg-image" alt="circle-shape-margin-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/circle-shape-margin-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/circle-shape-margin-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/circle-shape-margin-1.png 1218w" sizes="(min-width: 720px) 720px" width="1218" height="496" loading="lazy"><figcaption>テキストが図形に沿って回り込むようになりました！</figcaption></figure><p>上記の例では、円の半径を指定していません。これは円を div の大きさ (300px) に合わせたかったからです。円に異なる大きさを指定することも可能です。</p><p>circle() は 2 つの値を取ります。1 つ目の値は半径、2 つ目の値は位置です。これらの値で円の中心を指定します。</p><p>下記の例では半径を 50% に設定しました。そして円の中心を 30% ずらしました。半径と位置の値の間には "at" を入れなければならないことに注意してください。</p><p>また、clip-path には異なる位置の値を指定しています。位置を 0 に動かしたことにより、円が半分に切り取られています。</p><pre><code class="language-css"> #circle {
      float: left;
      width: 150px;
      height: 150px;
      margin: 20px;
      shape-outside: circle(50% at 30%);
      clip-path: circle(50% at 0%);
      background: lightblue;
    }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/circle2.png" class="kg-image" alt="circle2" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/circle2.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/circle2.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/circle2.png 1220w" sizes="(min-width: 720px) 720px" width="1220" height="470" loading="lazy"></figure><h3 id="ellipse-">ellipse()</h3><p>ellipse は circle と同じように動作しますが、楕円を作成します。<strong>ellipse(25px 50px)</strong> のように、X 方向の値と Y 方向の値両方を定義できます。</p><p>circle と同様に、最後の引数として位置の値を取ることもできます。</p><pre><code class="language-css">   #ellipse {
      float: left;
      width: 150px;
      height: 150px;
      margin: 20px;
      shape-outside: ellipse(20% 50%);
      clip-path: ellipse(20% 50%);
      background: lightblue;
    }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/ellipse.png" class="kg-image" alt="ellipse" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/ellipse.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/ellipse.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/ellipse.png 1046w" sizes="(min-width: 720px) 720px" width="1046" height="492" loading="lazy"></figure><h3 id="polygon-">polygon()</h3><p>polygon (多角形) は、さまざまな頂点 / 座標で定義される図形です。下記では筆者のイニシャル "T" の形を作成します。座標 0,0 からスタートして左から右へ移動し、"T" の形を描いています。</p><pre><code class="language-css">#polygon {
      float: left;
      width: 150px;
      height: 150px;
      margin: 0 20px;
      shape-outside: polygon(
        0 0,
        100% 0,
        100% 20%,
        60% 20%,
        60% 100%,
        40% 100%,
        40% 20%,
        0 20%
      );
      clip-path: polygon(
        0 0,
        100% 0,
        100% 20%,
        60% 20%,
        60% 100%,
        40% 100%,
        40% 20%,
        0 20%
      );
      background: lightblue;
    }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/polygon_t.png" class="kg-image" alt="polygon_t" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/polygon_t.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/polygon_t.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/polygon_t.png 1352w" sizes="(min-width: 720px) 720px" width="1352" height="414" loading="lazy"></figure><h3 id="--4">画像</h3><p>背景を透過した画像の形を使うこともできます。たとえばこの丸い美しい月の画像を使います。</p><p>これは背景を透過した .png 画像です。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/moon.png" class="kg-image" alt="moon" width="500" height="500" loading="lazy"></figure><pre><code class="language-html">&lt;img src="src/moon.png" id="moon" /&gt;
</code></pre><pre><code class="language-css">#moon {
      float: left;
      width: 150px;
      height: 150px;
      shape-outside: url("./src/moon.png");
    }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/moon2.png" class="kg-image" alt="moon2" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/03/moon2.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/03/moon2.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2023/03/moon2.png 1318w" sizes="(min-width: 720px) 720px" width="1318" height="418" loading="lazy"></figure><p>以上です！お読みいただきありがとうございました。</p><h2 id="--5">この記事を書いた人</h2><p>私はスウェーデンの開発者 Thomas Weibenfalk です。個人の YouTube チャンネルで定期的に無料のチュートリアルを投稿しています。React や Gatsby に関するプレミアムコースもあります。以下のリンクを参照してください。</p><p>Twitter — <a href="https://twitter.com/weibenfalk">@weibenfalk</a><br>Weibenfalk on <a href="https://www.youtube.com/c/weibenfalk">YouTube</a><br>Weibenfalk <a href="https://www.weibenfalk.com/">Courses Website</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ z-index が動作しない 4 つの原因とその修正方法 ]]>
                </title>
                <description>
                    <![CDATA[ z-index は、要素をレイヤー (層) 状に重ねて配置するために使う CSS プロパティです。とても便利かつ、CSS を扱うならば使い方を知っておくことが非常に重要なツールです。 残念ながら、z-index は動作が直観的でないことも多いプロパティです。最初の内は z-index の値が大きい要素が小さい要素の上に重なるというシンプルな動作に見えますが、動作を複雑にする追加のルールがあります。それで問題が起きるたび z-index を 999999 に設定して修正するわけにもいきませんよね。 この記事では z-index が動作しない原因として考えられる主な 4 つの理由と、その修正方法を解説します。 実際のコード例と問題の修正手順を見ていきます。この記事を読めば、z-index のよくある落とし穴を理解して回避できるようになるでしょう。 この記事の動画バージョンは筆者の YouTube チャンネル「Coder Coder」にて公開されています。 では最初の理由を見ていきましょう。 1. 同じ重ね合わせコンテキストの要素は、コードに書かれている順で前の要素の上に重ねて表 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/4-reasons-your-z-index-isnt-working-and-how-to-fix-it-coder-coder-6bc05f103e6c/</link>
                <guid isPermaLink="false">6400d35c6fde8c0582c570c6</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Thu, 02 Mar 2023 17:56:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/03/1_Nm4AWKx-ezJBFLGShJCVAw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/4-reasons-your-z-index-isnt-working-and-how-to-fix-it-coder-coder-6bc05f103e6c/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">4 reasons your z-index isn’t working (and how to fix it)</a>
      </p><p>z-index は、要素をレイヤー (層) 状に重ねて配置するために使う CSS プロパティです。とても便利かつ、CSS を扱うならば使い方を知っておくことが非常に重要なツールです。</p><p>残念ながら、z-index は動作が直観的でないことも多いプロパティです。最初の内は z-index の値が大きい要素が小さい要素の上に重なるというシンプルな動作に見えますが、動作を複雑にする追加のルールがあります。それで問題が起きるたび z-index を 999999 に設定して修正するわけにもいきませんよね。</p><p>この記事では z-index が動作しない原因として考えられる主な 4 つの理由と、その修正方法を解説します。</p><p>実際のコード例と問題の修正手順を見ていきます。この記事を読めば、z-index のよくある落とし穴を理解して回避できるようになるでしょう。</p><p>この記事の動画バージョンは筆者の YouTube チャンネル「Coder Coder」にて公開されています。</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/qYi-OLf5q5g?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="CSS: 4 Reasons Your Z-Index Isn't Working" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>では最初の理由を見ていきましょう。</p><h3 id="1-">1. 同じ重ね合わせコンテキストの要素は、コードに書かれている順で前の要素の上に重ねて表示される</h3><p>最初の例は、3 つの要素からなる比較的シンプルなレイアウトです。</p><ul><li>猫の画像</li><li>テキストが書かれた白いブロック</li><li>同じ猫の画像がもう一枚</li></ul><p>HTML のコードは次の通りです。</p><pre><code class="language-html">&lt;div class="cat-top"&gt;&lt;/div&gt; 

&lt;div class="content__block"&gt; Meow meow meow... &lt;/div&gt; 

&lt;div class="cat-bottom"&gt;&lt;/div&gt;
</code></pre><p>このレイアウトで、テキストが書かれた白いブロックを 2 匹の猫の上に重ねて表示したいとします。</p><p>そのためにまず、猫の画像両方に負の数のマージンを設定して、白いブロックと一部分が重なるようにしました。</p><pre><code class="language-css">.cat-top { 
   margin-bottom: -110px; 
} 

.cat-bottom { 
   float: right; 
   margin-top: -120px; 
}
</code></pre><p>ところが今はこのような表示になっています。</p><!--kg-card-begin: html--><p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="XQEyeX" data-user="thecodercoder" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/thecodercoder/pen/XQEyeX">
  Z-index: #1: set position, #2: natural stacking order, #3: CSS properties</a> by Jessica (<a href="https://codepen.io/thecodercoder">@thecodercoder</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async="" src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script><!--kg-card-end: html--><p>1 匹目の猫は、期待したとおり白いブロックの奥に表示されています。ですが 2 匹目の猫が手前に表示されてしまっています。</p><p>これはなぜでしょう。</p><p>このような表示になるのはウェブページの<strong>通常の重ね合わせ順</strong>が原因です。この基準が、どの要素が上にくるか下にくるかの基本的な順序を決めています。</p><p>要素に z-index が指定されていない場合でも、どちらが上に重なるかには理由があるのです。</p><p>この例ではどの要素にも z-index の値が設定されていません。したがって、重ね合わせ順はコード内の登場順で決まります。このルールでは、マークアップで後に登場する要素が前の要素の上 (手前) に重ねられます。</p><p>(重ね合わせ順序の基準については <a href="https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context">Mozilla Developer Network のページ</a>でより詳しく説明されています。)</p><p>この例では、猫の画像と白いブロックはこのルールに従って配置されています。1 匹目の猫が白いブロックの下 (奥) に、その白いブロックが 2 匹目の猫の下に入っているのはそのためです。</p><p>これで重ね合わせ順序については分かりました。では 2 匹目の猫が白いブロックの下にくるようにするには CSS をどう直したら良いのでしょう。</p><p>ここで 2 つ目の理由の登場です。</p><h3 id="2-position-">2. 要素に position プロパティが指定されていない</h3><p>重ね合わせ順序を決めるもう 1 つの基準は、要素の position (位置) が指定されているかどうかです。</p><p>要素の位置を指定するには、CSS に <code>position</code> プロパティを追加して <code>static</code> 以外の値に設定します。例えば <code>relative</code> や <code>absolute</code> などです。(この点について詳しくは、筆者による<a href="https://coder-coder.com/css-position-layout/">こちらの記事 (英語)</a> を参考にしてください。)</p><p>このルールでは、位置指定された (positioned) 要素は、位置指定されていない要素よりも手前に表示されます。</p><p>つまり白いブロックを <code>position: relative</code> に設定して、2 匹の猫の要素は位置指定されていない状態のままにすれば、白いブロックが猫の要素よりも手前に重ねられます。</p><p>表示は次のようになります。先ほどの Codepen を使って動作を確認しても構いません。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/NlDhNhhBXrXmR35aZCt4XCGbfBCt4bRPLHzK.png" class="kg-image" alt="NlDhNhhBXrXmR35aZCt4XCGbfBCt4bRPLHzK" srcset="https://www.freecodecamp.org/japanese/news/content/images/2023/03/NlDhNhhBXrXmR35aZCt4XCGbfBCt4bRPLHzK.png 600w" width="600" height="561" loading="lazy"></figure><p>次は <code>transform</code> プロパティを使って、下側の猫を上下逆になるように回転させようと思います。そうすると両方の猫が白いブロックより奥に表示され、顔だけを出した状態になるはずです。</p><p>ですが上記の設定は、さらなる <code>z-index</code> 関連の混乱を招きます。次のパートで問題とその解決方法を説明します。</p><h3 id="3-opacity-transform-css-">3. opacity や transform など一部の CSS プロパティが設定された要素は、新しい重ね合わせコンテキストに移動される</h3><p>先ほど述べたように、下側の猫を上下逆に表示したいと思います。そのために <code>transform: rotate(180deg)</code> を追加します。</p><pre><code class="language-css">.cat-bottom { 
   float: right; 
   margin-top: -120px; 
   transform: rotate(180deg); 
}
</code></pre><p>しかしこの設定を適用すると、下側にいる猫はまた白いブロックの手前に表示されるようになってしまいます。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/03/GTJjexmzYUkJa37hDuIUALqGngUjSl0wxFcE-1.png" class="kg-image" alt="GTJjexmzYUkJa37hDuIUALqGngUjSl0wxFcE-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/2023/03/GTJjexmzYUkJa37hDuIUALqGngUjSl0wxFcE-1.png 600w" width="600" height="558" loading="lazy"></figure><p><em>一体何が起きているのでしょうか？</em></p><p>この問題に遭遇することは少ないかもしれませんが、これも重ね合わせ順序の特徴の一つです。<code>transform</code> や <code>opacity</code> など一部の CSS プロパティは、要素を専用の新しい<a href="https://www.w3.org/TR/css-color-3/#transparency">重ね合わせコンテキスト (stacking context)</a> に移動します。</p><p>どういうことかと言うと、<code>.cat-bottom</code> の要素に <code>transform</code> を追加すると、この要素は <code>z-index</code> が 0 の時と同じ状態になります。<code>position</code> も <code>z-index</code> も設定していないのにです。(この挙動を <code>opacity</code> プロパティの場合について説明している <a href="https://www.w3.org/TR/css-color-3/#transparency">W3.org のドキュメント</a>があります。)</p><p>白いブロックに追加したのは <code>position: relative</code> だけで、<code>z-index</code> の値は追加していないことを思い出してください。それだけで位置指定されていない猫の要素より手前に配置されるようにできていました。</p><p>しかし transform の設定によって、<code>.cat-bottom</code> の要素が <code>z-index: 0</code> で相対位置指定された場合と同じようにふるまうようになり、白いブロックの手前に表示されるようになってしまいました。</p><p>この場合の修正方法は、せめて白いブロックの方だけでも <code>position: relative</code> と <code>z-index</code> を明示的に設定することです。念のため猫の要素にも <code>position: relative</code> とさらに小さい <code>z-index</code> を設定しても構いません。</p><pre><code class="language-css">.content__block { 
   position: relative; 
   z-index: 2; 
} 

.cat-top, .cat-bottom { 
   position: relative; z-index: 1; 
}
</code></pre><p>これで基本的な z-index の問題のほとんどは解決できると思います。</p><p>では <code>z-index</code> が動作しない最後の理由に移りましょう。今度は親要素と子要素が絡んでくるので少し複雑です。</p><h3 id="4-z-index-">4. 親要素の z-index レベルが原因で、要素が低い重ね合わせコンテキストにある</h3><p>このケースのコード例を見てみましょう。</p><!--kg-card-begin: html--><p class="codepen" data-height="300" data-default-tab="html,result" data-slug-hash="qwYdZw" data-user="thecodercoder" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/thecodercoder/pen/qwYdZw">
  Z-index: #4 different stacking contexts</a> by Jessica (<a href="https://codepen.io/thecodercoder">@thecodercoder</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async="" src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script><!--kg-card-end: html--><p>シンプルなウェブページの例です。よくあるコンテンツと、その手前に「Send Feedback」と書かれたピンクのサイドタブが配置されています。</p><p>そして猫の写真をクリックするとモーダルウィンドウが開き、背景に半透明のグレーがオーバーレイ表示されます。</p><p>しかしモーダルウィンドウが開いた時、サイドタブがグレーのオーバーレイより手前に表示されています。このオーバーレイを、サイドタブも含めたすべての表示内容を覆うような形で手前に表示させたいと思います。</p><p>問題となっている要素の CSS を見てみましょう。</p><pre><code class="language-css">.content { 
   position: relative; 
   z-index: 1; 
} 

.modal { 
   position: fixed; 
   z-index: 100; 
} 

.side-tab { 
   position: fixed; 
   z-index: 5; 
}
</code></pre><p>すべての要素が位置指定されています。そしてサイドタブの <code>z-index</code> が 5 に設定されているため、<code>z-index: 1</code> となっているコンテンツの要素より手前に表示されます。</p><p>次にモーダルには <code>z-index: 100</code> が設定されているので、<code>z-index: 5</code> のサイドタブより手前に表示される<em>はず</em>です。しかし実際にはモーダルがサイドタブの奥に表示されてしまっています。</p><p>どうしてこうなっているのでしょう？</p><p>ここまでに、重ね合わせコンテキストに影響する要因をいくつか見てきました。position が指定されているかどうかや、マークアップ内での登場順などです。</p><p><strong>ここでさらにもう一つ、重ね合わせコンテキストの特徴を紹介します。子要素はその親要素の重ね合わせコンテキスト内に制限されるということです。</strong></p><p>問題となっている 3 つの要素を詳しく見てみましょう。</p><p>マークアップは次のようになっています。</p><pre><code class="language-css">&lt;section class="content"&gt;            
    &lt;div class="modal"&gt;&lt;/div&gt;
&lt;/section&gt;

&lt;div class="side-tab"&gt;&lt;/div&gt;
</code></pre><p>このマークアップを見ると、コンテンツとサイドタブの要素は兄弟要素であることがわかります。つまり、この 2 つの要素はマークアップの中で同じ階層に位置します。(この階層は z-index の階層とは異なります。) そしてモーダルは、コンテンツの要素の子要素となっています。</p><p>モーダルがコンテンツの要素の内側にあるので、<code>z-index</code> を 100 に設定しても、その親要素内でしか効果を発揮できません。例えばもしモーダルから見て兄弟要素にあたる他の子要素があったとしたら、その兄弟要素はお互いの <code>z-index</code> の値に応じて手前に表示されたり奥に表示されたりします。</p><p>しかしその <code>z-index</code> の値は、親要素の外側には影響しません。親要素であるコンテンツの要素は &nbsp;<code>z-index</code> が 1 に設定されているためです。</p><p>そのため子要素 (モーダルも含む) は、この <code>z-index</code> レベルの外に出ることができません。</p><p>(少し気が滅入るようなメタファーですが「子は親に制限されていてそこから出ることができない」と憶えてもいいでしょう。)</p><p>この問題を解決する方法は 2 つあります。</p><h3 id="-1-">解決法 1: モーダルを親であるコンテンツ要素の外に出し、ページのメインの重ね合わせコンテキストに移動させる</h3><p>この方法で修正したマークアップがこちらです。</p><pre><code class="language-css">&lt;section class="content"&gt;&lt;/section&gt;

&lt;div class="modal"&gt;&lt;/div&gt;

&lt;div class="side-tab"&gt;&lt;/div&gt;
</code></pre><p>これで、モーダルの要素が他 2 つの要素と兄弟要素になりました。これで 3 つの要素すべてが同じ重ね合わせコンテキストとなり、お互いの z-index レベルに応じて重ねられます。</p><p>この新しい重ね合わせコンテキストでは、要素は次の順序で上 (手前) から順に重ねられます。</p><ul><li>モーダル (<code>z-index: 100</code>)</li><li>サイドタブ (<code>z-index: 5</code>)</li><li>コンテンツ (<code>z-index: 1</code>)</li></ul><h3 id="-2-z-index-">解決法 2: コンテンツから位置指定を削除して、モーダルの z-index を制限しないようにする</h3><p>マークアップを変更したくない、あるいは変更できない場合、コンテンツの要素の <code>position</code> 指定を削除することで問題を修正できます。</p><pre><code class="language-css">.content { 
   // No position set 
} 

.modal { 
   position: absolute; 
   z-index: 100; 
} 

.side-tab { 
   position: absolute; 
   z-index: 5; 
}
</code></pre><p>コンテンツの要素が位置指定されていない状態になったので、モーダルの <code>z-index</code> の値を制限しなくなりました。これで、より高い <code>z-index</code> の値 100 を持つモーダルがサイドタブの要素よりも手前に表示されます。</p><p>この方法でも修正できますが、筆者は個人的には 1 つめの方法を使います。</p><p>なぜかと言うと、将来的に何らかの理由があってコンテンツの要素を位置指定しなければならなくなったときに、またモーダルの重ね合わせ順が制限されてしまうためです。</p><h3 id="-">まとめ</h3><p>この記事がお役に立てば幸いです！まとめると、z-index の問題はたいてい次のガイドラインに従って解決できます。</p><ol><li>要素が位置指定されているか、z-index の値が正しい順序になっているか確認する</li><li>親要素によって子要素の <code>z-index</code> レベルが制限されていないか確認する</li></ol><h4 id="--1">もっと読む</h4><p>筆者のブログ <a href="https://coder-coder.com/">coder-coder.com</a> でもウェブ開発に関するチュートリアルを執筆しています。また <a href="https://www.instagram.com/thecodercoder/">Instagram</a> にもちょっとしたコツを投稿しています。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML+CSS で取り組む初めての freeCodeCamp 認定プロジェクト [YouTube 動画講座] ]]>
                </title>
                <description>
                    <![CDATA[ freeCodeCamp カリキュラム [https://www.freecodecamp.org/japanese/learn/] では、講座を修了すると認定証が取得できます。 そのためには指定の認定プロジェクトを完成させる必要がありますが、いざ取り組もうと思ってもどこから手を付けたらいいか分からなくて挫折してしまう人も多いようです。 そこで、YouTube チャンネル freeCodeCamp Japanese [https://www.youtube.com/channel/UClLQp_GforzsmSpSec5M7Ww] にて HTML と CSS を扱う新講座を公開しました。日本語チャンネルとして初のオリジナル講座です。 この講座では、レスポンシブウェブデザイン認定証に必要な最初の認定プロジェクト「アンケートフォーム」に実際に取り組みながら、HTMLとCSSの基本、問題の解決方法、作業に役立つツールなどについて学習します。 認定プロジェクトに限らず、自分の力でウェブ開発に取り組むために役立つ知識が学べます。 この講座は私、松田が作成しました。私自身も freeCo ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/code-your-first-certification-project/</link>
                <guid isPermaLink="false">63ee20c7721fc106335f1955</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Beginners ]]>
                    </category>
                
                    <category>
                        <![CDATA[ YouTube ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Video Courses ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Thu, 16 Feb 2023 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/02/HTML-CSS_thumbnail2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><a href="https://www.freecodecamp.org/japanese/learn/">freeCodeCamp カリキュラム</a>では、講座を修了すると認定証が取得できます。</p><p>そのためには指定の認定プロジェクトを完成させる必要がありますが、いざ取り組もうと思ってもどこから手を付けたらいいか分からなくて挫折してしまう人も多いようです。</p><p>そこで、YouTube チャンネル <a href="https://www.youtube.com/channel/UClLQp_GforzsmSpSec5M7Ww">freeCodeCamp Japanese</a> にて HTML と CSS を扱う新講座を公開しました。日本語チャンネルとして初のオリジナル講座です。</p><p>この講座では、レスポンシブウェブデザイン認定証に必要な最初の認定プロジェクト「アンケートフォーム」に実際に取り組みながら、HTMLとCSSの基本、問題の解決方法、作業に役立つツールなどについて学習します。</p><p>認定プロジェクトに限らず、自分の力でウェブ開発に取り組むために役立つ知識が学べます。</p><p>この講座は私、松田が作成しました。私自身も freeCodeCamp カリキュラムを通してウェブ開発を学んだのですが、他のプログラミング教材にない freeCodeCamp の魅力だと感じたのが、この認定プロジェクトでした。</p><p>ざっくりとしたユーザーストーリーを基に自分で考えてコードを書いていく経験は、ただチュートリアルをこなしているだけでは得られない実力を付けるためにとても役立ったと感じています。</p><p>その経験を通して得たものを、この講座で解説しています。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2023/02/screenshot.png" class="kg-image" alt="screenshot" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2023/02/screenshot.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2023/02/screenshot.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2023/02/screenshot.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2023/02/screenshot.png 1920w" sizes="(min-width: 720px) 720px" width="1920" height="1080" loading="lazy"><figcaption>認定プロジェクトの課題に沿ってコードを書きながら学びます。</figcaption></figure><p>この講座では以下の流れでプロジェクトに取り組みます。</p><!--kg-card-begin: markdown--><ul>
<li>Visual Studio Code の導入
<ul>
<li>日本語言語パック、拡張機能のインストール</li>
</ul>
</li>
<li>HTML ボイラープレートを書く</li>
<li>ユーザーストーリーの確認</li>
<li>最低限のコードを書く
<ul>
<li>プレビューと自動テストの活用方法</li>
<li>MDN Web Docs の紹介</li>
</ul>
</li>
<li>HTML の改善</li>
<li>CSS を書く
<ul>
<li>開発者ツールの活用</li>
</ul>
</li>
<li>画像の追加方法</li>
<li>フォーラムでの質問方法</li>
</ul>
<!--kg-card-end: markdown--><p>本講座は YouTube で全編無料公開されています。(全 2.5 時間)</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/hft6dxPHPCU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="【HTML+CSS】初めてのfreeCodeCamp認定プロジェクト: アンケートフォームの作成" name="fitvid0"></iframe>
          </div>
        </div>
      </figure> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS を使って画像を縦横中央に配置する方法 ]]>
                </title>
                <description>
                    <![CDATA[ 多くのデベロッパーは画像の扱いに苦労します。レスポンシブ対応 [https://www.freecodecamp.org/news/css-responsive-image-tutorial/] や位置の処理、中でもページの中央に画像を配置することは特に困難です。 そこで、この投稿では、さまざまな CSS のプロパティを使用して画像を縦と横の両方で中央に配置する方法で最もよく使われるものをお見せします。 過去の投稿では、CSS の Position [https://www.freecodecamp.org/news/how-to-use-the-position-property-in-css-to-align-elements-d8f49c403a26/]  や Display [https://www.youtube.com/watch?v=hgoFi0fCv3w]  プロパティを扱っています。もしこれらのプロパティに馴染みがなければ、この記事を読む前にそちらを確認することをおすすめします。 この記事の動画版はこちらです。 画像を横方向で中央に配置する まずは、3 つの異 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/how-to-center-an-image-in-css/</link>
                <guid isPermaLink="false">63369670292eef06159fbdd8</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Wed, 26 Oct 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/10/5f9c9a4c740569d1a4ca24c2.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/how-to-center-an-image-in-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Center an Image Vertically and Horizontally with CSS</a>
      </p><p>多くのデベロッパーは画像の扱いに苦労します。<a href="https://www.freecodecamp.org/news/css-responsive-image-tutorial/">レスポンシブ対応</a>や位置の処理、中でもページの中央に画像を配置することは特に困難です。</p><p>そこで、この投稿では、さまざまな CSS のプロパティを使用して画像を縦と横の両方で中央に配置する方法で最もよく使われるものをお見せします。</p><p>過去の投稿では、CSS の <a href="https://www.freecodecamp.org/news/how-to-use-the-position-property-in-css-to-align-elements-d8f49c403a26/">Position</a> や <a href="https://www.youtube.com/watch?v=hgoFi0fCv3w">Display</a> プロパティを扱っています。もしこれらのプロパティに馴染みがなければ、この記事を読む前にそちらを確認することをおすすめします。</p><p>この記事の動画版はこちらです。</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.25%;" class="fluid-width-video-wrapper">
            <iframe src="https://www.youtube.com/embed/mwVNVxpkly0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Embedded content" loading="lazy" name="fitvid0" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-size: 22px; vertical-align: middle; position: absolute; top: 0px; left: 0px; width: 740px; height: 416.25px;"></iframe>
          </div>
        </div>
      </figure><h2 id="-"><strong>画像を横方向で中央に配置する</strong></h2><p>まずは、3 つの異なる CSS プロパティを使用して、画像を横方向で中央に配置することから始めましょう。</p><h3 id="text-align"><strong><strong>Text-Align</strong></strong></h3><p>画像を横方向で中央に配置する最初の方法は、<code>text-align</code> プロパティを使用することです。しかし、この方法は画像が <code>&lt;div&gt;</code> などのブロックレベルコンテナ内に含まれている場合のみ成功します。</p><pre><code class="language-html">&lt;style&gt;
  div {
    text-align: center;
  }
&lt;/style&gt;

&lt;div&gt;
  &lt;img src="your-image.jpg"&gt;
&lt;/div&gt;</code></pre><h3 id="margin-auto"><strong><strong>Margin: Auto</strong></strong></h3><p>画像を中央に配置する別の方法には、<code>margin: auto</code> プロパティを使用することが挙げられます (左右のマージンに対して)。</p><p>しかし、<code>margin: auto</code> プロパティを使用するだけでは、画像に適用できません。<code>margin: auto</code> を使用しなければならない場合、追加で 2 つのプロパティも使用する必要があります。</p><p>margin-auto プロパティはインライン要素に何の効果も発揮しません。<code>&lt;img&gt;</code> タグはインライン要素であるため、ブロックレベル要素に変える必要があります。</p><pre><code class="language-css">img {
  margin: auto;
  display: block;
}</code></pre><p>次に、幅を指定する必要もあります。これにより、左右のマージンが残りの空白スペースを取り、自動整列させることができます。このようにすると (100% の幅を指定しない限り) うまくいきます。</p><pre><code class="language-css">img {
  width: 60%;
  margin: auto;
  display: block;
}</code></pre><h3 id="display-flex"><strong><strong>Display: Flex</strong></strong></h3><p>画像を横方向で中央に配置する 3 つ目の方法は、<code>display: flex</code> プロパティを使用することです。<code>text-align</code> プロパティをコンテナ (外側の要素) に対して使用したように、<code>display: flex</code> もコンテナに対して使用します。</p><p>しかし、<code>display: flex</code> の使用だけでは不十分です、コンテナは <code>justify-content</code> という追加のプロパティを持たなければなりません。</p><pre><code class="language-css">div {
  display: flex;
  justify-content: center;
}

img {
  width: 60%;
}</code></pre><p><code>justify-content</code> プロパティは <code>display: flex</code> と一緒に使われて初めて機能し、画像を中央に配置できます。</p><p>最後に、画像の幅はコンテナの幅より小さくなければなりません。そうでなければ、スペースの 100％ を取り、中央配置することができなくなります。</p><p><strong>重要: </strong><code>display: flex</code> プロパティは古いバージョンのブラウザではサポートされていません。詳しくは<a href="https://caniuse.com/#search=display%20flex">こちら</a>をご覧ください。</p><h2 id="--1"><strong>画像を縦方向で中央に配置する</strong></h2><h3 id="display-flex-1"><strong><strong>Display: Flex</strong></strong></h3><p>縦方向を揃える場合にも、<code>display: flex</code> が非常に便利です。</p><p>コンテナの高さが 800px あるのに対し、画像の高さが 500px しかない場合について考えてみましょう。</p><pre><code class="language-css">div {
  display: flex;
  justify-content: center;
  height: 800px;
}

img {
  width: 60%;
  height: 500px;
}</code></pre><p>この場合、コンテナに <code>align-items: center</code> という 1 行のコードを追加するだけで上手くいきます。</p><pre><code class="language-css">div {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 800px;
}</code></pre><p><code>align-items</code> プロパティは、<code>display: flex</code> と一緒に使用すると、要素を垂直方向に配置できます。</p><h3 id="position-absolute-transform-"><strong>Position: Absolute と Transform プロパティ</strong></h3><p>縦方向を揃えるもう 1 つの方法は、<code>position</code> プロパティと <code>transform</code> プロパティを一緒に使用することです。これは少し複雑なので、順を追って説明しましょう。</p><h3 id="step-1-position-absolute-"><strong><strong>Step 1: </strong>Position プロパティを Absolute に定義する</strong></h3><p>まず、画像の配置動作を <code>static</code> から <code>absolute</code> に変更します。</p><pre><code class="language-css">div {
  height: 800px;
  position: relative;
  background: red;
}

img {
  width: 80%;
  position: absolute;
}</code></pre><p>また、相対配置されたコンテナ内に置く必要があるため、そのコンテナの div に対して <code>position: relative</code> を追加します。</p><h3 id="step-2-top-left-"><strong><strong>Step 2: </strong>Top と Left プロパティを定義する</strong></h3><p>次に、画像の top プロパティと left プロパティを定義し、それらを 50% に設定します。これにより、画像の開始点 (左上) がコンテナの中心に移動します。</p><pre><code class="language-css">img {
  width: 80%;
  position: absolute;
  top: 50%;
  left: 50%;
}</code></pre><h3 id="step-3-transform-"><strong><strong>Step 3: </strong>Transform プロパティを定義する</strong></h3><p>しかし、Step 2 では、画像がコンテナの外に部分的にはみ出てしまいます。それを内側に戻す必要があります。</p><p><code>transform</code> プロパティを定義し、その X 軸と Y 軸に -50% を追加するとうまくいきます。</p><pre><code class="language-css">img {
  width: 80%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}</code></pre><p>水平方向と垂直方向の中央揃えには他にも方法がありますが、最も一般的な方法を説明しました。この投稿が、ページの中央に画像を配置する方法を理解するのに役立つことを願っています。</p><p><strong>Web 開発について詳しく知りたい場合は、お気軽に私の <a href="https://www.youtube.com/channel/UC1EgYPCvKCXFn8HlpoJwY3Q?view_as=subscriber">YouTube チャンネル</a>を見てみてください。</strong></p><p>読んでくれてありがとうございます！</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML の select タグ – ドロップダウンメニュー (コンボリスト) の作成方法 ]]>
                </title>
                <description>
                    <![CDATA[ ユーザーが値を選択できるドロップダウンメニューを作成するには、HTML の select タグを使用します。これは、サーバーに送るデータを収集するのに役立つ機能です。 通常、select タグは form 要素内に置かれ、別のタグ <option> 内に選択肢の項目を置きます。select タグ単独で配置することもできますが、その場合も、特別な属性の一つである form を使用して form 要素と関連付けます。 このチュートリアルでは、コーディングプロジェクトでのデータ収集に使用できるように、select タグでドロップダウンメニューを作成する方法について紹介します。スタイリングが難しいことで有名な select タグのスタイリング方法についても触れます。 Select タグの属性 select タグを使ってドロップダウンメニューを作成する方法を説明する前に、select タグがとる属性について説明しておく必要があります。 以下がその属性です。  * name: サーバーに送信された後にデータを参照するのに使用されるため、form control には全て名前を付ける必要が ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/html-select-tag-how-to-make-a-dropdown-menu-or-combo-list/</link>
                <guid isPermaLink="false">63243fa7bdc7ab0726fce861</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Tue, 27 Sep 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/09/HTML-select-tag.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/html-select-tag-how-to-make-a-dropdown-menu-or-combo-list/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML Select Tag – How to Make a Dropdown Menu or Combo List</a>
      </p><p>ユーザーが値を選択できるドロップダウンメニューを作成するには、HTML の select タグを使用します。これは、サーバーに送るデータを収集するのに役立つ機能です。</p><p>通常、select タグは form 要素内に置かれ、別のタグ <code>&lt;option&gt;</code> 内に選択肢の項目を置きます。select タグ単独で配置することもできますが、その場合も、特別な属性の一つである <code>form</code> を使用して form 要素と関連付けます。</p><p>このチュートリアルでは、コーディングプロジェクトでのデータ収集に使用できるように、select タグでドロップダウンメニューを作成する方法について紹介します。スタイリングが難しいことで有名な select タグのスタイリング方法についても触れます。</p><h2 id="select-"><strong>Select タグの属性</strong></h2><p>select タグを使ってドロップダウンメニューを作成する方法を説明する前に、select タグがとる属性について説明しておく必要があります。</p><p>以下がその属性です。</p><ul><li>name: サーバーに送信された後にデータを参照するのに使用されるため、form control には全て名前を付ける必要があります。</li><li>multiple: この属性により、ユーザーはドロップダウンメニューから複数のオプションを選択できます。</li><li>required: 通常、検証に使用されます。これにより、ユーザーがドロップダウンから少なくとも一つのオプションを選択しない限り、フォームは送信されません。</li><li>disabled: この属性により、ユーザーはオプションを操作できなくなります。</li><li>size: 数値で表される size 属性は、一度に表示されるオプションの数を指定するために使用されます。</li><li>autofocus: この属性は、select を含むすべてのフォーム入力で使用され、ページの読み込み時に入力がフォーカスされるように指定します。</li></ul><h2 id="select--1"><strong>Select タグを使ってドロップダウンメニューを作成する方法</strong></h2><p>select タグを使ってドロップダウンメニューを作成するには、まず form 要素が必要です。なぜなら、データをサーバーに送信するためには、form 要素内に送信ボタン (submit) も必要になるからです。</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p>この例では、ドロップダウンとボタンを中央揃えにし、body の背景をライトグレーにするための簡単な CSS を追加します。</p><pre><code class="language-css">body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh;
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }</code></pre><p>より洗練され、アクセスしやすいものにするために、セレクトボックスを label 要素と関連付け、label テキストをクリックしたときにフォーカスするようにすることもできます。次のコードでそれを実現できます。</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p>送信ボタンをクリックしたときに 404 エラーが表示されないように、action 属性の値として番号記号 (#) を入力します。</p><p>そして、CSS を少し変更する必要があります。</p><pre><code class="language-css"> body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh; 
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

label {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

select {
     margin-bottom: 10px;
     margin-top: 10px;
   }</code></pre><p>最終的に次のような結果が得られます。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-one-2.gif" class="kg-image" alt="select-one-2" width="600" height="321" loading="lazy"></figure><p>これで終わりではありません。ページを開いてすぐ送信ボタンをクリックした場合、ドロップダウン項目のうちの一つがデフォルトで表示されており、選択されてしまいます。</p><p>しかし、ユーザーエクスペリエンスの観点から、これは好ましくありません。「言語を選択 (select a language)」をドロップダウンの最初の項目に設定することで、これを避けることができます。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="select"&gt;Select a language&lt;/option&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p>また、ユーザーが項目を選択するためにセレクトボックスをクリックするときも、ドロップダウンが送信ボタンに重なって表示されます。これもユーザーエクスペリエンスを低下させる原因になり得ます。</p><p>これを解決するには、ドロップダウン内にデフォルトで決まった数の項目を表示し、その他の項目をスクロール表示するようにする <code>size</code> 属性が使用できます。</p><p>これにより、一部の項目が自動的にユーザーに表示されるため、ダミーの最初の項目を取り除くこともできます。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang" size="4"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-two-2.gif" class="kg-image" alt="select-two-2" width="600" height="321" loading="lazy"></figure><p><code>multiple</code> 属性を使用すると、ユーザーがドロップダウンから複数の項目を選択できるようになります。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang" multiple&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><p><code>multiple</code> 属性により、デフォルトで四つの項目が表示されます。複数の項目を選択するには、Shift キーまたは Ctrl キーを押しながらマウスで選択する必要があります。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-three-2.gif" class="kg-image" alt="select-three-2" width="600" height="321" loading="lazy"></figure><p>select タグと <code>&lt;option&gt;</code> タグでできることはこれだけではありません。<code>&lt;select&gt;</code> タグ内に <code>&lt;optgroup&gt;</code> 要素を使用して、複数階層のセレクトボックスを作成することもできます。</p><p>次のように、先ほど作成したドロップダウンを複数階層のセレクトボックスに変換できます。</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;optgroup label="first-choice"&gt;
          &lt;option value="select"&gt;Select a language&lt;/option&gt;
          &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
          &lt;option value="php"&gt;PHP&lt;/option&gt;
          &lt;option value="java"&gt;Java&lt;/option&gt;
          &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;/optgroup&gt;
        &lt;optgroup label="second-choice"&gt;
          &lt;option value="python"&gt;Python&lt;/option&gt;
          &lt;option value="c#"&gt;C#&lt;/option&gt;
          &lt;option value="C++"&gt;C++&lt;/option&gt;
          &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
        &lt;/optgroup&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/multi-select-1.png" class="kg-image" alt="multi-select-1" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/09/multi-select-1.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/09/multi-select-1.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2022/09/multi-select-1.png 1280w" sizes="(min-width: 720px) 720px" width="1280" height="800" loading="lazy"></figure><h2 id="select--2"><strong>Select 要素をスタイリングする方法</strong></h2><p>select 要素のスタイル設定は分かり辛く、ブラウザー内での表示方法も一貫しないことが多いです。しかし、次のような設定を試してみることもできます。</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="select"&gt;Select a Language&lt;/option&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;</code></pre><pre><code class="language-css"> select {
        margin-bottom: 10px;
        margin-top: 10px;
        font-family: cursive, sans-serif;
        outline: 0;
        background: #2ecc71;
        color: #fff;
        border: 1px solid crimson;
        padding: 4px;
        border-radius: 9px;
      }</code></pre><p>上記の CSS コードスニペットでは、セレクトボックス内のテキストに次の外観を付与しました。</p><ul><li>フォントファミリー「cursive」と色「白」</li><li>アウトライン「0」: フォーカスされたときの不恰好なアウトラインを削除</li><li>背景「緑色」</li><li>境界線「1px、深紅色」</li><li>境界半径「4px」: 全辺にわずかに丸みを帯びた境界線を付与</li><li>パディング「4px」: 少し間隔を空ける</li></ul><p>これによりセレクトボックスの見栄えが良くなりました。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/select-styled-1.gif" class="kg-image" alt="select-styled-1" width="600" height="358" loading="lazy"></figure><h2 id="-"><strong>結論</strong></h2><p>select タグは、HTML でドロップダウンやコンボリストを作成する場合に非常に便利です。ラジオボタンとチェックボックスを一つのパッケージにまとめたようなものです。</p><p>ラジオボタンではリストから一つの項目しか選択できませんが、チェックボックスでは複数の項目を選択できることを覚えているでしょうか。select は、単一のアイテムのみまたは複数のアイテムを受け付けるようにも設定できるため、より柔軟です。</p><p>select タグの問題の一つは、スタイルが非常に難しいことです。合理的な解決策は、優れたユーティリティ クラスを提供する CSS ライブラリを使用して、select 要素やフォームのスタイルを設定することです。</p><p>このチュートリアルで select タグに慣れ、プロジェクトで使用できるようになったのであれば嬉しいです。</p><p>読んでいただきありがとうございます。引き続きコーディング頑張ってください。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML と Body: フルページ表示のために適切な幅と高さの CSS 設定 ]]>
                </title>
                <description>
                    <![CDATA[ CSS は難しいですが、自由度も高いです。そして、この高い自由度のおかげで、たとえ行き当たりばったりでもスタイルを適用することができます。 ページは一見問題なく読み込まれます。「クラッシュ」もしません。 ではページ全体の幅と高さを設定したい場合、HTML 要素にどのような設定をすればいいか分かりますか。body 要素についてはどうでしょう。 上手くいくことを願いながらただ当てずっぽうにスタイルを適用していませんか。 もしそうであっても、あなたは一人じゃありません。 これらの質問に対する答えは直感的ではないのですから。 私自身、どのプロパティをどの要素に適用すべきかを正確に把握せずに、両方の要素にスタイルを適用していたという罪深い過去があります。🤦‍♂️ 次の例のように、CSS プロパティが HTML と body の両方の要素に適用されていることは珍しくありません。 html, body {      min-height: 100%; } それって問題なの？ はい、かなり問題です。 上のスタイル定義は以下のような問題を引き起こします。 両方の要素の min-h ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/html-page-width-height/</link>
                <guid isPermaLink="false">632052d987a3a3073e97ed3d</guid>
                
                    <category>
                        <![CDATA[ PROGRAMMING ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WEB DEVELOPMENT ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hitomi Kawahara ]]>
                </dc:creator>
                <pubDate>Sun, 18 Sep 2022 23:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/09/william-warby-WahfNoqbYnM-unsplash--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/html-page-width-height/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML vs Body: How to Set Width and Height for Full Page Size</a>
      </p><p>CSS は難しいですが、自由度も高いです。そして、この高い自由度のおかげで、たとえ行き当たりばったりでもスタイルを適用することができます。</p><p>ページは一見問題なく読み込まれます。「クラッシュ」もしません。</p><p>ではページ全体の幅と高さを設定したい場合、HTML 要素にどのような設定をすればいいか分かりますか。body 要素についてはどうでしょう。</p><p>上手くいくことを願いながらただ当てずっぽうにスタイルを適用していませんか。</p><p>もしそうであっても、あなたは一人じゃありません。</p><p>これらの質問に対する答えは直感的ではないのですから。</p><p>私自身、どのプロパティをどの要素に適用すべきかを正確に把握せずに、両方の要素にスタイルを適用していたという罪深い過去があります。🤦‍♂️</p><p>次の例のように、CSS プロパティが HTML と body の両方の要素に適用されていることは珍しくありません。</p><pre><code>html, body {
     min-height: 100%;
}</code></pre><h2 id="-"><strong>それって問題なの？</strong></h2><p>はい、かなり問題です。</p><p>上のスタイル定義は以下のような問題を引き起こします。</p><p>両方の要素の min-height (最小の高さ) を 100% に設定しても、body 要素はページ全体を埋めるようになりません。これは思っていた動作と異なるかと思います。結果として表示されたスタイルの値を開発ツールで確認してみれば、body 要素の高さがゼロになっていることが分かるでしょう。</p><p>一方で、HTML 要素はブラウザーの表示領域と同じ高さになっています。</p><p>次の Chrome Dev Tools のスクリーンショットを見てください。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/09/empty_body-3.png" class="kg-image" alt="empty_body-3" width="596" height="280" loading="lazy"><figcaption>body 要素には、上部のバーで示された初期値 8px のマージンがあります。 高さの値はゼロです。</figcaption></figure><h2 id="--1"><strong>なぜこんなことが起こるの？</strong></h2><p>パーセンテージをサイズの値として使用する場合、その要素はパーセンテージの基準として親要素を参照します。</p><p>HTML 要素は、目に見える表示領域の高さを高さ値として持つビューポートを参照します。しかし、上の例では HTML 要素の min-height を設定しているだけで、height プロパティの値は設定していません。</p><p>したがって、body 要素には、100% が何に等しいかの基準として参照する親の height 値がないことになります。</p><h2 id="--2"><strong>そして、問題は目に見えないかも</strong></h2><p>もし、ページを埋め尽くすほどのコンテンツがあった場合、この問題には気付かないかもしれません。</p><p>そして、より気付きにくくなる原因として、両方あるいは片方の要素に背景色を設定した場合、ビューポートはその色で埋め尽くされます。これによって、body 要素がビューポートと同じ高さを持つと錯覚してしまうのです。</p><p>それは間違いで、高さはゼロのままです。</p><p>先ほどの画像は次の CSS で表示されたものです。</p><pre><code>html, body {
    min-height: 100%;
}
body { background-color: dodgerblue; }</code></pre><h3 id="--3"><strong>逆継承？</strong></h3><p>奇妙な現象ではありますが、もし HTML 要素の背景色を個別に設定しない場合、HTML 要素には body 要素の背景色が適用されます。</p><h2 id="--4">では、レスポンシブなフルページの理想的な高さ設定は？</h2><p>何年もの間、答えは次の通りでした。</p><pre><code>html {
    height: 100%;
}
body {
    min-height: 100%;
}</code></pre><p>これにより HTML 要素は親となるビューポートを参照し、ビューポートの高さの 100% に等しい height の値を持つことができます。</p><p>HTML 要素に height 値が設定されたことで、body 要素に割り当てられた min-height は、body 要素の最小の高さを HTML 要素の高さと同じにします。</p><p>この設定はまた、コンテンツがページの見えている部分より大きい場合に、あわせて body の高さを大きくすることもできます。</p><p>唯一の欠点は、HTML 要素は見えているビューポートの高さを超えて大きくならないことです。ただし、body 要素が HTML 要素を超えて大きくなることは問題ないと考えられてきました。</p><h2 id="--5">最新の解決策はもっと簡潔です</h2><pre><code>body { min-height: 100vh; }</code></pre><p>この例では、単位 <code>vh</code> (viewport height) を使用することで、body がビューポートの全高に基づいて高さの最小値を設定できるようにしています。</p><p>先ほど述べた背景色と同じように、HTML 要素に height 値を設定しない場合、body 要素に与えられた height 値と等しい値が採用されます。</p><p>したがって、この解決策であれば以前の解決策の欠点であった HTML 要素のオーバーフローが回避され、両方の要素がコンテンツと共に大きくなります！</p><p>単位 <code>vh</code> の使用は、過去には一部のモバイル端末で異常をきたすこともありましたが、<a href="https://developers.google.com/web/updates/2016/12/url-bar-resizing">現在では Chrome と Safari ではビューポート単位は正常に動作するようです</a>。</p><h2 id="--6">ページの高さによっては水平スクロールバーが表示されることがあります</h2><p>えっ、どういうこと？</p><p>「ページ幅」じゃなくて？</p><p>いいえ、違います。</p><p>別の奇妙な現象として、ページの高さがブラウザーの水平スクロールバーをアクティブにする場合があります。</p><p>ページのコンテンツがビューポートの高さを超えると、右側の垂直スクロールバーがアクティブになります。これによって、同時に水平スクロールバーが表示される可能性があります。</p><h2 id="--7"><strong>どうやって修正するの？</strong></h2><p>ページ幅設定が原因であることを知っておくと安心かもしれません。</p><p>この問題は HTML 要素や body 要素だけでなく、要素を 100vw (viewport width) 単位に設定することに起因します。</p><p>ビューポート単位は垂直スクロールバーが占める約 10px の幅を考慮していません。</p><p>したがって、垂直スクロールバーがアクティブになると水平スクロールバーも表示されることがあるのです。</p><h2 id="--8"><strong>ページをフル幅に設定する方法</strong></h2><p>設定しないというのも一つの方法です。</p><p>HTML 要素と body 要素に幅を設定しない場合のデフォルトは画面全体のサイズになります。width の値を auto 以外に設定するときには、初めに CSS をリセットするようにしましょう。</p><p>デフォルトで、body 要素の全サイドのマージンが 8px に設定されていることを覚えていますか。</p><p>CSS リセットにより、これが削除されます。マージンを削除する前に幅を 100% に設定すると body 要素のオーバーフローを引き起こします。私がよく使う CSS リセットは次のコードです。</p><pre><code>* { 
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}</code></pre><h2 id="--9"><strong>好みの幅に設定する方法</strong></h2><p>必ずしも幅を設定する必要はありませんが、通常、私は設定するようにしています。</p><p>単なる癖かもしれません。</p><p>body 要素の幅を 100% に設定すると、ページ全体の幅になります。これは基本的に、幅の値を設定せずにデフォルトを許可することと同じです。</p><p>body 要素を小さなコンテナとして使用し、HTML 要素でページを埋めたい場合は、body に幅の最大値を設定することもできます。</p><p>例えば次のように設定できます。</p><pre><code>html { background-color: #000; } 
body {
    min-height: 100vh;
    max-width: 400px;
    background-color: papayawhip; 
    margin: 0 auto;
}</code></pre><h2 id="--10"><strong>結論</strong></h2><p>HTML 要素に height 値がない場合、body 要素の height や min-height を 100% に設定しても (コンテンツを追加する前は) 高さはゼロになります。</p><p>一方、HTML 要素に width 値がない場合は、body 要素の width を 100% に設定すると幅はフルページの幅になります。</p><p>これは直感に反するため、混乱するかもしれません。</p><p>レスポンシブなフルページの高さを実現するには、body 要素の min-height を 100vh に設定しましょう。</p><p>ページ幅を設定する場合、水平スクロールバーが意図せず表示されることを避けるため、100vw よりも 100% を選択しましょう。</p><p>私の YouTube チャンネルのチュートリアルでは、全画面サイズかつコンテンツと共に拡大する HTML ページ作成のために、CSS の高さと幅をどのように設定すればよいかを実際に再現しながら紹介しています。</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/dpuKVjX6BJ8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="HTML Page Width and Height Settings | CSS Full Screen Size" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>CSS の幅と高さを設定する他の方法を知っていますか？</p><p>‌ぜひ教えてください！</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS と HTML で SVG 画像を使用する方法とは – 初心者のためのチュートリアル ]]>
                </title>
                <description>
                    <![CDATA[ SVG は Scalable Vector Graphics の略です。SVG とは、Extensible Markup Language (XML) で書かれた、ベクター画像用の固有の画像形式です。 このチュートリアルでは、SVG 画像を使用する理由と、CSS と HTML で SVG 画像を使用する方法についてお伝えします。 なぜ SVG 画像を使用すべきなのでしょうか？ SVG 画像を使用する理由はたくさんありますが、以下にそのいくつかを挙げてみます:  * SVG 画像は拡大したりサイズを変更しても、画質が低下しません。  * SVG は IDE または テキストエディターで作成し、編集できます。  * SVG は使いやすく、アニメ化しやすいです。  * SVG はファイルサイズが小さく、拡張性が高いです。  * また、SVG は検索したり、インデックスをつけたり、スクリプトで操作したり、圧縮できます。 ではこれから、SVG 画像を扱う方法を実際に見ていきましょう。 このチュートリアルで使用する SVG ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/use-svg-images-in-css-html/</link>
                <guid isPermaLink="false">61e9344c777cd904f8c70421</guid>
                
                    <category>
                        <![CDATA[ SVG ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Manabu Matsumoto ]]>
                </dc:creator>
                <pubDate>Sun, 27 Feb 2022 23:45:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screen-Shot-2020-11-15-at-3.59.07-PM.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/use-svg-images-in-css-html/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Use SVG Images in CSS and HTML – A Tutorial for Beginners</a>
      </p><p>SVG は Scalable Vector Graphics の略です。SVG とは、Extensible Markup Language (XML) で書かれた、ベクター画像用の固有の画像形式です。</p><p>このチュートリアルでは、SVG 画像を使用する理由と、CSS と HTML で SVG 画像を使用する方法についてお伝えします。</p><h1 id="-svg-">なぜ SVG 画像を使用すべきなのでしょうか？</h1><p>SVG 画像を使用する理由はたくさんありますが、以下にそのいくつかを挙げてみます:</p><ul><li>SVG 画像は拡大したりサイズを変更しても、画質が低下しません。</li><li>SVG は IDE または テキストエディターで作成し、編集できます。</li><li>SVG は使いやすく、アニメ化しやすいです。</li><li>SVG はファイルサイズが小さく、拡張性が高いです。</li><li>また、SVG は検索したり、インデックスをつけたり、スクリプトで操作したり、圧縮できます。</li></ul><p>ではこれから、SVG 画像を扱う方法を実際に見ていきましょう。</p><h1 id="-svg--1">このチュートリアルで使用する SVG 画像をダウンロードする方法</h1><p><br>このチュートリアルの中で使用した SVG 画像を、自分でも使ってみたい場合は、以下の手順と図に従ってダウンロードしてください。</p><ul><li><a href="https://undraw.co">unDraw</a> を訪れる。</li><li>配色を黄色に変更する。</li><li>検索ボックスで、<strong>happy</strong> という言葉を検索する。</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/ncSY7Rn.png" class="kg-image" alt="ncSY7Rn" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/ncSY7Rn.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/ncSY7Rn.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/ncSY7Rn.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/ncSY7Rn.png 1836w" sizes="(min-width: 720px) 720px" width="1836" height="888" loading="lazy"></figure><ul><li><strong>Happy news</strong> という名前の画像をクリックする。</li><li>ポップアップウィンドウが現れるので、<strong>Download SVG for your projects</strong> ボタンをクリックする。</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/qGrT73n.png" class="kg-image" alt="qGrT73n" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/qGrT73n.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/qGrT73n.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/qGrT73n.png 1336w" sizes="(min-width: 720px) 720px" width="1336" height="581" loading="lazy"></figure><p>上記の手順が正しく実行されていれば、コンピュータに SVG 画像をダウンロードできているはずです。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/3uCGy6B.png" class="kg-image" alt="3uCGy6B" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/3uCGy6B.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/3uCGy6B.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/3uCGy6B.png 1003w" sizes="(min-width: 720px) 720px" width="1003" height="183" loading="lazy"></figure><p>では、SVG 画像をお気に入りの IDE またはテキストエディターで開いてください。開いた画像の名前を、happy.svg もしくは好きな名前に変更してください。</p><h1 id="css-html-svg-">CSS と HTML で SVG 画像を使用する方法</h1><p>CSS と HTML で SVG 画像を使用するには、いろいろな方法があります。このチュートリアルでは、異なる 6 つの方法を説明します。</p><h2 id="1-img-svg-">1. <code>&lt;img&gt;</code> で SVG を使用する方法</h2><p>これが SVG 画像をウェブページに追加する、最も簡単な方法です。次のようにして、<code>&lt;img&gt;</code> 要素をHTML ドキュメントに追加し、src 属性の中で SVG 画像を参照します:</p><pre><code class="language-html">&lt;img src ="happy.svg" alt="My Happy SVG"/&gt;
</code></pre><p>unDraw から SVG 画像をダウンロードし、ファイル名を happy.svg に変更してあれば、上のコードスニペットを HTML ドキュメントの中に追加できます。</p><p>もしすべてが正しく行われていれば、ウェブサイトはちょうど以下のデモのように見えるはずです。👀</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-mppxs?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><p>サイズを指定せずに <code>&lt;img&gt;</code> タグを使用して SVG 画像を追加すると、その画像は元の SVG ファイルのサイズであると見なされます。</p><p>たとえば、上のデモにおいて、SVG 画像はサイズを変更していないので、その画像の元のサイズ (幅が <code>915.11162 ピクセル</code> で、高さが <code>600.53015 ピクセル</code>) と見なされます。</p><p><strong>注</strong>: 表示する画像のサイズを変更するには、 下のデモの中で確認できるように、CSS で <code>width</code> と <code>height</code> を指定する必要があります。または、元の画像の <code>width</code> と <code>height</code> を直接更新できます。</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-1-ey5me?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><p><code>&lt;img&gt;</code> タグによって追加された SVG 画像のサイズを変更できるとはいえ、SVG 画像に大幅なスタイルの変更を加えようとする場合に、まだいくらかの制限があります。</p><h2 id="2-css-background-image-svg-">2. CSS の <code>background-image</code> で SVG を使用する方法</h2><p>この方法は、<code>&lt;img&gt;</code> タグを用いて SVG を HTML ドキュメントに追加することに似ています。しかし今回は、以下に示されたコードスニペットを用いて、HTML の代わりに CSS でそれを行います。</p><pre><code class="language-css">body {
  background-image: url(happy.svg);
}
</code></pre><p>SVG を CSS の 背景画像 (background image) で使用する場合、<code>&lt;img&gt;</code> タグを使用する時と似たような制限があります。ただ、もう少しカスタマイズできます。</p><p>以下のデモを確認して、CSS を用いて自由に変更を加えてみてください。</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-2-ftn6n?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><h2 id="3-svg-">3. インラインで SVG 画像を使用する方法</h2><p><code>&lt;svg&gt; &lt;/svg&gt;</code> タグを使用すれば、HTML ドキュメントの中へ SVG 画像をインラインで直接記述できます。</p><p>そうするには、VS code またはお好みの IDE の中で SVG 画像を開き、画像のコードをコピーして、HTML ドキュメントの <code>&lt;body&gt;</code> 要素の内側に貼り付けます。</p><pre><code>&lt;body&gt;
 // Paste the SVG code here.
&lt;/body&gt;
</code></pre><p>もしすべてが正しく行われたとしたら、ウェブサイトはちょうど以下のデモのように見えるはずです。</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-3-zunkd?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><p>HTML ドキュメントの中で SVG をインラインで使用する場合は、HTTP リクエストが 1 回で完結するので、ロード時間が減ります。</p><p><code>&lt;img&gt;</code> または <code>background-image</code> 方式のどちらか一方を用いることとは対照的に、この方法を用いることでより多くのカスタマイズができます。</p><h2 id="4-object-svg-">4. <code>&lt;object&gt;</code> で SVG を使用する方法</h2><p>以下の構文のコードを使用すれば、HTML の <code>&lt;object&gt;</code> 要素でもウェブページに SVG 画像を追加できます:</p><pre><code>&lt;object data="happy.svg" width="300" height="300"&gt; &lt;/object&gt;
</code></pre><p>object 要素によって用いられるリソースの URL を、<code>data</code> 属性を用いて指定します。この場合では SVG 画像を指定しています。</p><p><code>width</code> と <code>height</code> 属性を使用して、SVG 画像のサイズを指定します。</p><p>繰り返しになってしまいますが、以下のデモをご覧ください。 😃</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-4-3ge0n?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><p><code>&lt;object&gt;</code> の使用は、SVG をサポートしているすべてのブラウザーでサポートされています。</p><h2 id="5-iframe-svg-">5. <code>&lt;iframe&gt;</code> でSVG を使用する方法</h2><p>この方法はお勧めしませんが、以下のデモで示すように、<code>&lt;iframe&gt;</code> を使用することでも SVG 画像を追加できます。</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-5-co3hg?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><p>ただし、<code>&lt;iframe&gt;</code> を管理するのは難しく、サイトの検索エンジン最適化 (SEO) に、悪影響を与える可能性があることを忘れないようにしてください。</p><p>また、<code>&lt;iframe&gt;</code> を使用して追加された SVG 画像は拡張性を失い、<em>Scalable Vector Graphics</em> という名前の中の、<em>Scalable</em> (拡張性がある) という性質をくつがえしてしまします。</p><h2 id="6-embed-svg-">6. <code>&lt;embed&gt;</code> で SVG を使用する方法</h2><p>HTML の <code>&lt;embed&gt;</code> 要素は、SVG 画像を HTML と CSS で使用する、これまでとは別の方法であり、次の構文を使用します: <code>&lt;embed src="happy.svg" /&gt;</code></p><p>しかし、この方法にも制限があることを忘れないでください。MDN によると、ほとんどのモダンなブラウザーは、プラグインに対するサポートを非推奨にして削除しています。これは、普通のユーザーのブラウザー上で、ご自身のサイトを操作できるようにしたい場合は、<code>&lt;embed&gt;</code> に依存することは一般的に賢明ではないことを意味しています。</p><p>以下のデモで、HTML の <code>&lt;embed&gt;</code> 要素を使用して SVG 画像を追加しています。</p><figure class="kg-card kg-embed-card"><iframe width="1000" height="500" src="https://codesandbox.io/embed/svg-demo-6-iwy0s?fontsize=14&amp;hidenavigation=1&amp;theme=dark" style="width:1000px; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" title="埋め込みコンテンツ" loading="lazy"></iframe></figure><h2 id="-">結論</h2><p>CSS と HTML で SVG 画像を使用する、さまざまな方法について学ぶことができたと思います。このことが、SVG 画像をウェブサイトへ追加する際に、適切な方法を選ぶことができるように、うまく案内してくれます。</p><p>ご質問がございましたら、<a href="https://twitter.com/Didicodes">Twitter のメッセージ</a>でご連絡くだされば、どんな小さなご質問も喜んで解答いたします。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS で要素を中央に配置する方法 (div、テキスト他) ]]>
                </title>
                <description>
                    <![CDATA[ 何かを中央に表示させることは、CSS で最も難しく感じることの一つです。 手順自体は難しいものではありません。それよりも、方法が複数あるということで難しく感じられます。 使える方法は、中央に配置しようとしている HTML 要素の種類や、水平方向の中央か、垂直方向の中央かによって変わってきます。 このチュートリアルでは、さまざまな要素を水平方向、垂直方向、そして水平・垂直両方の中央に配置する方法を説明します。 水平方向の中央揃えの方法 水平方向の中央揃えは、通常、垂直方向の中央揃えより簡単です。以下で、水平方向の中央に配置されることが多い要素と、そのためのさまざまな方法を説明します。 CSS の text-align: center で、テキストを水平方向の中央に配置する テキスト、またはリンクを水平方向の中央に配置するには、text-align プロパティの値に center を設定します。 <div class="container">   <p>Hello, (centered) World!</p> </div> .container {   font-famil ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/how-to-center-anything-with-css-align-a-div-text-and-more/</link>
                <guid isPermaLink="false">61d99fc0c6ab6005072515a7</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Thu, 27 Jan 2022 17:50:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/01/5f9c9b00740569d1a4ca291b.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/how-to-center-anything-with-css-align-a-div-text-and-more/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Center Anything with CSS - Align a Div, Text, and More</a>
      </p><p>何かを中央に表示させることは、CSS で最も難しく感じることの一つです。</p><p>手順自体は難しいものではありません。それよりも、方法が複数あるということで難しく感じられます。</p><p>使える方法は、中央に配置しようとしている HTML 要素の種類や、水平方向の中央か、垂直方向の中央かによって変わってきます。</p><p>このチュートリアルでは、さまざまな要素を水平方向、垂直方向、そして水平・垂直両方の中央に配置する方法を説明します。</p><h2 id="-">水平方向の中央揃えの方法</h2><p>水平方向の中央揃えは、通常、垂直方向の中央揃えより簡単です。以下で、水平方向の中央に配置されることが多い要素と、そのためのさまざまな方法を説明します。</p><h3 id="css-text-align-center-">CSS の text-align: center で、テキストを水平方向の中央に配置する</h3><p>テキスト、またはリンクを水平方向の中央に配置するには、<code>text-align</code> プロパティの値に <code>center</code> を設定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;p&gt;Hello, (centered) World!&lt;/p&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
}

p {
  /* 水平方向の中央揃え */
  text-align: center;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/image-15.png" class="kg-image" alt="image-15" width="414" height="254" loading="lazy"></figure><h3 id="css-margin-auto-div-">CSS の margin を auto に設定して、div を水平方向の中央に配置する</h3><p><code>div</code> のようなブロックレベルの要素を水平方向の中央に配置するには、<code>margin</code> の一括指定プロパティに <code>0 auto</code> の値を指定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
  /* 水平方向の中央揃え */
  margin: 0 auto;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-horizontally.jpg" class="kg-image" alt="box-centered-horizontally" width="375" height="225" loading="lazy"></figure><h3 id="-div-">フレックスボックスを使用して、div を水平方向の中央に配置する</h3><p>フレックスボックスは、中央揃えの方法の中で最も新しく、フレックスボックスのおかげでレスポンシブレイアウトのデザインは以前よりずっとやりやすくなりました。ただし、Internet Explorer のようなレガシーなブラウザでは完全にはサポートされていません。</p><p>フレックスボックスを使用して要素を水平方向の中央に配置するには、親要素に <code>display: flex</code> と <code>justify-content: center</code> を設定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 子要素を水平方向の中央に配置する */
  display: flex;
  justify-content: center;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-horizontally-1.jpg" class="kg-image" alt="box-centered-horizontally-1" width="375" height="225" loading="lazy"></figure><h2 id="--1">垂直方向の中央揃えの方法</h2><p>フレックスボックスのような現代的な方法を使わずに垂直方向の中央揃えを行おうとすると、とても面倒な場合があります。以下では、垂直方向の中央に配置する方法の内まず比較的古い方法をいくつか説明し、次にフレックスボックスを使う方法を説明します。</p><h3 id="css-margin-div-">CSS の絶対位置指定と負の数の margin で、div を垂直方向の中央に配置する</h3><p>垂直方向の中央揃えでは、長い間これがベストな方法でした。この方法を使うには、中央に配置したい要素の高さが分かっていなければなりません。</p><p>まず、親要素の <code>position</code> プロパティを <code>relative</code> に設定します。</p><p>次に、子要素の <code>position</code> プロパティを <code>absolute</code> に、<code>top</code> を <code>50%</code> に設定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 準備 */
  position: relative;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
  /* 垂直方向の中央揃え */
  position: absolute;
  top: 50%;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-1.jpg" class="kg-image" alt="box-centered-vertically-1" width="375" height="226" loading="lazy"></figure><p>これだけでは、子要素の上端が中央にくるだけです。</p><p>子要素を完全に中央に配置するには、<code>margin-top</code> プロパティを <code>-(子要素の高さの半分)</code> の値に設定します。</p><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 準備 */
  position: relative;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
  /* 垂直方向の中央揃え */
  position: absolute;
  top: 50%;
  margin-top: -25px; /* この要素の高さの半分 */
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-final.jpg" class="kg-image" alt="box-centered-vertically-final" width="375" height="227" loading="lazy"></figure><h3 id="transform-translate-div-">transform と translate を使用して、div を垂直方向の中央に配置する</h3><p>中央に配置したい要素の高さが分からない場合 (あるいは分かっている場合でも) この方法が使えます。</p><p>この方法は上で説明した負の数の margin を使用する方法とよく似ています。まず親要素の <code>position</code> プロパティを <code>relative</code> に設定します。</p><p>子要素は、<code>position</code> プロパティを <code>absolute</code>、<code>top</code> を <code>50%</code> に設定します。ここで、子要素を完全に中央に配置するために、負の数の margin ではなく <code>transform: translate(0, -50%)</code> を使用します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 準備 */
  position: relative;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
  /* 垂直方向の中央揃え */
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-final-1.jpg" class="kg-image" alt="box-centered-vertically-final-1" width="375" height="227" loading="lazy"></figure><p><code>translate(0, -50%)</code> は、<code>translateX(0)</code> と <code>translateY(-50%)</code> を一括指定する記法です。<code>transform: translateY(-50%)</code> という書き方でも同じ結果になります。</p><h3 id="-div--1">フレックスボックスを使用して、div を垂直方向の中央に配置する</h3><p>水平方向の中央揃えと同じように、フレックスボックスのおかげで垂直方向の中央揃えはとてもやりやすくなりました。</p><p>要素を垂直方向の中央に配置するには、親要素に <code>display: flex</code> と <code>align-items: center</code> を設定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 垂直方向の中央揃え */
  display: flex;
  align-items: center;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-final-2-1.jpg" class="kg-image" alt="box-centered-vertically-final-2-1" width="375" height="227" loading="lazy"></figure><h2 id="--2">水平・垂直両方の中央揃えの方法</h2><h3 id="css-margin-div--1">CSS の絶対位置指定と負の数の margin で、div を水平・垂直両方の中央に配置する</h3><p>この方法は、上で説明した要素を垂直方向の中央に配置する方法とよく似ています。その場合と同様に、中央に配置したい要素の幅と高さが分かっていなければなりません。</p><p>まず、親要素の <code>position</code> プロパティを <code>relative</code> に設定します。</p><p>次に、子要素の <code>position</code> プロパティを <code>absolute</code>、<code>top</code> を <code>50%</code>、<code>left</code> を <code>50%</code> に設定します。ここまでではまだ、子要素の左上が中央にくるだけです。</p><p>子要素を完全に中央に配置するには、上側の margin を、負の数で子要素の高さの半分、左側の margin を、負の数で子要素の幅の半分に設定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 準備 */
  position: relative;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
  /* 水平・垂直方向の中央揃え */
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -25px 0 0 -25px; /* 完全に中央に配置するため、上・左の margin を負の数に設定 */
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-and-horizontally.jpg" class="kg-image" alt="box-centered-vertically-and-horizontally" width="376" height="226" loading="lazy"></figure><h3 id="transform-translate-div--1">transform と translate を使用して、div を水平・垂直両方の中央に配置する</h3><p>要素の寸法が分からず、フレックスボックスも使えない場合には、この方法で要素を水平・垂直両方の中央に配置します。</p><p>まず、親要素の <code>position</code> プロパティを <code>relative</code> に設定します。</p><p>次に、子要素の <code>position</code> プロパティを <code>absolute</code>、<code>top</code> を <code>50%</code>、<code>left</code> を <code>50%</code> に設定します。</p><p>最後に、<code>transform: translate(-50%, -50%)</code> を使って子要素を完全に中央に持ってきます。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 準備 */
  position: relative;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
  /* 水平・垂直方向の中央揃え */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-and-horizontally-1.jpg" class="kg-image" alt="box-centered-vertically-and-horizontally-1" width="376" height="226" loading="lazy"></figure><h3 id="-div--2">フレックスボックスを使用して、div を水平・垂直両方の中央に配置する</h3><p>フレックスボックスは要素を水平・垂直両方の中央に配置する最も簡単な方法です。</p><p>この方法は、前述したフレックスボックスを使う方法を 2 つ組み合わせただけです。子要素を水平・垂直両方の中央に配置するには、親要素に <code>justify-content: center</code> と <code>align-items: center</code> を設定します。</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="child"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.container {
  font-family: arial;
  font-size: 24px;
  margin: 25px;
  width: 350px;
  height: 200px;
  outline: dashed 1px black;
  /* 水平・垂直方向の中央揃え */
  display: flex;
  justify-content: center;
  align-items: center;
}

.child {
  width: 50px;
  height: 50px;
  background-color: red;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/box-centered-vertically-and-horizontally-2.jpg" class="kg-image" alt="box-centered-vertically-and-horizontally-2" width="376" height="226" loading="lazy"></figure><p>要素を中央揃えにする上で知っておかなければならないことは以上です。これで自由に中央揃えができるようになりました。</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
