
前提・実現したいこと
2カラムのデザインで可変する兄弟要素(aside
とartcle
)の高さを揃える方法を教えてください。
現状のコードをなるべく変更しない方法を知りたいため、
下記を使わない条件下で行いたいです。
flexbox
gridレイアウト
position:abusolute
JavaScript
【2カラム自体をflexboxやgridで作ると簡単で、そもそもこの問題が発生しないかと思いますが、他の方法で2カラムにした時を想定して質問させていただいております。】
該当のソースコード
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>SAMPLE</title> 6 <link rel="stylesheet" href="./page.css"> 7 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 8</head> 9<body> 10<header> 11 header 12</header> 13 <main> 14 <div class="main_container"> 15 <article class="side_article"> 16 <div class="mainvisual"> 17 <div class="pic mainImg"> 18 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 19 </div> 20 <div class="minvisual_text"> 21 <h2>タイトル タイトル</h2> 22 <p class="read">サンプルテキスト。サンプルテキスト。</br>サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。</p> 23 </div> 24 </div> 25 <section class="sec01"> 26 <h2>タイトル タイトル</h2> 27 <div class="sec_wrapper"> 28 <p class="read">サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。</p> 29 <div class="pic"> 30 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 31 </div> 32 </div> 33 </section> 34 <section class="sec02"> 35 <h2>タイトル タイトル</h2> 36 <div class="sec_wrapper"> 37 <div class="read"> 38 39 <p class="p">サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。</p> 40 <p class="p">サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。サンプルテキスト。</p> 41 </div> 42 <div class="pic"> 43 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 44 </div> 45 </div> 46 </section> 47 <section class="sec03"> 48 <h2>タイトル タイトル</h2> 49 <div class="sec_wrapper"> 50 <table> 51 <tr> 52 <th>TH TH TH TH</th> 53 <td>TD TD TD TD TD</td> 54 </tr> 55 <tr> 56 <th>TH TH TH TH</th> 57 <td>TD TD TD TD TD</td> 58 </tr> 59 <tr> 60 <th>TH TH TH TH</th> 61 <td>TD TD TD TD TD</td> 62 </tr> 63 <tr> 64 <th>TH TH TH TH</th> 65 <td>TD TD TD TD TD</td> 66 </tr> 67 <tr> 68 <th>TH TH TH TH</th> 69 <td>TD TD TD TD TD</td> 70 </tr> 71 <tr> 72 <th>TH TH TH TH</th> 73 <td>info@example.com</td> 74 </tr> 75 </table> 76 </div> 77 </section> 78 <section class="sec04"> 79 <div class="gallery sec_wrapper"> 80 <div class="pic"> 81 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 82 </div> 83 <div class="pic"> 84 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 85 </div> 86 <div class="pic"> 87 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 88 </div> 89 <div class="pic"> 90 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 91 </div> 92 <div class="pic"> 93 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 94 </div> 95 <div class="pic"> 96 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 97 </div> 98 </div> 99 </section> 100 </article> 101 <aside> 102 <div class="widget"> 103 <h2>タイトル タイトル</h2> 104 <ul> 105 <li><a href="#">リンク リンク リンク</a></li> 106 <li><a href="#">リンク リンク リンク</a></li> 107 <li><a href="#">リンク リンク リンク</a></li> 108 <li><a href="#">リンク リンク リンク</a></li> 109 <li><a href="#">リンク リンク リンク</a></li> 110 <li><a href="#">リンク リンク リンク</a></li> 111 </ul> 112 </div> 113 <div class="widget"> 114 <h2>タイトル タイトル</h2> 115 <ul> 116 <li><a href="#">リンク リンク リンク</a></li> 117 <li><a href="#">リンク リンク リンク</a></li> 118 <li><a href="#">リンク リンク リンク</a></li> 119 <li><a href="#">リンク リンク リンク</a></li> 120 <li><a href="#">リンク リンク リンク</a></li> 121 <li><a href="#">リンク リンク リンク</a></li> 122 </ul> 123 </div> 124 <div class="widget"> 125 <h2>タイトル タイトル</h2> 126 <ul> 127 <li><a href="#"><div class="thumb1_img"> 128 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 129 </div></a> 130 サンプルテキスト。サンプルテキスト。サンプルテキスト。</li> 131 <li><a href="#"><div class="thumb2_img"> 132 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 133 </div></a> 134 サンプルテキスト。サンプルテキスト。サンプルテキスト。</li> 135 <li><a href="#"><div class="thumb3_img"> 136 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 137 </div></a> 138 サンプルテキスト。サンプルテキスト。サンプルテキスト。</li> 139 </ul> 140 </div> 141 <div class="side_banner_img"> 142 <img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u10/103363/0c3a60754a6f8392_thumbnail.png"> 143 </div> 144 </aside> 145 </div> 146 </main> 147 <footer>footer</footer> 148 <script> 149 $(function() { 150 'use strict'; 151 $('a[href^="#"]').on('click', function() { 152 return false; 153 }); 154 155 $('.pic').each(function() { 156 var imgHeight = $('img', this).outerHeight(); 157 $(this).css({paddingTop:imgHeight}); 158 159 }) 160 161 }); 162 </script> 163 </body> 164 </html>
css
1/* 試したこと */ 2main { 3 text-align: center; 4} 5.main_container { 6 display: inline-block; 7 /* height: 1600px; */ 8 text-align: left; 9} 10aside,article { 11 /* height: 100%; */ 12} 13 14 15/* 質問の為に追加 */ 16img { 17 width: 150px !important; 18 height: 150px !important; 19} 20h2 { 21 display: none; 22} 23 24/* 現状のコード */ 25header,footer { 26 background: #00f; 27 height: 100px; 28} 29 30body,html { 31 background: #ccc; 32} 33 34.header_container, 35.main_container, 36.footer_container { 37 background: #f0f; 38 max-width: 960px; 39 margin: 0 auto; 40 padding: 0 20px; 41} 42.main_container { 43 padding: 20px; 44} 45a { 46 height: auto; 47} 48ul { 49 font-size: 0; 50} 51li { 52 font-size: 16px; 53} 54.pic { 55 position: relative; 56 width: 100%; 57} 58img { 59 width: 100%; 60 height: auto; 61 object-fit: cover 62} 63.pic img { 64 border: 4px solid #ebebeb; 65 position: absolute; 66 top: 0; 67 left: 0; 68} 69.read { 70 padding-top: 10px; 71} 72.f-pink { 73 color: #cf6a88; 74} 75 76/* main */ 77.mainvisual { 78 position: relative; 79} 80.minvisual_text { 81 background: rgba(000, 000, 000, .3); 82 color: #fff; 83} 84.minvisual_text h2 { 85 font-size: 20px; 86} 87 88/* main */ 89main::after { 90 content: ''; 91 display: block; 92 clear: both; 93} 94main h2 { 95 background: linear-gradient(to top, #CF6A88, #A74864); 96 padding: 10px; 97 color: #fff; 98} 99.side_article { 100 background: #ff0; 101 width: calc(100% - 210px); 102 float: right; 103} 104section { 105 margin-top: 20px; 106 border: 1px solid #ebebeb; 107} 108.sec_wrapper { 109 display: flex; 110 padding: 20px; 111} 112.sec_wrapper .read { 113 flex: 2; 114 padding: 0; 115 line-height: 1.2; 116} 117.sec_wrapper .read p + p { 118 padding-top: 10px; 119} 120.sec01 .pic, 121.sec02 .pic { 122 flex: 1.5; 123} 124/* sec03 table */ 125.sec03 table { 126 width: 85%; 127 margin: 0 auto; 128 padding: 20px 80px; 129} 130.sec03 th, .sec03 td { 131 background: #F5F5F5; 132 border: 1px solid #D6D6D6; 133 font-size: 13px; 134 padding: 10px; 135} 136.sec03 th { 137 width: 110px; 138 border-right: 4px solid #D6D6D6; 139 text-align: right; 140 padding-left: 0; 141} 142.gallery { 143 flex-wrap: wrap; 144} 145 146/* sec04 gallery */ 147.sec04 { 148} 149.sec04 .gallery .pic { 150 width: calc(100% / 3); 151 padding-top: 0 !important; 152 padding-bottom: 20px; 153 154} 155.sec04 .gallery .pic img { 156 position: static; 157} 158 159/* aside */ 160aside { 161 background: #f00; 162 width: 210px; 163 padding-right: 20px; 164}
試したこと
【display:table;
にして2カラムにすれば解決する事を確認しておりますが非推奨な方法かと思い別な方法を探しております。】
手順1. 親要素の高さを子要素に合わせるために.main_container
をinline-block
に変更
(それに伴いmain
と.main_container
のtext-align
を変更)
手順2. 子要素の高さを親要素に合わせるためにaside
とarticle
をheight:100%
に変更
*結果・・・親要素の高さを指定してないので無効
補足情報(FW/ツールのバージョンなど)
win10,chrome使用
手順は追加するのでも、1から別の方法になっても構わないです。
flexbox
を使わない等の条件がありますが、よろしくお願いします。
もしくは、
現在floatを使って2カラムにしてますが、
flexbox
を使わない等の同条件で2カラムから作り直しでも構いません。
よろしくお願いします。
追記
検索するとtable
にして2カラムにする方法が多くあり、
それで解決しそうですが、テーブルではないので避けたい方法と考えております。
table
は非推奨の方法でしょうか?


回答1件
あなたの回答
tips
プレビュー