0

リンクをクリックすると開く詳細セクションのリストがあります。ほとんどの場合は正常に機能しますが、一部の特殊なケースでは機能しません。

問題が何であるかを正確に説明するために、コードにコメントを含めました。

理想的には、これを CSS で解決したいのですが、既にページで javascript と jQuery を使用しているため、それができない場合はそれらを使用した解決策で問題ありません。

ここにフィドルがあります。

または、html は次のとおりです。

例 1これがどのように見えるかです。

<ul>
    <li class='open'>
        <div class='title'>
            <a class='link'>details</a>
            item 1
        </div>
        <div class='details'>
            These details open when the details link is clicked
        </div>
    </li>
    <li>
        <div class='title'>
            <a class='link'>details</a>
            item 2
        </div>            
        <div class='details'>
            this is hidden
        </div>        
    </li>
    <li>
        <div class='title'>
            <a class='link'>details</a>
            item 3            
        </div>            
        <div class='details'>
            this is hidden
        </div>        
    </li>    
</ul>

例 2名前が長すぎる場合は、リスト全体の幅を広げて、次の行に分割しないようにし、背景がその下に拡大されるようにする必要があります。代わりに、詳細リンクをカバーしており、背景を拡大していません。他の項目からの詳細リンクも右に移動して、一列に並んでいる必要があります。

<ul>
    <li class='open'>
        <div class='title'>
            <a class='link'>details</a>
            item 1 with a very very  very long name
        </div>
        <div class='details'>
            These details open when the details link is clicked
        </div>
    </li>
    <li>
        <div class='title'>
            <a class='link'>details</a>
            item 2
        </div>            
        <div class='details'>
            this is hidden
        </div>        
    </li>
</ul>

例 3詳細セクションには、壊れてはならない長い URL が含まれている場合があります。背景は URL をカバーするように拡大し、詳細リンクは右に移動して URL の末尾に揃えます。

<ul>
    <li class='open'>
        <div class='title'>
            <a class='link'>details</a>
            item 1
        </div>
        <div class='details'>
            <div class='url'>
                 all this should be on one line: www.a-long-url
            </div>

        </div>
    </li>
    <li>
        <div class='title'>
            <a class='link'>details</a>
            item 2
        </div>            
        <div class='details'>
            this is hidden
        </div>        
    </li>
</ul>

そしてCSS:

.details {
    display: none;
}

.open .details {
    display: block;
}

.link {
    text-decoration: underline;
    float: right;
}

.title {
    font-weight: bold;
    white-space:nowrap;
}

.url {
    white-space:nowrap;
}

ul {
    list-style-type: none;
    width: 15em;
}
li.open {
    background-color: #c8d8ff;
    border-radius: 2em;
}

li>div {
    padding: 1em;     
}
4

2 に答える 2

1

ul { width: 15em }パーツを削除するだけで動作します: http://jsfiddle.net/gzjwF/1/

于 2013-03-26T15:07:14.727 に答える
1

要素を設定display: inline-blockするだけです。li.openもちろん、すべてのリスト項目をそのコンテンツに合わせたい場合に限ります。実施例

あなたの質問であなたが何を意味したのかよくわかりませんが。

于 2013-03-26T15:09:22.950 に答える