前提・実現したいこと
ブログを書いています。
その際、下記のような** 写真の段組み** をよく作ります。
従来は table 機能でやっていましたが、今後は CSS に記述した設定を呼び出すかたちで実現したいと考えています。
写真 A・B・C で段組みを構成します。
その際、画像にその場限りの width や padding の指定をしない ことが条件です。
画像に個別の条件付けをせずとも、自動的にこのレイアウトが成立する CSS を考えることが、この取り組みの重要な条件です。
この際私が難しさを感じている主因は、A・B・C の縦横比が異なる場合がしばしば起こる点にあります。
不揃いな画像でも自動的にこのレイアウトに収束する、CSS と HTML を書き出したい。
発生している問題・エラーメッセージ
実際にたどり着いた状況がこちらです。
該当のソースコード
HTML
1<div class="cover"> 2 <div class="box"> 3 <div class="cell_A"> 4 5 <a href="https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9c83f35b2adeab985d814364018b5242.png"><img src="https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9c83f35b2adeab985d814364018b5242.png" alt="画像A"> 6 7 </div> 8 <div class="cell_B"> 9 10 <a href="https://teratail-v2.storage.googleapis.com/uploads/contributed_images/104e6657f44ad40831196f0c4eccda11.png"><img src="https://teratail-v2.storage.googleapis.com/uploads/contributed_images/104e6657f44ad40831196f0c4eccda11.png" alt="画像B"> 11 12 </div> 13 </div> 14 <div class="box"> 15 <div class="cell_C"> 16 17 <a href="https://teratail-v2.storage.googleapis.com/uploads/contributed_images/7521431933a264b39afd5ad35199d1de.png"><img src="https://teratail-v2.storage.googleapis.com/uploads/contributed_images/7521431933a264b39afd5ad35199d1de.png" alt="画像C"> 18 19 </div> 20 </div> 21</div>
css
1div.cover { 2 width: 100%; 3 margin-top: 5em; 4} 5 6div.cover div.box { 7 display: table; 8 max-width: 540px; 9} 10 11div.cover div.box div.cell_A { 12 display: table-cell; 13 padding-right: 10px; 14 align: left; 15} 16 17div.cover div.box div.cell_B { 18 display: table-cell; 19 padding-left: 10px; 20 align: right; 21} 22 23div.cover div.box div.cell_C { 24 display: table-cell; 25 max-width: 540px; 26 padding-top: 20px; 27}
試したこと
display:table の標準仕様では、隣り合う table-cell は等幅になるそうですね。
まずはこれが不等幅になる記述を調べました。
それについては単純な横幅の指定でひとまず回避できるようになりましたが、縦幅も同時に調整できる記述については、全く道筋を立てられずにいます。
挿入される画像それ自体には、width 指定をしていません。
2000px くらいある無垢の画像が 540px の段組みに収まっている体裁は、あくまで、画像を収める div.cell の大きさ(小ささ)によって押しつぶされるようにして成り立っている、と理解しています。
補足情報
「CSS の記述で画像の大きさをコントロールする」動機があります。
私がブログを書くようになって15年以上経つのですが、これまでは HTML 編集の table 機能で “写真の段組み” を作ってきました。
そのように個別の width や padding を設定して構わないなら、希望するレイアウト自体はすぐに完成します。
しかしながら、先述の通り長い期間にわたって文章を書き続けていると、周囲の環境の変化が必ず起こり、文章の体裁を見直さなければならない時がきっと訪れます。
例えば、スマートフォンでの視聴は過去には全く存在しない要請ですし、パソコンにせよ、モニターサイズは常に大型化してきました。
10年前であれば2カラムのブログ本文表示欄は 700px 程度が関の山でしたが、現在は 900px くらいが標準ではないでしょうか。
貼付した画像に対して個別に width や style を設定して済ませた場合、たくさん投稿するほど、その修正は不可能に近づきます。
これまで「table 機能で書けるから」と不勉強のまま過ごしてきましたが、元栓をひねるように全ての画像サイズが管理できる ・・・そういう記述方法を確立しておく必要性を感じ、CSS について調べ始めました。
もしかするとかなり難しいことを考えているのかもしれませんが、素人にはその判断すらつきません。
機能が実現できるなら、display:table にこだわる必要はありません。
ぜひとも知恵をお貸しください。