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

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

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

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

Q&A

解決済

2回答

194閲覧

ページによって個数の違うリストのクラス名

退会済みユーザー

退会済みユーザー

総合スコア0

CSS

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

0グッド

1クリップ

投稿2017/07/29 06:36

リストなどSPは二つだけにしたい。ないしはページによっては二つにしたいことがよくありますがクラス名をどうつけますか?

多いページ

<ul> <li class="item1"></li> <li class="item2"></li> <li class="item3"></li> <li class="item4"></li> <li class="item5"></li> </ul>

少ないページ
SPは二つだけにしたい。ないしはページによっては二つにしたい。
すると数値がおかしくなる。

<ul> <li class="item1"></li> <li class="item5"></li> </ul>

変数名ならlinkMapなど具体的な要素の内容を書いてしまいますが、
cssの場合拡張性を考えて、リンク先がMap出なくなった時のことを考えると見た目では付けることが出来ません。
役割が良いですが役割は他と同じただのリンクなのでlinkとすると同じクラス名になってしまいます。
abcにしても同じ問題が起きますよね。

いったいどうしたらいいでしょうか。

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

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

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

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

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

kei344

2017/07/29 07:17

「二つ」は特定の要素を残す、ということでしょうか。それとも5件表示を2件表示のように件数が減ればよいのでしょうか。
退会済みユーザー

退会済みユーザー

2017/07/29 07:23

説明不足で恐縮です。「二つ」は特定の要素を残すという方が近いと思います。例えば一つ目はtoppageへのリンク二つ目はmap~というように遷移先が違うグローバルナビを想定しています。ページによってmapには飛べなくても良いが、どこどこには飛び出いと必要なリンクが変わっていきますよね。
guest

回答2

0

ベストアンサー

item1などの連番でクラス名をつけている以上、セマンティックなクラス名やスタイル付けが必要とされていないと思われます。
質問の例で言うと、『リンク先がMapでなくなった時』であってもスタイル付けを変更する必要性がないということになるかと思います。もし必要であるならば、むしろ『リンク先がMapでなくなった時』のメンテナンス性を考えてセマンティックな命名にすべきです。

そういうわけで、item1などというクラス名をつけずに、itemでクラス名を統一してデザインし、仮にセマンティックなスタイル付けを要求された時に初めてセマンティックなクラス名をつけるのがよろしいのではないかと思います。

HTML

1<ul> 2 <li class="item primary-item"></li> 3 <li class="item"></li> 4 <li class="item"></li> 5 <li class="item"></li> 6 <li class="item primary-item link-map"></li> 7</ul>

CSS

1.item{ 2 /*共通スタイル*/ 3} 4.primary-item{ 5 /*主要アイテム用スタイル*/ 6} 7.link-map{ 8 /*セマンティックなスタイル*/ 9}

投稿2017/07/29 07:55

編集2017/07/29 07:57
Lhankor_Mhy

総合スコア36057

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

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

退会済みユーザー

退会済みユーザー

2017/07/29 08:04

確かにそのようなケースが多いですね始めと最後だけ必要になりますが、始めとサイトは内容が変わった時に、中身をすり替えればクラス名は代えずに済むので始めと最後だけ必要という事ですかね? それともlastchildなどを使えばクラス名の心配はなくなるという事でしょうか? primary-itemは素晴らしいクラス名だと思います。 ただあとはみんなsecondlyになってしまいますね。 よって他は、仕方ないのでそれだけ別のcssを当てたい時なmapなど見た目でつけてしまって、 場所や中身が変わった時にクラス名を変更するしかないですかね。 セマンティックなクラス名も限界か
Lhankor_Mhy

2017/07/29 08:16

私は疑似クラスで問題ないと思いますが、構造依存のCSSを嫌う方もいますので、その場合には、さらに".last-item"などの命名を行えばいいのではないかと思いますよ。
退会済みユーザー

退会済みユーザー

2017/07/29 08:42

グローバルナビはそれでもんだなさそうですね。
guest

0

消すほうを指定するとか。

HTML

1<ul> 2 <li class="item1"></li> 3 <li class="item2 no-sp"></li> 4 <li class="item3 no-sp"></li> 5 <li class="item4 no-sp"></li> 6 <li class="item5"></li> 7</ul>

HTML

1<ul class="type-a"> 2 <li class="item1"></li> 3 <li class="item2 no-sp"></li> 4 <li class="item3 no-sp"></li> 5 <li class="item4 no-sp"></li> 6 <li class="item5"></li> 7</ul><!-- spかつ.type-a の場合 .no-sp を表示しない、とか -->

投稿2017/07/29 07:28

編集2017/07/29 07:32
kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2017/07/29 07:50

<ul> <li class="item1">トップ</li> <li class="item2">マップ</li> <li class="item3">問い合わせ</li> <li class="item4">その他</li> <li class="item5"></li> </ul> とあった場合、 SPは <ul> <li class="item1">トップ</li> <li class="item4">その他</li> <li class="item5"></li> </ul> となると数値がさすがにおかしいかなと思った次第です。 <ul> <li class="top">トップ</li> <li class="other">その他</li> </ul> とすればいいという方がいると思いますが、再利用性が下がりますよね。 その他が会社概要になった場合クラス名を変更しないといけない問題が起きます。 ベストプラクティスが思い当たりません。 もう再利用性は諦めて具体的にしてしまうか。 数値が空いていても順番通りになっていれば穴あきは許容するのか それとも順番を示さないベストプラクティスがあるのか? 私には思い当たりがありません。
kei344

2017/07/29 07:58

そもそも横並びのリストに個別のクラス名は必要ないのでは。
退会済みユーザー

退会済みユーザー

2017/07/29 08:01

確かにそのようなケースが多いですね始めと最後だけ必要になりますが、始めとサイトは内容が変わった時に、中身をすり替えればクラス名は代えずに済むので始めと最後だけ必要という事ですかね? それともlastchildなどを使えばクラス名の心配はなくなるという事でしょうか?
kei344

2017/07/29 08:10

クラスをつけるか、という部分は状況しだいです。特定する必要が有るものにだけ付ければよいと思います。 > 始めと最後だけ必要 ご自身で書いておられるとおり「:first-child」「:last-child」で処理すればよいとおもいます。
退会済みユーザー

退会済みユーザー

2017/07/29 11:37

了解しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問