国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
WebアニメーションAPIを使用してネイティブにします
要素のアニメーション効果
HTML構(gòu)造
アコーディオンクラス
アコーディオンをセットアップします
知らせ
要約します
ホームページ ウェブフロントエンド CSSチュートリアル WAAPIを使用して詳細(xì)要素をアニメーション化する方法

WAAPIを使用して詳細(xì)要素をアニメーション化する方法

Apr 01, 2025 am 04:14 AM

WebアニメーションAPIを使用してネイティブにします<details></details>要素のアニメーション効果

ウェブサイトで最も一般的なアニメーション要件の1つは、アコーディオンスタイルの拡張と閉鎖効果です。興味深いことに、jQueryのslideDown()関數(shù)は、2006年の最初のバージョンとして早くも存在していました。

この記事では、WebアニメーションAPIをネイティブとして使用する方法について説明します<details></details>アニメーション要素。

HTML構(gòu)造

まず、このアニメーションを?qū)g裝するために必要なHTMLタグ構(gòu)造を見(jiàn)てみましょう。

<details></details>要素には必要です<summary></summary>要素。<summary></summary>アコーディオンが折りたたまれているときに見(jiàn)えるものです。<details></details>他のすべての要素は、アコーディオン內(nèi)のコンテンツの一部です。アニメーション効果の実裝を容易にするために、それらを1つに包みます

真ん中。
<details>
  <summary>アコーディオンタイトル</summary>
  <div class="content">
    <p>
      lorem ipsum dolor sit amet、condsetur apisicing elit。 Modi Unde、ex remは、autem aliquid veniam quis tomeibus rupudiandae illo、Nostrum、pariatur quae! Animi Modi Dignissimos Corurdi Placeeat boluptatumで!
    </p>
  </div>
</details>

アコーディオンクラス

コードの再利用性を向上させるには、アコーディオンクラスを作成する必要があります。これにより、すべてを使用できます<details></details>要素にnew Accordion()を呼び出します。

クラスアコーディオン{
  コンストラクター(el){}
  onclick(e){}
  縮む() {}
  開(kāi)ける() {}
  拡大する() {}
  onanimationfinish(open){}
}

constructor()

コンストラクターは、各アコーディオンに必要なデータを保存するために使用されます。

コンストラクター(el){
  this.el = el;
  this.summary = el.queryselector( 'summary');
  this.content = el.queryselector( '。コンテンツ');
  this.Animation = null;
  this.isslosing = false;
  this.isexpanding = false;
  this.summary.addeventlistener( 'click'、(e)=> this.onclick(e));
}

onClick()

onClick()関數(shù)では、要素がアニメーション化されているかどうかを確認(rèn)します(閉じるか展開(kāi))。要素がアニメーション化されている間にユーザーがアコーディオンをクリックした場(chǎng)合、このチェックを行う必要があります。クリック速度が速すぎる場(chǎng)合、アコーディオンが完全に拡張されて完全に閉じてジャンプすることを望まない。<details></details>要素が開(kāi)かれると、ブラウザはそれにopenプロパティを追加します。 this.el.openを使用して、このプロパティの価値を取得できます。

 onclick(e){
  E.PreventDefault();
  this.el.style.overflow = 'hidden';
  if(this.isslosing ||!this.el.open){
    this.open();
  } else if(this.isexpanding || this.el.open){
    this.shrink();
  }
}

shrink()

このshrink()関數(shù)は、WAAPIの.animate()関數(shù)を使用します。詳細(xì)については、MDNドキュメントを読むことができます。 WAAPIはCSS @keyframesに非常に似ています。アニメーションのキーフレームの開(kāi)始と終了を定義する必要があります。この例では、2つのキーフレームのみが必要です。1つ目は要素の現(xiàn)在の高さで、2つ目はアコーディオンが閉じた後の高さです。現(xiàn)在の高さは、 startHeight変數(shù)に保存されます。近い高さは、 endHeight変數(shù)に保存され、<summary></summary>身長(zhǎng)。

