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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

486閲覧

CSSのnth-of-typeが表示の切り替え時にも残ってしまっている

MH00214

総合スコア53

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/08/28 09:16

編集2020/11/04 02:16

いまやっていること

現在、カードが横並びに3つ並んでいるUIを作っています。仕様としては

  • CMS(comfortable mexican sofa)からデータを表示している
  • 初期状態ではカードは全て表示されている
  • カードが並んでいるすぐ上にoptionタグがあり、それを選択したら、関連するカードだけが表示される
  • カテゴリは「すべて」「メディア掲載」「プレスリリース」「イベント」

できたこと

  • CMS(comfortable mexican sofa)からデータを表示
  • 初期状態ではカードは全て表示
  • カードが並んでいるすぐ上にoptionタグがあり、それを選択したら、関連するカードだけが表示

困っていること

A B C
D E

と横並びに3カラムで表示しているのですが、それをoptionタグを使って表示を切り替えた時に
CDEがすべて「イベント」の時に
C D E
のように並ばずに
CD E
のように余白の32pxがない状態で並んでしまいます。
問題を起こしているのは下記のコードにもある
nth-of-type(3n) {...} の部分であることは明白なのですが、どのようにその問題を回避したら良いかわかりません。。

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

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

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

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

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

no1knows

2020/08/28 10:42 編集

5個の場合ですが、下記のような形が希望ですか? ■ ■ ■ ■ ■ それともこのような形でしょうか? ■ ■ ■ ■   ■ それともこのような形でしょうか? _■ ■ ■ __■_■
MH00214

2020/08/28 14:51

わかりにくい質問ですみませんでした。 5個の場合は ■ ■ ■ ■ ■ この形になることを想定しています。 marginは (0)■(32pxで固定)■(32pxで固定)■(0) となればOKです。
guest

回答3

0

回答をしてくださった方、ありがとうございます。
私の方ではjQueryを使って書く方法でなんとか実装できました。

jQuery

1const eliminateRightMargin = function () { 2 const rowCount = 3; 3 const activeClassCount = $(".active").length 4 const lineCount = Math.floor(activeClassCount / rowCount); 5 for (let i = 1; i <= lineCount; i++) { 6 $(".active").eq(rowCount * i - 1).addClass("eliminate-right-margin") 7 } 8 } 9 10 $(".news-category-select-box").change(function () { 11 const $newsContentCard = $(".news-content-card"); 12 const $selectBoxValue = $(this).val(); 13 $newsContentCard.removeClass("active"); 14 $newsContentCard.removeClass("eliminate-right-margin"); 15 if ($selectBoxValue === "all") { 16 $newsContentCard.addClass("active"); 17 eliminateRightMargin(); 18 } 19 $(".news-content-" + $selectBoxValue).addClass("active"); 20 eliminateRightMargin(); 21 }); 22 23 $(window).on("load", function () { 24 eliminateRightMargin(); 25 }); 26

投稿2020/08/31 13:08

MH00214

総合スコア53

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

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

0

ベストアンサー

FlexBoxを使った場合のコード例

html

1<div class="wrapper"> 2 <div>1</div> 3 <div>2</div> 4 <div>3</div> 5 <div class="hidden">4</div> 6 <div>5</div> 7 <div>6</div> 8</div> 9<div class="next"> 10 next 11</div>

css

1.wrapper { 2 display: flex; 3 justify-content: space-between; 4 flex-wrap: wrap; 5 width: 364px; 6 box-sizing: border-box; 7 border: 1px solid blue; 8} 9 10.hidden { 11 display: none; 12} 13 14.wrapper>div { 15 width: 100px; 16 box-sizing: border-box; 17 border: 1px solid red; 18} 19 20.wrapper::after { 21 content: ""; 22 width: 100px; 23}

CodePenサンプル

FlexBoxで横並びにして、折り返しすると、下記のようになってします。
■ ■ ■
■   ■

疑似要素て後ろに高さ0の要素を追加することで、
■ ■ ■
■ ■
となります。


CSS Grid を使うともっとシンプルに記述できます。

css

1.wrapper { 2 display: grid; 3 grid-template-columns: 100px 100px 100px; 4 grid-gap: 0 32px; 5 width: 364px; 6 box-sizing: border-box; 7 border: 1px solid blue; 8} 9 10.hidden { 11 display: none; 12} 13 14.wrapper>div { 15 width: 100px; 16 box-sizing: border-box; 17 border: 1px solid red; 18}

CodePenサンプル

投稿2020/08/29 13:23

編集2020/08/29 13:38
hatena19

総合スコア34075

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

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

0

ネガティブマージンを設定すると期待通りの動作をするはずです。
サンプルを用意しましたので、これを参考に設定してみてください。

HTML

1<div> 2 <div>1</div> 3 <div>2</div> 4 <div>3</div> 5 <div>4</div> 6 <div>5</div> 7</div>
div{ box-sizing:border-box; width:396px; float:left; margin-right:-32px; # ←ネガティブマージン div{ box-sizing:border-box; width:100px; margin-right:32px; # ←nth-childでmargin-right:0は設定しない border:1px solid #ff0000; } }

投稿2020/08/28 15:29

no1knows

総合スコア3365

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問