プロジェクト

全般

プロフィール

Backport(バックポート) #2084

[.recentList dl] や [.commentList dl] などで float の回り込み解除の対処がされていないため、レイアウトが崩れる

Shinichi Urabeほぼ13年前に追加. ほぼ13年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2010-09-10
期日:
2011-06-24
進捗率:

100%


説明

Overview (概要)

コミュニティトピックの一覧ページ(コミュニティトピック一覧、コミュニティ最新書き込み)では、次のようなリストが表示される。

|     2010年9月10日 11:05    | a(0) (dummy2)               |
|     2010年7月23日 13:30    | name(0) (dummy9)            |
|     2010年7月23日 13:30    | name(0) (dummy9)            |

上記のようなリストで、言語が英語に設定されてるような場合に、日付部分の表記が長くなって日付が折り返してしまうことがある。

日付が折り返すとは次のような状態である。言語を英語に設定した場合に必ず折り返すわけではなく、ブラウザの種類やフォント、文字サイズによって結果は異なる。同様に、言語が日本語であってもこの問題が発生する可能性はある。

| September 10, 2010 11:05 A | a(0) (dummy2)               |
|              M             |                             |
|   July 23, 2010 1:30 PM    | name(0) (dummy9)            |
|   July 23, 2010 1:30 PM    | name(0) (dummy9)            |

日付が折り返したとき、上記のように左側と右側のレイアウトが保持されるべきであるが、CSSの記述が十分ではないためにレイアウトが崩れてしまっている。

実際のレイアウトが崩れた表示は、次の画像を参照してください。

また、コメント(note-8) http://redmine.openpne.jp/issues/1578#note-8 でもこの問題について説明を示しています。

Range of problems (問題となる箇所)

トピックリストに限らず、同様のリスト(同様の原因を含みうる箇所)では同じ問題が発生する可能性があります。

このチケットでは、確認できている箇所 ".recentList dl" と ".commentList dl" を少なくとも修正することとします(もしも同様の問題が別の箇所で起こることが確認された場合は、このチケットが完了していなければこのチケットで、既にクローズされた場合は新しいチケットで対応することを予定しています)。

Causes (原因)

CSSの記述が不十分である(「コミュニティトピックの一覧ページ」を問題として示していますが、この原因は opCommunityTopicPlugin ではなく opSkinBasicPlugin のCSSです)。

アイテム一つは dl 要素で、日付部分を dt 要素、トピックタイトル部分を dd 要素でマークアップしている。

<div class="****List">
  <dl>
    <dt>左側(日付部分)</dt>
    <dd>右側(タイトルなど)</dd>
  </dl>
  <dl>
    <dt>左側(日付部分)</dt>
    <dd>右側(タイトルなど)</dd>
  </dl>
  ... (dl要素がアイテム数だけ繰り返される)
</div>

dt { float: left; width: DT_WIDTH; }, dd { margin-left: DT_WIDTH; } のようにCSSを記述しているが(※)、この記述だけで意図したレイアウトになるには、「左側の方が右側よりも常に高さが小さい」という条件が必要になる。

※ 実際の margin-left プロパティ値は DT_WIDTH に padding 値などを加えた値です。

これを考慮して dd 要素には min-height: 5.5em や height: 1.2em といった記述があるが、この値は不十分であり、日付が折り返したりすることを想定していない。

根本的には、日付が折り返す可能性ではなく、「左側の方が右側よりも高さが大きい」という場合の可能性を考慮すべきである。

Way to fix (修正内容)

dl 要素の子要素の中で、float している dt 要素が最も高さが大きくなる場合(左側が高くなる場合)に、アイテム全体の高さが保たれるように、dl 要素に clearfix 相当の指定を行う。

また、レイアウトが崩れる問題とは別に、左側と右側の境界線(中央の線)が、左側が高くなる場合にも dl 要素の高さいっぱいに 1px で表示されるように、 dt, dd に border の指定を行う。

具体的な修正内容はコメント(note-6) http://redmine.openpne.jp/issues/1578#note-6 に示しています。


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1578: [.recentList dl] や [.commentList dl] などで float の回り込み解除の対処がされていないため、レイアウトが崩れる Fixed(完了) 2010-09-10

関係しているリビジョン

リビジョン ed141434 (差分)
Minoru Takaiほぼ13年前に追加

(fixed #2084, BP from #1578) CSS fix for float+margin layout on ".recentList dl" and ".commentList dl"

リビジョン dd9c95f4 (差分)
Minoru Takaiほぼ13年前に追加

(fixed #2084, BP from #1578) CSS fix for float+margin layout on ".recentList dl" and ".commentList dl"
(cherry picked from commit ed141434fc4c0dcef0d4167f6dff2269fc9e47be)

履歴

#1 Kousuke Ebiharaほぼ13年前に更新

  • 期日2011-06-24 にセット

#2 Kousuke Ebiharaほぼ13年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Kousuke Ebihara にセット

バックポート引き受けます

#3 Minoru Takaiほぼ13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 ed141434fc4c0dcef0d4167f6dff2269fc9e47be で適用されました。

#4 isao sanoほぼ13年前に更新

テスト終了いたしました。
問題ありません。

#5 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです。(cf. http://redmine.openpne.jp/issues/1578#note-12 )

#6 Mutsumi Imamuraほぼ13年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

他の形式にエクスポート: Atom PDF