ZurbFoundationでタブをうまくフェードインする設定があるかどうかを調べようとしています。
そうでない場合、誰かがこれを手動で達成するための最良の方法を知っていますか?
jQueryで何をターゲットにするか?
ありがとう。
ZurbFoundationでタブをうまくフェードインする設定があるかどうかを調べようとしています。
そうでない場合、誰かがこれを手動で達成するための最良の方法を知っていますか?
jQueryで何をターゲットにするか?
ありがとう。
Zurb v5とこの投稿を使用して、 foundation.cssに次のようにカスタマイズされたパーツを追加することでフェードタブを実現できました。
.tabs-content {
*zoom: 1;
margin-bottom: 1.5rem;
/* Customized */
display:block:important!
opacity: 0;
}
/* Customized */
@-webkit-keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.tabs-content:before, .tabs-content:after {
content: " ";
display: table; }
.tabs-content:after {
clear: both; }
.tabs-content > .content {
display: none;
float: left;
padding: 0.9375rem 0; }
.tabs-content > .content.active {
/* Customized */
-webkit-animation: fadeIn 1s;
animation: fadeIn 1s;
opacity: 1;
display: block; }
u.css("display","block").addClass("active")
このコード行をu.fadeIn('slow').addClass("active")
foundation.min.jsの49行目に置き換えます
非圧縮のjsを使用している場合
NB:非圧縮のjsをテストしていません
このコード行$content.css('display', 'block').addClass('active');
を$content.fadeIn('slow').addClass('active');
jquery.foundation.tabs.jsの36行目に置き換えます
Brock Hensleyの回答を使用して、独自のバージョンを作成しました。
注目すべき違い:
.content-wrapper
全体ではなくフェードインとフェードアウトを.content
行っているので、フェードイベント中でも垂直ボタンを使用できます。@include keyframes(fadeIn) {
from { opacity: 0; }
to { opacity: 1; }
}
.tabs-content {
> {
.content-wrapper {
display: none;
opacity: 0;
}
.content.active .content-wrapper {
display: block;
animation: fadeIn .4s;
opacity: 1;
}
}
}
私のcss出力は次のようになります:
@-webkit-keyframes fadeIn {
from {
opacity: 0; }
to {
opacity: 1; } }
@keyframes fadeIn {
from {
opacity: 0; }
to {
opacity: 1; } }
.tabs-content > .content-wrapper {
display: none;
opacity: 0; }
.tabs-content > .content.active .content-wrapper {
display: block;
-webkit-animation: fadeIn .4s;
animation: fadeIn .4s;
opacity: 1; }
誰かがファンデーション6でこの問題に遭遇した場合、私はフレームワークのコアを変更することの大ファンではないので、ここに私のjQueryソリューションがあります。
// hack for fondation tabs animation
$(document).on('change.zf.tabs', function(e) {
var activeTab = $($(e.target).find('.is-active a').attr('href'));
activeTab.css('display', 'none').fadeIn();
});
注:is-active
クラスは、指定したクラスに置き換える必要があります。
私はFoundation-5.5.2を使用しており、tetteyの回答に基づいて、タブのフェードインを実現するために次のことを行いました。
タブコンポーネントを調べたところ、次foundation.min.js
のコードが見つかります。
u.siblings().removeClass(p.active_class).attr({"aria-hidden":"true",tabindex:-1}),u.addClass(p.active_class)
tetteyの答えのように編集すると、次のようになります。
u.siblings().removeClass(p.active_class).attr({"aria-hidden":"true",tabindex:-1}),u.fadeIn('slow').addClass(p.active_class)
問題は、フェードアニメーションが最初に各タブを開いたときにのみ機能し、2回目にタブを開いたときにフェードアニメーションが取得されないことです。非アクティブ化するタブをフェードアウトする必要があることを解決するには、次にフェードインしたときに次のようなアニメーションを取得します。
u.siblings().removeClass(p.active_class).fadeOut('fast').attr({"aria-hidden":"true",tabindex:-1}),u.fadeIn('slow').addClass(p.active_class)
.fadeOut('fast')
次にそのタブをクリックして開くときに再びフェードインできるように、をフェードアウトすることに注意してください。これはjQuery.fadeIn
、プロパティをアクティブにopacity
して0から1に増やすために発生します。要素をフェードアウトしないと、不透明度は前回残したままになるため、0から1に増えることはありませんが、1と直接表示されます。アニメーションは表示されません。不透明度を0に設定しただけでは.css('opacity', 0)
、不透明度プロパティがアクティブなままになるため、どちらも機能しません。jQueryは、フェードアニメーション中にのみ不透明度プロパティをアクティブ化および非アクティブ化します。プロパティをアクティブにしたままにすると、プロパティは。のままになりますopacity: 0
。
ZeeCoderとBrockHensleyの答えを使用して、これが私の見解です。私はcontent-wrapper
クラスを使用していないため、ZeeCoderが彼を追加してから、Foundationの構文が変更されている必要があります。また、古いバージョンのFoundationでも機能する可能性があるため、彼を編集するのは適切ではありませんでした。5.5.2を使用しています。
ZeeCoderと同様に、私はSCSSとgulp-autoprefixerを使用しています。これをプロジェクトのscssファイルに追加します。
@keyframes fade-in {
0% { opacity: 0; }
100% { opacity: 1; }
}
.tabs-content {
> .content {
animation: fade-in 220ms;
}
}
このアプローチの制限は、新しいアクティブなタブでフェードインする前に現在のアクティブなタブをフェードアウトしないことです。それは私が扱いたいよりも多くの複雑さを追加します。アクティブなクラスを削除/追加するJavaScriptをオーバーロードしdisplay: none
、アニメーション時間に一致する遅延の後に追加されることを確認する必要があります。
Foundation6ソリューションをBrocksコードから更新しました。
.tabs-panel {
*zoom: 1;
margin-bottom: 1.5rem;
/* Customized */
display:block important!;
opacity: 0;
}
/* Customized */
@-webkit-keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.tabs-panel:before, .tabs-panel:after {
content: " ";
display: table; }
.tabs-panel:after {
clear: both; }
.tabs-panel > .content {
display: none;
float: left;
padding: 0.9375rem 0; }
.tabs-panel.is-active {
-webkit-animation: fadeIn 1s;
animation: fadeIn 1s;
opacity: 1;
display: block; }
Foundation 6用に少し更新および簡略化されました。これにより、必要な場所に移動できます。状況に応じて、アニメーションプロパティのプレフィックスを付ける必要があります。
.tabs-panel {
opacity: 0;
}
.tabs-panel.is-active {
animation: fade-in 0.5s;
opacity: 1;
}
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}