27

ここにある Theming collapsible headers に非常に似たものが必要です:

http://jquerymobile.com/demos/1.2.0-alpha.1/docs/content/content-collapsible.html

JQueryを使わずにこれは可能ですか?

これはモバイル サイト用ですが、ページは常にオフラインになるため、jquery はあまり使用したくありません。また、jquery モバイルにカスタム スタイルを適用することは、純粋な CSS を使用して自分でスタイルを設定するよりもはるかに困難です。

4

4 に答える 4

103

使い方labelcheckbox入力

選択したアイテムを開いたままにして、切り替え可能にします。

.collapse{
  cursor: pointer;
  display: block;
  background: #cdf;
}
.collapse + input{
  display: none; /* hide the checkboxes */
}
.collapse + input + div{
  display:none;
}
.collapse + input:checked + div{
  display:block;
}
<label class="collapse" for="_1">Collapse 1</label>
<input id="_1" type="checkbox"> 
<div>Content 1</div>

<label class="collapse" for="_2">Collapse 2</label>
<input id="_2" type="checkbox">
<div>Content 2</div>

label名前付きradio入力の使用

チェックボックスと同様に、すでに開いているものを閉じるだけです。両方の入力で
使用します。name="c1" type="radio"

.collapse{
  cursor: pointer;
  display: block;
  background: #cdf;
}
.collapse + input{
  display: none; /* hide the checkboxes */
}
.collapse + input + div{
  display:none;
}
.collapse + input:checked + div{
  display:block;
}
<label class="collapse" for="_1">Collapse 1</label>
<input id="_1" type="radio" name="c1"> 
<div>Content 1</div>

<label class="collapse" for="_2">Collapse 2</label>
<input id="_2" type="radio" name="c1">
<div>Content 2</div>

tabindexと_:focus

入力と同様にradio、さらにキーを使用して状態をトリガーできTabます。
アコーディオンの外側をクリックすると、開いているすべてのアイテムが閉じます。

.collapse > a{
  background: #cdf;
  cursor: pointer;
  display: block;
}
.collapse:focus{
  outline: none;
}
.collapse > div{
  display: none;
}
.collapse:focus div{
  display: block; 
}
<div class="collapse" tabindex="1">
  <a>Collapse 1</a>
  <div>Content 1....</div>
</div>

<div class="collapse" tabindex="1">
  <a>Collapse 2</a>
  <div>Content 2....</div>
</div>

使用する:target

radio入力を使用するのと同様に、さらにTabキーを使用して操作できます

.collapse a{
  display: block;
  background: #cdf;
}
.collapse > div{
  display:none;
}
.collapse > div:target{
  display:block; 
}
<div class="collapse">
  <a href="#targ_1">Collapse 1</a>
  <div id="targ_1">Content 1....</div>
</div>

<div class="collapse">
  <a href="#targ_2">Collapse 2</a>
  <div id="targ_2">Content 2....</div>
</div>

<detail>タグとタグの使用<summary>(純粋な HTML)

HTML5 の詳細タグと概要タグを使用して、CSS スタイルや Javascript なしでこの問題を解決できます。これらのタグは Internet Explorer ではサポートされていないことに注意してください。

<details>
  <summary>Collapse 1</summary>
  <p>Content 1...</p>
</details>
<details>
  <summary>Collapse 2</summary>
  <p>Content 2...</p>
</details>

于 2013-10-03T23:35:46.970 に答える
9

a を使用して、CSSでonClickcheckboxシミュレート できます。

input[type=checkbox]:checked + p {
    display: none;
}

JSFiddle

隣接する兄弟セレクター

于 2013-10-03T23:31:47.990 に答える
3

私はロコの答えが好きで、いくつかの行を追加して、要素が非表示のときに右を指し、表示されたときに下を指す三角形を取得します。

.collapse { font-weight: bold; display: inline-block; }
.collapse + input:after { content: " \25b6"; display: inline-block; }
.collapse + input:checked:after { content: " \25bc"; display: inline-block; }
.collapse + input { display: inline-block; -webkit-appearance: none; -o-appearance:none; -moz-appearance:none;  }
.collapse + input + * { display: none; }
.collapse + input:checked + * { display: block; }
于 2015-11-14T06:47:09.543 に答える
2

もちろん!jQuery は、結局のところ、javascript を利用する単なるライブラリです。

document.getElementById を使用して問題の要素を取得し、それに応じて element.style.height で高さを変更できます。

elementToChange = document.getElementById('collapseableEl');
elementToChange.style.height = '100%';

それを、前後の切り替えに対応するきちんとした小さな関数にまとめると、解決策が得られます.

于 2013-10-03T23:37:30.043 に答える