前提・実現したいこと
htmlのulを使ってcssで擬似的な表を表現したい
ただし画面サイズによって全てのセルを横1列に表記するか、横1列にセルを3〜4つずつ配置するかを切り替える予定なのでdisplay:flex; flex-wrap: wrap;は変えたくない。
発生している問題・エラーメッセージ
セルが横1列に4つずつだときれいに表示されるのに、3つずつだと意図していない余白のせいで右端のラインが太くなったように見えてしまう
該当のソースコード
test.html
1 2<!DOCTYPE HTML> 3<html> 4<head> 5<meta charset="utf-8"> 6<meta name="viewport" content="width=device-width,inital-scale=1" /> 7<link rel="stylesheet" href="test.css" type="text/css" /> 8<title>test</title> 9</head> 10 11<body> 12 <ul><li>aaaa</li><li>bbbb</li><li>cccc</li><li>dddd</li><li>eeee</li><li>ffff</li><li>gggg</li><li>hhhh</li><li>iiii</li> </ul></body> 13</html> 14
test.css
1<!—- セル4つずつバージョン --> 2body { background-color: green; margin: 0; width: auto; } 3 4ul { display: flex; flex-wrap: wrap; box-sizing: border-box; width: 100%; margin: 0; padding: .25%; background-color: blue; } 5ul li { width: 24.5%; height: 3em; margin: .25%; list-style: none; background-color: pink; } 6 7<!—- セル3つずつバージョン --> 8body { background-color: green; margin: 0; width: auto; } 9 10ul { display: flex; flex-wrap: wrap; box-sizing: border-box; width: 100%; margin: 0; padding: .5%; background-color: blue; } 11ul li { width:32%; height: 3em; margin: .5%; list-style: none; background-color: pink; } 12 13
試したこと
まず先にセルが横1列に3つずつで作って右側に謎の隙間ができてしまいました。
なので考えた結果、ulのpaddingとliのmargin,widthの%の合計が、ulのpaddingまで含めたwidthである100%という考えが間違っているのと推測しました。
つまり、liのwidthの数値は、親要素のpaddingまで含めたサイズ100%に対する数値ではなくコンテンツ部分のみの99%に対する数値で書かないといけないのかもしれないと思いました。
しかしcalc関数で書くのかもしれないと試してみましたがうまくいかず、一度に横1列に4つずつで作ってみたらうまくいってしまい訳が分からなくなってしまいました…
回答2件
あなたの回答
tips
プレビュー