縮む() {
  this.isclosing = true;
  const startheight = `$ {this.el.offsetheight} px`;
  const endheight = `$ {this.summary.offsetheight} px`;
  if(this.Animation){
    this.animation.cancel();
  }
  this.Animation = this.el.anime({{
    高さ:[startheight、endheight]
  }、{
    期間:400、
    使いやすさ:「簡(jiǎn)単」
  });
  this.animation.onfinish =()=> this.onimationfinish(false);
  this.animation.oncancel =()=> this.isclosing = false;
}

open()

open()関數(shù)は、アコーディオンを拡張したいときに呼び出されます?,F(xiàn)在、この関數(shù)はアコーディオンアニメーションを制御していません。最初に、計(jì)算します<details></details>要素の高さと、インラインスタイルを使用して要素に適用します。完了したら、 openプロパティを設(shè)定してコンテンツを表示することができますが、 overflow: hiddenと固定された高さを設(shè)定しているため、コンテンツはまだ隠されています。次に、次のフレームがexpand()関數(shù)を呼び出し、要素のアニメーションを作成するのを待ちます。

開(kāi)ける() {
  this.el.style.height = `$ {this.el.offseTheight} px`;
  this.el.open = true;
  window.requestanimationframe(()=> this.expand());
}

expand()

expand()関數(shù)はshrink()関數(shù)に似ていますが、現(xiàn)在の高さから近い高さまでではなく、要素の高さから端の高さまでアニメーション化します。端の高さはに等しい<summary></summary>高さと內(nèi)部コンテンツの高さ。

拡大する() {
  this.isexpanding = true;
  const startheight = `$ {this.el.offsetheight} px`;
  const endheight = `$ {this.summary.offseetheight this.content.offseeth} px`;
  if(this.Animation){
    this.animation.cancel();
  }
  this.Animation = this.el.anime({{
    高さ:[startheight、endheight]
  }、{
    期間:400、
    使いやすさ:「簡(jiǎn)単」
  });
  this.animation.onfinish =()=> this.onimationfinish(true);
  this.animation.oncancel =()=> thisexpanding = false;
}

onAnimationFinish()

この関數(shù)は、アニメーションが崩壊または拡張されたときに呼び出されます。ご覧のとおり、アコーディオンがオンになったときにtrueに設(shè)定されているパラメーターがopenいるため、ブラウザでは処理されなくなったため、 open HTML屬性を要素に設(shè)定できます。

 onanimationfinish(open){
  this.el.open = open;
  this.Animation = null;
  this.isslosing = false;
  this.isexpanding = false;
  this.el.style.height = this.el.style.overflow = '';
}

アコーディオンをセットアップします

ほとんどのコードを行いました!

殘っているのは、それぞれのHTMLだけです<details></details>要素はアコーディオンクラスを使用します。これを行うには、使用します<details></details>タグにquerySelectorAllを使用し、各要素の新しいAccordionインスタンスを作成します。

 document.QuerySelectorall( '詳細(xì)')。foreach((el)=> {
  新しいアコーディオン(el);
});

知らせ

近い高さと開(kāi)いた高さを計(jì)算するには、確実にする必要があります<summary></summary>常にコンテンツと同じ高さを持っています。

たとえば、試してはいけません<summary></summary>電源を入れたときにパディングを追加します。これにより、アニメーションプロセス中にジャンプが発生する可能性があります。內(nèi)部コンテンツにも同じことが言えます。固定された高さが必要です。アニメーションの開(kāi)口部中に高さの変化があるコンテンツを避ける必要があります。

また、しないでください<summary></summary>高さキーフレームを計(jì)算しないため、コンテンツ間にマージンを追加します。代わりに、コンテンツにパディングを直接使用して、間隔を追加します。

要約します

それだけです、私たちはライブラリを必要とせずにJavaScriptを使用して美しいアコーディオンアニメーションを作成しました!

WAAPIを使用して詳細(xì)要素をアニメーション化する方法

Image Path /uploads/20250331/174338369667e9ec90190a3.jpg 、実際の畫(huà)像パスに置き換える必要があることに注意してください。畫(huà)像ファイルにアクセスまたは処理できないため、元の形式のみを保持できます。

以上がWAAPIを使用して詳細(xì)要素をアニメーション化する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

一部のページにのみCSSを含めるにはどうすればよいですか? 一部のページにのみCSSを含めるにはどうすればよいですか? Jun 11, 2025 am 12:01 AM

特定のページにCSSを選択的に含める方法は3つあります。1。インラインCSS。頻繁にアクセスされない、または一意のスタイルが必要なページに適しています。 2。柔軟性が必要な狀況に適したJavaScript條件を使用して、外部CSSファイルをロードします。 3。サーバー側(cè)に封じ込められ、サーバー側(cè)の言語(yǔ)を使用したシナリオに適しています。このアプローチは、ウェブサイトのパフォーマンスと保守性を最適化できますが、モジュール性とパフォーマンスのバランスが必要です。

Flexbox vsグリッド:CSSレイアウトの重要な違いを理解する Flexbox vsグリッド:CSSレイアウトの重要な違いを理解する Jun 10, 2025 am 12:03 AM

flexBoxisidealforone-dimensionAllayouts、whilegridsuitStwo-dimension、complexLayouts.useflexboxforAliingemsinasinginasindgridgridgridgridgridgridgridgrololoveroversandcolumnsintigns。

HTMLポップオーバーを使用して自動(dòng)閉鎖通知を作成します HTMLポップオーバーを使用して自動(dòng)閉鎖通知を作成します Jun 10, 2025 am 09:45 AM

HTMLポップオーバー屬性は、要素をボタンまたはJavaScriptで開(kāi)閉できるトップレイヤー要素に変換します。ポップオーバーは多くの方法で卻下することができますが、それらを自動(dòng)するオプションはありません。 Preethiにはあなたができるテクニックがあります

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負(fù)荷を組み合わせ、過(guò)度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお?jiǎng)幛幛筏蓼埂?/p>

Figmaでロットを使用する方法 Figmaでロットを使用する方法 Jun 14, 2025 am 10:17 AM

次のチュートリアルでは、FigmaでLottieアニメーションを作成する方法を紹介します。 2つのカラフルなデザインを使用して、Figmaでアニメーション化する方法を説明し、FigmaからL(zhǎng)ottie Animationsに移行する方法を示します。必要なのは無(wú)料の図だけです

境界の破壊:(s)CSSでタングラムパズルを構(gòu)築します 境界の破壊:(s)CSSでタングラムパズルを構(gòu)築します Jun 13, 2025 am 11:33 AM

少なくとも低レベルのロジックとパズルの動(dòng)作に関しては、SASSがJavaScriptを置き換えることができることが判明しました。マップ、ミックス、機(jī)能、そしてたくさんの數(shù)學(xué)だけで、私たちはタングラムのパズルを生き生きとさせることができました。

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

私のCSSは小文字でなければなりませんか? 私のCSSは小文字でなければなりませんか? Jun 19, 2025 am 12:29 AM

いいえ、CSSDOESNOTHAVETOBEINLOWERCASE。

See all articles