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

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

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

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

Q&A

0回答

302閲覧

指定した要素にだけ画像を挿入したい

harigoE8

総合スコア10

EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

0グッド

0クリップ

投稿2022/02/06 07:38

編集2022/02/06 13:42

前提・実現したいこと

指定した要素には画像を差し込みたいです。
今回の場合ですと、初めの2つの要素には画像を表示
それ以降には画像を表示させないようにしたいです。

発生している問題・エラーメッセージ

完成図
イメージ説明

現在
イメージ説明

このようにアイテムの3以降からも画像が表示されています。
ちなみに画像が違うのはお気になさらず。。

該当のソースコード

_topics.ejs

1<% var topics = [ 2 {icon:"k_1.jpeg",text:"grafの世界観に触れる!",new:"recruit.png",arrow:"serch_arrow.png"}, 3 {icon:"k_2.jpeg",text:"400台限定!特別仕様の「PK22」",new:"recruit.png",arrow:"serch_arrow.png"}, 4 {icon:"k_3.jpg",text:"ありそうでなかった!アートな佇まいのミラー",arrow:"serch_arrow.png"}, 5 {icon:"k_4.jpg",text:"家具・インテリアショップのクーポンまとめ",arrow:"serch_arrow.png"}, 6 {icon:"k_5.jpg",text:"石巻にて「本棚づくりワークショップ」開催",arrow:"serch_arrow.png"}, 7 {icon:"k_6.jpg",text:"柳宗理、「コノハ柄」ファブリック復刻販売!",arrow:"serch_arrow.png"}, 8 {icon:"k_7.jpg",text:"キタニの「Ever Green 不朽の名作たち」展",arrow:"serch_arrow.png"}, 9 {icon:"k_8.jpg",text:"「そうだ、ロイズの倉庫へいこう!!」開催",arrow:"serch_arrow.png"}, 10 {icon:"k_9.jpg",text:"名作チェアでコンサート",arrow:"serch_arrow.png"}, 11 {icon:"k_10.jpg",text:"情報求む!カンディハウス幻の椅子",arrow:"serch_arrow.png"} 12] %> 13<div class="p-mainTopics"> 14 <div class="p-mainTopics__box"> 15 <div class="p-mainTopics__inner"> 16 <div class="p-mainTopics__title"> 17 <div class="p-mainTopics__title--text"> 18 <img src="<%= img %>category.png" width="40px"><p>家具・インテリアTOPICS</p> 19 </div> 20 </div> 21 <div class="p-mainTopics__content"> 22 <% topics.forEach(function (value) { %> 23 <ul class="p-mainTopics__item"> 24 <li class="p-mainTopics__item--link"> 25 <img src="<%= img %><%= value.icon %> " width="50px"> 26 <div class="p-mainTopics__item--inner"> 27 <a href="/" class="p-mainTopics__item--text"><%= value.text %></a> 28 </div> 29 <img src="<%= img %><%= value.arrow %> " height="30px" width="30px"> 30 </li> 31 </ul> 32 <% }) %> 33 </div> 34 <div class="p-mainTopics__look"> 35 <img src="<%= img %>arrow.png"><a href="/">家具TOPICS一覧を見る</a> 36 </div> 37 </div> 38 </div> 39</div> 40 41

_mainTopics.scss

1.p-mainTopics { 2 display: flex; 3 justify-content: center; 4 align-items: center; 5 height: 980px; 6 background-color: #fff; 7} 8 9.p-mainTopics__box { 10 display: flex; 11 justify-content: center; 12 align-items: center; 13 height: auto; 14 width: 90%; 15 border: solid 0.4rem rgb(219, 219, 219); 16} 17 18.p-mainTopics__inner { 19 height: auto; 20 width: 90%; 21} 22 23.p-mainTopics__title { 24 display: flex; 25 align-items: center; 26 height: 60px; 27 border-bottom: solid 2px #bbb; 28} 29 30.p-mainTopics__title--text { 31 display: flex; 32 justify-content: space-between; 33 width: 80%; 34 font-size: 12px; 35 font-size: 1.2rem; 36} 37 38.p-mainTopics__item { 39 display: flex; 40 align-items: center; 41 height: 80px; 42 width: 100%; 43 border-bottom: dotted 3px #bbb; 44 &:hover { 45 background-color: #bbb; 46 } 47} 48 49.p-mainTopics__item--link { 50 display: flex; 51 justify-content: space-between; 52 align-items: center; 53 width: 97%; 54} 55 56.p-mainTopics__item--inner { 57 position: relative; 58 width: 80%; 59 margin-left: 10px; 60} 61/* 該当箇所 */ 62.p-mainTopics__item--text { 63 position: relative; 64 &::after { 65 position: absolute; 66 top: 100%; 67 right: 0; 68 height: 20px; 69 width: 100%; 70 background-image: url('#{$bgPath}recruit.png'); 71 background-repeat: no-repeat; 72 content: ''; 73 } 74 &:nth-of-type(n + 3) { 75 display: none; 76 } 77} 78.p-mainTopics__look { 79 display: flex; 80 justify-content: space-between; 81 align-items: center; 82 height: 60px; 83 width: 60%; 84 &:hover { 85 background-color: #bbb; 86 } 87} 88

試したこと

mainTopics.scss

1 &:nth-of-type(n + 3) { 2 display: none; 3 }

上記のように指定したのですが画像が表示されているので
(n + 3) を2や1にしましたが、1にすれば画像は一つも表示
されず2の場合は、変わらず全ての要素に画像が表示されました。
現在はhtml側の方が怪しいと思い色々模索している最中です。

お時間ございましたらご教授して頂きますと助かります。

補足情報(FW/ツールのバージョンなど)

・npm -v 6.9.0
・node -v 12.6.0
補足画像
イメージ説明
イメージ説明

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

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

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

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

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

hoshi-takanori

2022/02/06 13:29

それは CSS ではなく topics の各要素 (value) に new かどうかのフラグを持たせるべきでは…。
harigoE8

2022/02/06 13:49

つまり疑似要素で画像を差し込まず、html側でimgを設定して調整する イメージでしょうか?
hoshi-takanori

2022/02/06 13:53

はい。その方が、最初の 2 つだけとか決め打ちにしなくていいので。
harigoE8

2022/02/06 14:07 編集

<% topics.forEach(function (value) { %> <% if(topics <= 2) { %> <ul class="p-mainTopics__item"> <li class="p-mainTopics__item--link"> <img src="<%= img %><%= value.icon %> " width="50px"> <div class="p-mainTopics__item--inner"> <a href="/" class="p-mainTopics__item--text"><%= value.text %></a> <img src="<%= img %><%= value.new %> " width="50px"> </div> <img src="<%= img %><%= value.arrow %> " height="30px" width="30px"> </li> </ul> <% }else{ %> <ul class="p-mainTopics__item"> <li class="p-mainTopics__item--link"> <img src="<%= img %><%= value.icon %> " width="50px"> <div class="p-mainTopics__item--inner"> <a href="/" class="p-mainTopics__item--text"><%= value.text %></a> </div> <img src="<%= img %><%= value.arrow %> " height="30px" width="30px"> </li> </ul> <% } %> <% }) %>
harigoE8

2022/02/06 14:00

こんな感じでしょうか? これでうまくいかないのですが ifを使って設定した方がいいのすかね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問