私は以下のCSSとHTMLを持っています。私はリスが設定された高さと幅であり、相対位置を持つメニューを持っています。それらの中のリンクは、利用可能なすべてのスペースを占有するように絶対的に配置されているため、li 全体をクリックできます。ここまでは順調ですね。
問題は、テキストをリンクする量が異なる場合があることです。リンク テキストが 2 行にまたがる場合 (たとえば 2 番目のリンク)、縦方向のパディングを少なくしたいと考えています。ソリューションが動的でJavaScriptを使用する必要があることを除いて、これのために2番目のリンクにクラスを追加します。最初のリンクがより多くのテキストを持ち、2 行に折り返されるようにメニューが変更される場合があります。その場合、垂直方向のパディングも削除する必要があります。コードを変更せずにこれを行う必要があります。
jQuery を使用したソリューションを検討し始めました。リンクの高さを測定してみたので、「x」より上にある場合は、垂直パディングを削除するクラスを追加できました。ただし、高さは絶対配置によって設定されるため、これは機能しません。
テキストが 2 行に折り返されているかどうかを測定する別の方法はありますか? 文字数を数えることはできますが、一部の文字は他の文字よりも幅が広いため、信頼できるとは思えません。
テキストを含むリンク内にスパンを追加すると機能しますか? その場合、おそらくリンクはまだ絶対に配置でき、そのスパンは高さを測定できますか?
<li>
<a href="#">Link1</a>
</li>
<li>
<a href="#">Link 2 with long text</a>
</li>
<li>
<a href="#">Link3</a>
</li>
li {
display: block;
float: left;
position: relative;
text-align: center;
width: 83px;
min-height: 53px;
background-color: grey;
margin-right: 5px;
}
a {
padding-top: 13px;
position: absolute;
top: 0;
bottom: 0;
right: 0;
left:0;
}
更新 - IE7 をサポートする必要があります。