質問編集履歴

3

1/20 13:54 なんでこんな面倒なことをしたいのか、その背景を記述しました。

2018/01/20 04:54

投稿

Cystidia
Cystidia

スコア16

test CHANGED
File without changes
test CHANGED
@@ -129,3 +129,11 @@
129
129
  この#descriptionを下ではなく上に伸びるようにしたいのですが、何か良い方法はありますでしょうか。
130
130
 
131
131
  CSSのみで実現できるのが理想ですが、jQuery等を使っても構いません。
132
+
133
+
134
+
135
+ [追記]
136
+
137
+ なんでこんな面倒なことを言っているかというと、上記headerと#leftを「写真とそのタイトル」というくくりで1つのインクルードファイルにしていて、数個ある「写真と解説の組み合わせ」をランダムでインクルードしています。その写真の表示位置を、PC版では#leftの背景に、スマホ版ではヘッダの背景にしており、共に「写真の下端」にタイトル(と説明文へのリンク)を出したいのです。
138
+
139
+ PC版とスマホ版でソースを同一にしたい(≒ソース読み込みで極力条件分岐させたくない)ので、上記のような作りにしています。

2

2018/01/20 04:54

投稿

Cystidia
Cystidia

スコア16

test CHANGED
File without changes
test CHANGED
@@ -126,6 +126,6 @@
126
126
 
127
127
  このようなCSSを書いたところ、#description内の文字が1行に収まるうちはよいのですが、2行になると#descriptionが「下に」伸びてしまいます。
128
128
 
129
- #descriptionを下ではなく上に伸びようにしたいのですが、何か良い方法はありますでしょうか。
129
+ この#descriptionを下ではなく上に伸びようにしたいのですが、何か良い方法はありますでしょうか。
130
130
 
131
131
  CSSのみで実現できるのが理想ですが、jQuery等を使っても構いません。

1

1/20 13:43 HTMLとサイト構造の簡単な説明を追記しました。

2018/01/20 04:44

投稿

Cystidia
Cystidia

スコア16

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,79 @@
4
4
 
5
5
  ヘッダの一部(下記"div#description")を、1~2行程度の文章を「表示画面の下から24px」の位置に表示したいと考えています。
6
6
 
7
- ```CSS
7
+ ```HTML
8
+
9
+ <body>
10
+
11
+ <header> // 高さ48px(PC)・108px(スマホ); CSS Gridで指定; position:relative(子要素nav/divの基点) //
12
+
13
+ <h1>タイトルロゴ</h1>
14
+
15
+ <nav id="headerNavi"> // PC・スマホとも右上; absolute //
16
+
17
+ <ul>
18
+
19
+ <li><a href="#!">検索</a></li>
20
+
21
+ <li><a href="#!">English</a></li>
22
+
23
+ <li><a href="#!">お問い合わせ</a></li>
24
+
25
+ </ul>
26
+
27
+ </nav>
28
+
29
+ <nav id="openMenu"> // PCとスマホで表示位置が違う; 共にabsolute //
30
+
31
+ <a href="#!">メニュー</a>
32
+
33
+ </nav>
34
+
35
+ <div id="description"> // 写真の説明文へのリンク; スマホはヘッダ下端・PCは下記#left下端にabsolute //
36
+
37
+ <a href="./写真の説明文へ"><p>写真タイトル&nbsp;&nbsp;&raquo; 解説</p></a>
38
+
39
+ </div>
40
+
41
+ </header>
42
+
43
+ <section id="left"> // 高さ(100vh - 108px -24px); CSS Grid(左40%); PCだと画像が出てスマホだとdisplay:none; //
44
+
45
+ </section>
46
+
47
+ <section id="main"> // 高さ(100vh - 108px -24px); CSS Grid(右60%); overflow-y:scroll; //
48
+
49
+ <div id="banners">各種固定ページのバナー</div> // flexbox //
50
+
51
+ <div id="whatnew">新着情報をカードで</div> // flexbox //
52
+
53
+ <div id="aboutme">会社説明概要等</div> // flexbox //
54
+
55
+ </section>
56
+
57
+ <footer>
58
+
59
+ <div>ここは高さ24pxのフッタ</div>
60
+
61
+ </footer>
62
+
63
+ </body>
64
+
65
+ ```
66
+
67
+ といった感じのHTMLで、
68
+
69
+  PC | ヘッダが上48px固定、左40%が画像(背景)とそのタイトル(下端)、右60%がサイト本体、フッタが下24px固定
70
+
71
+  スマホ | ヘッダが上108px固定で、PCだと#leftに表示される画像(背景)とタイトルを表示、その下が本体、フッタが下24px固定
72
+
73
+ になっています。
74
+
75
+ ここで、PC用サイトだけ、header#descriptionを#left下端に表示したいのですが(スマホ用はヘッダ下端に小さい文字で表示しているので問題は生じない)、ブラウザを開くサイズによってheader#descriptionの中身が1行~3行になります。
76
+
77
+
78
+
79
+ ```CSS (PC用)
8
80
 
9
81
  header div#description{
10
82
 
@@ -52,8 +124,8 @@
52
124
 
53
125
  ```
54
126
 
55
- このようなCSSを書いたところ、div内の文字が1行に収まるうちはよいのですが、2行になるとdivが下に伸びてしまいます。
127
+ このようなCSSを書いたところ、#description内の文字が1行に収まるうちはよいのですが、2行になると#description下に伸びてしまいます。
56
128
 
57
- このdivを下ではなく上に伸びろようにしたいのですが、何か良い方法はありますでしょうか。
129
+ #descriptionを下ではなく上に伸びろようにしたいのですが、何か良い方法はありますでしょうか。
58
130
 
59
131
  CSSのみで実現できるのが理想ですが、jQuery等を使っても構いません。