プロが教えるわが家の防犯対策術!

セル内のリンク文字を中央に配置したい

テーブルタグにdisplay:blockを使ってセル全体がリンクできるようにしたのですが、セル内の文字数が増えると(8文字以上になると?)2行になる分、高さが2倍になってしまい、セル内の文字も上下に大きく離れてしまいます。
文字数が2行になる場合でもセルの中央にリンク文字を配置し、高さも2倍にならないようにするにはどうしたらいいか教えてください

全体のwidthを600px,
tableを横に4つ並べて一つ一つのtableの大きさを
width: 130px; height: 70px;
table同士の隙間をあけたかったのでborder-spacing: 20px;とってあります

th a{width: 130px; line-height: 70px; display:block;}
も入れてあります

cssもホームページ作りも慣れていないのでうまく説明できていないかもしれませんが、よろしくお願いします。

A 回答 (2件)

[html]


thのa要素ないの文字列をspanで囲む。
<th><a href="#"><span>●●●●●●●●●●●●<br />●●●●</span></a></th>

[css]
th a{
height: 70px;
display:block;
text-decoration:none;
}
th a span{
position:relative;
text-decoration:underline;
top:25%;/* leftやTOPでここでいろいろと小細工し調整 */
}

完璧な中央ぞろえとはいきませんが、ある程度は対応できるのではないでしょうか?
(height固定なので3行や4行になる場合は調整が必要です。)
    • good
    • 0
この回答へのお礼

おぉ!!出来ましたっっ
ありがとうございます
ほとんど私が思っていたのと同じ形になりました

1行ですむところはspanで囲まずにやってみたら文字が上にのぼってしまったので全部のa要素をspanで囲んでみました
ホントにありがとうございました

お礼日時:2010/07/15 19:33

vertical-align: middle; で縦方向の中央揃えになります。



------
<style type="text/css"><!--
th { width: 130px; height: 70px; background-color: #efe; }
th a { display: table-cell; vertical-align: middle; width: line-height: 100%; width: 130px; height: 70px; }
th a:hover { background-color: #eef; }
--></style>
</head>
<body>

<table summary="sample">
 <thead>
  <tr>
   <th><a href="test">name1<br />foo</a></th>
  </tr>
 </thead>
</table>
------

ただし、IE7以下は display: table-cell; に対応しません。
uuAltCSS.js を使えば対応できるかもしれませんが、未検証です。

uuAltCSS.js - README
http://uupaa-js-spinoff.googlecode.com/svn/trunk …
    • good
    • 0
この回答へのお礼

詳しく教えてくださってありがとうございます

やってみたのですが、2行だった文字が3行になって高さが3倍になってしまいました・・・
でも新しいことを知ることが出来て勉強になりました
これから参考にさせていただきます

お礼日時:2010/07/15 19:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!