私は以下の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 をサポートする必要があります。