質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

165閲覧

flex boxのjustify-content: centerで各項目のスペースをもっと空けたい

B_J

総合スコア15

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/09/10 12:16

4つの項目があり、横一列にしたいです。中央に配置したうえで、それぞれの項目にスペースをあけたいのですが、コードがわかりません。flex boxのjustify-content: centerにすると、全くスペースなしで、ただ4つの項目が中央に来てしまうし、evenlyでやると、4つの項目がだだっぴろく広がって均等配置されるだけで、私の問題は解決してくれません。解決方法を教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コンテナー(役の要素)にはdisplay: flex;justify-content: center;を指定しておき、その中の項目自体のスタイルにmargin-rightで空けたい隙間を指定する。

末尾の項目の右側にできる隙間が気になるなら、:last-child疑似クラスを使って、margin-rightに0を指定する。

投稿2020/09/10 12:28

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

B_J

2020/09/10 12:54

ありがとうございます。 .flex-menu{ display:flex; justify-content: center; margin-right: 20px;} とやってみましたが変わりません・・・ その中の項目自体に、というのはどういうことでしょう?
Daregada

2020/09/10 13:00 編集

flexレイアウトには、「並べたい複数のアイテムを囲む要素」(コンテナー)と、「コンテナーの中で並ぶ複数の要素」(アイテム)という2つの役割を果たす要素がそれぞれ必要です。たとえば、ul要素がコンテナーとすると、li要素がアイテムになります。 CSSでは、「display: flex;」や「justify-content: center;」はコンテナーの要素に対して指定し、「flex: 1;」や「order: 1;」などはアイテムの要素に対して指定します。 回答の「その中の項目自体に」というのは、コンテナーに含まれるアイテムの要素に対して、CSSで「margin-right: 20px;」といった指定をしろ、ということ。 あなたが上のコメントでやっているのは、「コンテナーに対してmargin-rightを指定した」なので、それじゃダメなわけです。
Daregada

2020/09/10 13:02

もっと具体的に回答したいところですが、「あなたが」HTMLやCSSを提示してくれないので、こういう説明にならざるを得ないのです。
B_J

2020/09/10 13:37

すみません、CSSは先ほどのもので、HTMLが下記です。便宜上リンクは掲載していません。 この場合、どこにmargin-rightを記載すべきなのでしょうか? <div class="flex-menu"> <a href="リンク">A</a> <a href="リンク">B</a>     <a href="リンク">C</a> <a href="リンク">D</a> </div>
Daregada

2020/09/10 13:50

「.flex-menu a」に対して設定してください。たとえば、 .flex-menu a { display: inline-block; margin: 20px; padding: 0.5em 2em; border: 1px green solid; /* 確認用 */ }
B_J

2020/09/10 13:59

.flex-menu a { margin: 20px; とやったところ、できました。感激しました。本当にありがとうございます。 しかし、「a」は目からうろこでした。.flex-menu a  と.flex-menu  の違いは何なのでしょうか?HTMLシートには、.flex-menu の決まりしか決めておらず、「a」のついたものについては何も記載していないのですが・・・。初心者ですので、よろしくお願い致します。
Daregada

2020/09/10 14:10

「.flex-menu」は、「class="flex-menu"」が指定された要素(今回だとdiv要素)に対するスタイルの指定、「.flex-menu a」は、「class="flex-menu"」が指定された要素の中に含まれるa要素(ハイパーリンク)に対する指定です。
Daregada

2020/09/10 14:11

質問を「解決済」にしてください。
B_J

2020/09/10 14:13

なるほど!そういうことですね!本当に本当に感謝します。教えて頂いたことをヒントに、リンクする項目のABCDに下線が付いていたのですが、同じ要領でやればいいのかと思いつき、 text-decoration: none;をコーディングしたら、見事に下線が消えて感激しています。<a href > の場合に、このテクニックは使えるということですね?
Daregada

2020/09/10 22:05 編集

a要素をボタンのようにしてしまうと、(確認用に付けた)枠内をクリックすれば(文字のない場所をクリックしても)リンク先に飛んでしまいます。 それがいやなら(文字をクリックしたときだけ飛びたいなら)、ul要素とli要素を使い、li要素の中にa要素を入れます。この場合はコンテナーがul要素、アイテムが(複数の)li要素になり、a要素を「display: inline-block;」にはしません。
B_J

2020/09/10 21:29

ありがとうございます!今回は教えて頂いた「display: inline-box;」は入れておりません。分からなくなってしまったのですが、.flex-menu a { display: inline-block; margin: 20px; padding: 0.5em 2em; border: 1px green solid; /* 確認用 */ この中で、ということでしょうか? どういうことでしょうか? もう少し詳しく教えてくださいませ。
Daregada

2020/09/10 22:08 編集

inline-blockの書き間違いでした。要求にきりがないのでここまで。質問は「解決済」にしてください(2回目)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問