2012-07-16 14 views

答えて

22

これは自動的に高さを調整し、私のソリューションです:http://jsfiddle.net/9ccjE/

私が投稿r3bel回避策を使用:Can you use CSS3 to transition from height:0 to the variable height of content?

+7

'.measuringWrap'は不要です。 '.growDiv'のscrollHeightプロパティを使うことができます。http://jsfiddle.net/9ccjE/293/ – Guria

+0

三項演算子を使って短絡コードを作成することもできます:http://jsfiddle.net/9ccjE/838/ – Robbendebiene

8

これは動作するはずです、あまりにもしばらく試してみました..:D

css3 animation jsfiddle

+0

良いですが、JavaScriptの高さを設定しないようにするにはどうすればよいですか?より多くのクラス内のコンテンツの長さは変化します。 – Felix

+3

これはatmではありません(あなたはアニメーションの権利を持っていたかったので、ここ[here](http://stackoverflow.com/a/3512194/1517380))[ここで説明した高価な回避策]を除いて(http://stackoverflow.com/questions/3149419/can-you-use-css3-to-transition-from-height0-to-the-variable-height-of-content ) – r3bel

+0

私はあなたのjsfiddleをもう一度編集し、動的高さの "回避策"を追加しましたが、ドロップダウンの高さがjavascriptで変わるたびにドロップダウンの高さを取得する必要があります:[jsfiddle](http://jsfiddle.net/Bq6eK/217 /)。私はこれがすべてのブラウザで正しく動作することを保証するものではありません。D – r3bel

2

http://jsfiddle.net/Bq6eK/215/

私は私が書いた、このソリューションのためのあなたのコードを変更しませんでした代わりに自分自身。私の解決策はあなたの求めるものではありませんが、既存の知識でそれを構築することができます。私もコードにコメントしたので、あなたは正確に私が変更に何をしているのか知っています。

"JavaScriptで高さを設定しない"という解決策として、私は 'maxHeight'をJS関数のパラメータtoggleHeightとしました。今度は、拡張可能なクラスのdivごとにHTMLで設定できます。

私はフロントエンドの言語に精通していないし、アニメーションが始まる前に最初に[表示/非表示]ボタンを2回クリックする必要があるという問題があります。私はそれが焦点の問題だと思う。

私の解決策の他の問題は、divをクリックしてドラッグするだけで表示/非表示ボタンを押さずに隠れたテキストが実際に何であるかを知ることができるということです。目に見える空間へ。

私がやったことの上に次のステップの提案は、表示/非表示ボタンが動的に変化するようにすることです。 JSでテキストを表示したり隠したりすることについて既に知っていることを使って、そのことを行う方法を理解することができると思います。

+0

私はマイナーな編集を行った:http://jsfiddle.net/Bq6eK/215/。 'onclick =" ... "'はfalseを返すべきであり、高さはCSSではなく要素のために直接設定されるべきです。 'elem.style'には要素に直接設定されたスタイルだけが含まれていて、効果的なスタイルは含まれていないため、ボックスを開くには2回クリックする必要があります。 – kay

+0

ありがとう!今、私は分かる。 – ayang9

0

ここでは、JSをまったく使用しないソリューションです。代わりにcheckboxesを使用します。

あなたのCSSにこれを追加することで、チェックボックスを非表示にすることができます:

.container input{ 
    display: none; 
} 

そして、それはbuttonのように見えるようにいくつかのスタイルを追加します。

Here's the source code that I modded.

+2

解決策は、テキストの量に応じて高さを適用しません。 CSSでは、チェックされたdivの高さを決める必要があります:.ac-container input:checked〜article.ac-small { \t高さ:140px; }「コンテンツに応じて高さを適用するソリューションが必要です。 – Felix

0

OMGが、私は時間のためにこれに対する簡単な解決策を見つけることを試みました。コードはシンプルだとわかっていましたが、私が望むものは誰にも与えられませんでした。最終的にいくつかのサンプルコードを手に入れて、誰かがJQueryを必要としない単純なものにしました。シンプルなjavascriptとcssとhtml。アニメーションを機能させるには、高さと幅を設定するか、アニメーションが機能しないようにする必要があります。それが難しい方法を見つけました。

<script> 
     function dostuff() { 
      if (document.getElementById('MyBox').style.height == "0px") { 

       document.getElementById('MyBox').setAttribute("style", "background-color: #45CEE0; height: 200px; width: 200px; transition: all 2s ease;"); 
      } 
      else { 
       document.getElementById('MyBox').setAttribute("style", "background-color: #45CEE0; height: 0px; width: 0px; transition: all 2s ease;"); 
      } 
     } 
    </script> 
    <div id="MyBox" style="height: 0px; width: 0px;"> 
    </div> 

    <input type="button" id="buttontest" onclick="dostuff()" value="Click Me"> 
関連する問題