添付のファイルのようなデザインをCSSでレイアウトする方法を教えてください。
自分では、リスト(<ul><li></li></ul>)を使う方法とtableを使う方法を試してみましたが、うまくできませんでした。
失敗した点を説明させていただきます。
【<ul><li></li></ul>で作成した場合】
・タイトル部分(施設案内)の縦の高さが1行分で表示されるため、右の内容のセルと高さが揃わない。
・縦の高さを強引に指定したとしても縦での中央揃えが出来なかった。
【tableで作成した場合】
・セルとセルの間にborder-spacingを指定するが効かなかった。
・セルの間隔は、タイトルと内容の間に1本と列ごとに1本いれたいが方法がわからない。
出来れば、リスト(<ul><li></li></ul>)で作成する方法を教えて欲しいです。
他にシンプルにできるオススメの方法がありましたらご教授お願いいたします。
No.6ベストアンサー
- 回答日時:
ご希望のリスト(<ul><li></li></ul>)で作成する方法です。
ちょっと無理やりですが、cssのulやliに関わる記述を削除し、次のcssを乗っけてみてください。
ul li{
margin-bottom:10px;{/*liと次のliとの間のスペースです。*/
}
ul li p{/*liの中のpをテーブルのセルとして表示させる事により、お隣のセルと高さを揃えています。また、縦方向の中央揃えも可能となります。*/
display:table-cell;
border:1px solid #cccccc;
}
.title1{
width:180px;
background:#444AFF;
color:#fff;
padding:5px 0 5px 14px;
vertical-align:middle;
border:none;
border-right:10px solid #ffffff;{/*白い罫線をタイトルの右にいれることで、空白に見せかけています。*/
}
.content1{
width:500px;
padding:5px 0 5px 14px;
}
ーーーーーーーーーーーーーーーーーーーーここまで
tableでborder-spacingが効かなかったのは、border-collapseでcollapseを指定しているからだと思います。
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/c …
にtable{border-collapse:collapse;border-spacing:0}の記述があります。
border-collapse: separate;
を指定し直せば、効く筈です。
DrFellさん
ご回答ありがとうございます。
ご指摘の通り、cssリセットが障害となっており、border-collapse: separate;を追記したところ、希望の形となりました。
おまけにulでの作成方法まで教えていただき本当に感謝です。
ベストアンサーとして選ばせていただきます。
この度は本当にありがとうございました。
No.5
- 回答日時:
#4 です。
#4 では別の方への回答用のリンクでしたので下記に訂正します。失礼しました…。
http://jsfiddle.net/98mtx4kd/3/
http://jsfiddle.net/98mtx4kd/3/show/
# Re: xjptmさん
No.4
- 回答日時:
構造的にもブラウザ対応状況的にも table で実装するのが最良だと思います。
http://jsfiddle.net/2VfDu/12/
display: flex もありますが、IEのサポート状況を考えると現実的ではないですね。
http://caniuse.com/#feat=flexbox
# どうでもいいですが、サンプル画像とサンプルHTMLの色合いが違うことが気になりました。
# Re: xjptmさん
No.3
- 回答日時:
たとえば、下記のように
★タブは_に置換してあるので戻す。
★文字コードはUTF-8
★liはdisplay:table-cellにしても、巾はそうはならない。
<!doctype html>
<html>
<head>
_<meta charset="utf-8">
_<title>サンプル</title>
_<meta name="description" content="">
_<meta name="author" content="IRUKA">
<style media="screen">
<!--
figure[title="一覧"]{display:table;}
figure[title="一覧"] ul{display:table-row-group;}
figure[title="一覧"] ul li{list-style:none;display:table-row;}
figure[title="一覧"] ul li dl{display:block;margin:0;padding:0;}
figure[title="一覧"] ul li dt,
figure[title="一覧"] ul li dd{display:table-cell;}
table[title="一覧"],
figure[title="一覧"]{
border-collapse:separate;
border:none;
width:50%;
margin:0 auto;
line-height:1.6em;
border-spacing:6px 4px;
}
table[title="一覧"] th,table[title="一覧"] td,
figure[title="一覧"] ul li dt,figure[title="一覧"] ul li dd{
border:solid gray 1px;
padding:6px;
}
table[title="一覧"] th,
figure[title="一覧"] ul li dt{
width:6em;
background-color:rgb(0,120,200);
color:white;
text-align:left;
font-weight:normal;
vertical-align:middle;
}
table[title="一覧"] p,
figure[title="一覧"] ul li dl dd p{
margin:0;text-indent:1em;
}
-->
</style>
</head>
<body>
_<header>
__<h1 id="title">Your title</h1>
__<nav>
___<ul>
____<li><a href="#">Some</a></li>
____<li><a href="#">navigation</a></li>
____<li><a href="#">links</a></li>
___</ul>
__</nav>
_</header>
_<section>
__<table title="一覧" border="1">
___<tbody>
____<tr>
_____<th>タイトル01</th>
_____<td>あいうえおあいうえおあいうえお</td>
____</tr>
____<tr>
_____<th>タイトル02</th>
_____<td>あいうえおあいうえおあいうえお</td>
____</tr>
____<tr>
_____<th>タイトル03</th>
_____<td>あいうえおあいうえおあいうえお</td>
____</tr>
____<tr>
_____<th>タイトル04</th>
_____<td>
______<p>あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめも</p>
______<p>あいうえおあいうえおあいうえお</p>
______<p>あいうえおあいうえおあいうえお</p>
_____</td>
____</tr>
___</tbody>
__</table>
__<figure title="一覧">
___<ul>
____<li>
_____<dl>
______<dt>タイトル01</dt>
______<dd>あいうえおあいうえおあいうえお</dd>
_____</dl>
____</li>
____<li>
_____<dl>
______<dt>タイトル02</dt>
______<dd>あいうえおあいうえおあいうえお</dd>
_____</dl>
____</li>
____<li>
_____<dl>
______<dt>タイトル03</dt>
______<dd>あいうえおあいうえおあいうえお</dd>
_____</dl>
____</li>
____<li>
_____<dl>
______<dt>タイトル04</dt>
______<dd>
_______<p>あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめも</p>
_______<p>あいうえおあいうえおあいうえお</p>
_______<p>あいうえおあいうえおあいうえお</p>
______</dd>
_____</dl>
____</li>
___</ul>
__</figure>
_</section>
_<footer>
__<h2>A nice footer</h2>
_</footer>
</body>
</html>
No.2
- 回答日時:
デザインはあくまで文書構造に則したものになります。
重要!!この場合、項目の内容がひとつの要素内にあること。項目内に複数の項目があること。それがあって初めて、それをtable風に表示できるのです。以前はHTMLは最初にデザインがあって、デザインの基づいてHTMLを書くことがしばしば行なわれてきました。それだと様々な不都合があるので・・。
これは、二次元データですからtableで良いです。
<table summary=">
<tbody>
<tr>
<th>タイトル01</th>
<td>あいうえおあいうえおあいうえお</td>
</tr>
<tr>
<th>タイトル02</th>
<td>あいうえおあいうえおあいうえお</td>
・・・・
★thはable header cell、tdfはtable data cellと言う意味ですから、classなんてつける必要はない
リストでマークアップされているなら、定義とその説明のセット(定義リスト)が、複数項目あるのですから
<ul>
<li>
<dl>
<dt>タイトル01</dt>
<dd>あいうえおあいうえおあいうえお</dd>
</dl>
</li>
<li>
<dl>
<dt>タイトル02</dt>
<dd>あいうえおあいうえおあいうえお</dd>
</dl>
の様にマークアップされている。これが、文書構造だけをきちんとマークアップしなさいという事です。デザインはこの時点では一切考えていない。
このようにマークアップされているから、スタイルシートでその文書構造を利用してデザインできるのですよ。
この基本を守るとHTMLを作成するのもメンテナンスも容易です。そして、対象に合わせてデザインできる。
No.1
- 回答日時:
>セルの間隔は、タイトルと内容の間に1本と列ごとに1本いれたいが方法がわからない
この意味が分からない。
tableだろうがulだろうが、HTMLはきちんとマークアップすること
この場合はtableのほうがよいでしょう。
この回答への補足
ご指摘ありがとうございます。
ご指導いただけると助かります。
HTMLの記述は以下としました。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/c …
<style type="text/css">
<!--
table{
border-spacing:5px;
margin-bottom:40px;
}
.title{
width:180px;
background:#444AFF;
color:#fff;
padding:5px 0 5px 14px;
}
.content{
width:500px;
border:1px solid #ccc;
padding:5px 0 5px 14px;
}
ul li{
overflow:hidden;
}
.title1{
width:180px;
background:#444AFF;
color:#fff;
padding:5px 0 5px 14px;
float:left;
margin:0 5px 5px 0;
}
.content1{
width:500px;
border:1px solid #ccc;
padding:5px 0 5px 14px;
float:left;
margin:0 5px 5px 0;
}
-->
</style>
<title>サンプル</title>
</head>
<body>
<table>
<tr>
<th class="title">タイトル01</th>
<td class="content">あいうえおあいうえおあいうえお</td>
</tr>
<tr>
<th class="title">タイトル02</th>
<td class="content">あいうえおあいうえおあいうえお</td>
</tr>
<tr>
<th class="title">タイトル03</th>
<td class="content">
<p>あいうえおあいうえおあいうえお</p>
<p>かきくけこかきくけこかきくけこ</p>
<p>さしすせそさしすせそさしすせそ</p>
</td>
</tr>
</table>
<ul>
<li>
<p class="title1">タイトル01</p>
<p class="content1">あいうえおあいうえおあいうえお</p>
</li>
<li>
<p class="title1">タイトル02</p>
<p class="content1">あいうえおあいうえおあいうえお</p>
</li>
<li>
<p class="title1">タイトル03</p>
<p class="content1">あいうえおあいうえおあいうえお<br>かきくけこかきくけこかきくけこ<br>さしすせそさしすせそさしすせ </p>
</li>
</ul>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リストの数字のフォントサイズ...
-
html/cssの、navを2段にする...
-
divタグ内のコンテンツが重なっ...
-
liタグの中に<p>タグやら<dl>を...
-
ボタンを横に並べて表示させる方法
-
ulタグやliタグの中でbrタグ...
-
<table>の高さ固定。情報増加時...
-
レスポンシブWebデザインでリン...
-
html <ul></ul>の並びで一行空...
-
メニューの横並びで改行されて...
-
リストマーカーをボックス内に...
-
HTMLタグ リストの入れ子とNet...
-
IE6でどうしても隙間が空いてし...
-
ページを開いているときのリン...
-
箇条書きがずれて表示されてし...
-
CSSでこんな感じにしたい
-
横並びのリストで左端がはみ出る
-
テーブルを使わない段組みで
-
アコーディオンメニューがかく...
-
アンカーにクラスを適用しての...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
html/cssの、navを2段にする...
-
リストマーカーをボックス内に...
-
リストの数字のフォントサイズ...
-
<ul><li></li></ul>にするメリ...
-
ulタグやliタグの中でbrタグ...
-
レスポンシブWebデザインでリン...
-
<ul>~</ul>が二つ続くと間に改...
-
HTML5のfooterに見出しを付けて...
-
htmlの<ol>タグで、数字などを...
-
ulとliで囲った文字の一部を変...
-
番号付きリスト(<Ol><Li>・・...
-
HTMLで組織図を作成する方法
-
複数行にまたがる括弧を表示し...
-
liタグの中に<p>タグやら<dl>を...
-
display:table;を多段表示させたい
-
divタグ内のコンテンツが重なっ...
-
<table>の高さ固定。情報増加時...
-
html <ul></ul>の並びで一行空...
-
テーブル内のプルダウンの下に...
-
【至急】ul li 行間調整ができ...
おすすめ情報