Case Study: PLGA Microsphere Formulation Development for a 3-Month Depot Antipsychotic

Case Study: PLGA Microsphere Formulation Development for a 3-Month Depot Antipsychotic
PLGA Microsphere Formulation Development — Case Study Redesign :root{ –ink:#101d2b; –paper:#f6f5f1; –panel:#ffffff; –teal:#1b6e71; –teal-dim:#e4eeed; –amber:#b8802e; –amber-dim:#f4e9da; –slate:#57626e; –line:#e1ddd2; –line-dark:#28394a; } *{box-sizing:border-box; margin:0; padding:0;} html{scroll-behavior:smooth;} body{ background:var(–paper); color:var(–ink); font-family:’Inter’,sans-serif; line-height:1.65; -webkit-font-smoothing:antialiased; } ::selection{background:var(–teal); color:#fff;} a{color:var(–teal);} .eyebrow{ font-family:’IBM Plex Mono’,monospace; font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; color:var(–teal); display:flex; align-items:center; gap:0.6rem; } .eyebrow::before{ content:””; width:22px; height:1px; background:var(–teal); } h1,h2,h3{ font-family:’Fraunces’,serif; font-weight:600; color:var(–ink); letter-spacing:-0.01em; } /* ———- reveal-on-scroll ———- */ .reveal{opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease;} .reveal.in{opacity:1; transform:none;} @media (prefers-reduced-motion: reduce){ .reveal{opacity:1; transform:none; transition:none;} } /* ———- top bar ———- */ .topbar{ position:sticky; top:0; z-index:50; background:rgba(246,245,241,0.88); backdrop-filter:blur(8px); border-bottom:1px solid var(–line); padding:14px 40px; display:flex; align-items:center; justify-content:space-between; } .topbar .brand{ font-family:’Fraunces’,serif; font-weight:600; font-size:1.05rem; color:var(–ink); display:flex; align-items:center; gap:10px; } .brand .mark{ width:20px; height:20px; border-radius:50%; background:conic-gradient(from 220deg, var(–teal), var(–amber), var(–teal)); } .topbar .meta{ font-family:’IBM Plex Mono’,monospace; font-size:0.72rem; color:var(–slate); display:flex; gap:18px; } @media (max-width:720px){ .topbar .meta{display:none;} .topbar{padding:14px 20px;} } /* ———- hero ———- */ .hero{ position:relative; padding:96px 40px 70px; max-width:1180px; margin:0 auto; display:grid; grid-template-columns: 1.1fr 0.9fr; gap:56px; align-items:center; } @media (max-width:900px){ .hero{grid-template-columns:1fr; padding:56px 20px 40px;} } .hero h1{ font-size:clamp(2.1rem, 4vw, 3.05rem); line-height:1.08; margin:18px 0 20px; } .hero h1 em{ font-style:normal; color:var(–teal); } .hero p.lede{ font-size:1.05rem; color:var(–slate); max-width:52ch; } .byline{ margin-top:28px; display:flex; align-items:center; gap:12px; font-family:’IBM Plex Mono’,monospace; font-size:0.78rem; color:var(–slate); } .byline .dot{width:5px;height:5px;border-radius:50%;background:var(–line);} .byline .avatar{ width:34px; height:34px; border-radius:50%; background:var(–teal-dim); border:1px solid var(–teal); display:flex; align-items:center; justify-content:center; font-family:’Fraunces’,serif; font-weight:600; color:var(–teal); font-size:0.85rem; } /* signature: release-curve chart */ .curve-card{ background:var(–ink); border-radius:18px; padding:26px 26px 20px; color:#e9ede9; position:relative; overflow:hidden; } .curve-card .curve-label{ font-family:’IBM Plex Mono’,monospace; font-size:0.7rem; letter-spacing:0.08em; color:#8fa3ac; text-transform:uppercase; margin-bottom:6px; } .curve-card h3{ color:#fff; font-size:1.05rem; margin-bottom:14px; font-weight:500; } .curve-card svg{width:100%; height:auto; display:block;} #release-path{ stroke-dasharray:900; stroke-dashoffset:900; animation:draw 2.2s ease forwards 0.4s; } @keyframes draw{ to{stroke-dashoffset:0;} } @media (prefers-reduced-motion: reduce){ #release-path{stroke-dashoffset:0; animation:none;} } .curve-phases{ display:flex; justify-content:space-between; margin-top:10px; font-family:’IBM Plex Mono’,monospace; font-size:0.66rem; color:#8fa3ac; } .curve-stats{ display:flex; gap:22px; margin-top:18px; padding-top:16px; border-top:1px solid #253544; } .curve-stats div{flex:1;} .curve-stats .num{font-family:’Fraunces’,serif; font-size:1.5rem; color:#fff; font-weight:600;} .curve-stats .lab{font-family:’IBM Plex Mono’,monospace; font-size:0.64rem; color:#8fa3ac; text-transform:uppercase; letter-spacing:.05em;} /* ———- stat strip ———- */ .stat-strip{ border-top:1px solid var(–line); border-bottom:1px solid var(–line); background:var(–panel); } .stat-strip-inner{ max-width:1180px; margin:0 auto; padding:26px 40px; display:grid; grid-template-columns:repeat(4,1fr); gap:20px; } @media (max-width:820px){ .stat-strip-inner{grid-template-columns:repeat(2,1fr);} } .stat{ padding-right:20px; border-right:1px solid var(–line); } .stat:last-child{border-right:none;} .stat .big{font-family:’Fraunces’,serif; font-size:1.9rem; color:var(–teal); font-weight:600;} .stat .cap{font-size:0.82rem; color:var(–slate); margin-top:4px;} /* ———- layout: rail + content ———- */ .layout{ max-width:1180px; margin:0 auto; padding:64px 40px 100px; display:grid; grid-template-columns:230px 1fr; gap:60px; align-items:start; } @media (max-width:900px){ .layout{grid-template-columns:1fr; padding:48px 20px 70px;} .rail{display:none;} } .rail{ position:sticky; top:80px; } .rail .rail-label{ font-family:’IBM Plex Mono’,monospace; font-size:0.68rem; text-transform:uppercase; letter-spacing:.1em; color:var(–slate); margin-bottom:14px; } .rail ol{ list-style:none; display:flex; flex-direction:column; gap:2px; } .rail li a{ display:flex; gap:10px; align-items:baseline; text-decoration:none; color:var(–slate); font-size:0.85rem; padding:8px 10px; border-radius:8px; transition:background .2s, color .2s; border-left:2px solid transparent; } .rail li a:hover{ background:var(–teal-dim); color:var(–ink); } .rail li a .n{ font-family:’IBM Plex Mono’,monospace; color:var(–teal); font-size:0.72rem; flex-shrink:0; } .rail li a.active{ background:var(–teal-dim); color:var(–ink); border-left-color:var(–teal); font-weight:600; } /* ———- section blocks ———- */ .section{ margin-bottom:74px; scroll-margin-top:90px; } .section .kicker{ font-family:’IBM Plex Mono’,monospace; color:var(–teal); font-size:0.78rem; letter-spacing:.08em; } .section h2{ font-size:1.65rem; margin:8px 0 20px; line-height:1.25; } .section p{ color:#2c3944; margin-bottom:16px; max-width:74ch; } .section p strong{ color:var(–ink); } .lead-para{ font-size:1.08rem; color:var(–ink); padding-left:18px; border-left:2px solid var(–amber); } /* table */ .data-table-wrap{ margin:26px 0 30px; border:1px solid var(–line); border-radius:12px; overflow:hidden; background:var(–panel); } table{ width:100%; border-collapse:collapse; font-size:0.86rem; } thead th{ text-align:left; padding:12px 16px; background:var(–ink); color:#e9ede9; font-family:’IBM Plex Mono’,monospace; font-size:0.7rem; text-transform:uppercase; letter-spacing:.05em; font-weight:500; } tbody td{ padding:12px 16px; border-top:1px solid var(–line); color:#2c3944; font-family:’IBM Plex Mono’,monospace; font-size:0.82rem; } tbody tr:nth-child(even){ background:#fbfaf7; } tbody tr:hover{ background:var(–teal-dim); } /* callout */ .callout{ background:var(–amber-dim); border:1px solid #e6cfa4; border-radius:12px; padding:20px 22px; margin:24px 0; display:flex; gap:16px; } .callout .icon{ font-family:’IBM Plex Mono’,monospace; color:var(–amber); font-weight:600; font-size:0.9rem; flex-shrink:0; width:28px; height:28px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; border:1px solid #e6cfa4; } .callout p{ margin:0; font-size:0.92rem; color:#4a3a1f; } /* CPP badges row */ .badge-row{ display:flex; flex-wrap:wrap; gap:10px; margin:22px 0; } .badge{ font-family:’IBM Plex Mono’,monospace; font-size:0.72rem; color:var(–teal); border:1px solid var(–teal); border-radius:20px; padding:6px 14px; background:var(–teal-dim); } /* accordion (FAQ) */ .faq-item{ border-bottom:1px solid var(–line); } .faq-q{ width:100%; text-align:left; background:none; border:none; cursor:pointer; padding:18px 4px; display:flex; justify-content:space-between; align-items:center; font-family:’Fraunces’,serif; font-size:1rem; color:var(–ink); font-weight:500; } .faq-q .plus{ font-family:’IBM Plex Mono’,monospace; color:var(–teal); font-size:1.1rem; transition:transform .3s; } .faq-item.open .plus{ transform:rotate(45deg); } .faq-a{ max-height:0; overflow:hidden; transition:max-height .4s ease; } .faq-a p{ padding:0 4px 18px; color:var(–slate); font-size:0.92rem; } /* CTA */ .cta-block{ background:var(–ink); border-radius:20px; padding:52px 48px; color:#e9ede9; display:flex; justify-content:space-between; align-items:center; gap:30px; max-width:1180px; margin:0 auto 100px; } @media (max-width:720px){ .cta-block{flex-direction:column; align-items:flex-start; padding:36px 26px;} } .cta-block h3{ color:#fff; font-size:1.5rem; max-width:32ch; } .cta-block p{ color:#a9b6bd; margin-top:8px; max-width:40ch; font-size:0.92rem;} .cta-btn{ font-family:’IBM Plex Mono’,monospace; font-size:0.8rem; letter-spacing:.04em; background:var(–teal); color:#fff; padding:14px 26px; border-radius:30px; text-decoration:none; white-space:nowrap; transition:background .2s, transform .2s; display:inline-flex; align-items:center; gap:8px; } .cta-btn:hover{ background:#155457; transform:translateY(-2px); } footer{ border-top:1px solid var(–line); padding:30px 40px; text-align:center; font-family:’IBM Plex Mono’,monospace; font-size:0.72rem; color:var(–slate); } /* method grid (section 8) */ .method-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); gap:14px; margin:24px 0 8px; } .method-card{ background:var(–panel); border:1px solid var(–line); border-radius:12px; padding:16px 18px; transition:border-color .2s, transform .2s; } .method-card:hover{ border-color:var(–teal); transform:translateY(-3px); } .method-card .abbr{ font-family:’IBM Plex Mono’,monospace; color:var(–teal); font-size:0.72rem; letter-spacing:.06em; } .method-card h4{ font-family:’Fraunces’,serif; font-size:0.95rem; font-weight:600; margin:6px 0 6px; color:var(–ink); } .method-card p{ font-size:0.8rem; color:var(–slate); margin:0; max-width:none; } /* numbered corrective-action list */ .fix-list{ list-style:none; display:flex; flex-direction:column; gap:14px; margin:22px 0; counter-reset:fixnum; } .fix-list li{ display:flex; gap:16px; padding:16px 18px; background:var(–panel); border:1px solid var(–line); border-radius:12px; align-items:flex-start; } .fix-list li::before{ counter-increment:fixnum; content:counter(fixnum); font-family:’Fraunces’,serif; font-weight:600; color:var(–teal); background:var(–teal-dim); width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:0.9rem; } .fix-list li p{ margin:0; font-size:0.92rem; color:#2c3944; } .fix-list li strong{ color:var(–ink); } /* takeaway checklist */ .check-list{ list-style:none; display:flex; flex-direction:column; gap:12px; margin:22px 0; } .check-list li{ display:flex; gap:12px; align-items:flex-start; font-size:0.94rem; color:#2c3944; } .check-list li .tick{ flex-shrink:0; width:20px; height:20px; border-radius:6px; background:var(–teal); color:#fff; font-family:’IBM Plex Mono’,monospace; font-size:0.7rem; display:flex; align-items:center; justify-content:center; margin-top:2px; } .check-list li strong{ color:var(–ink); } /* references */ .ref-list{ list-style:none; display:flex; flex-direction:column; gap:12px; margin-top:20px; counter-reset:refnum; } .ref-list li{ display:flex; gap:14px; font-size:0.82rem; color:var(–slate); padding-bottom:12px; border-bottom:1px solid var(–line); } .ref-list li::before{ counter-increment:refnum; content:”[” counter(refnum) “]”; font-family:’IBM Plex Mono’,monospace; color:var(–teal); flex-shrink:0; } .ref-list li a{ color:var(–slate); text-decoration:underline; text-decoration-color:var(–line); } .ref-list li a:hover{ color:var(–teal); text-decoration-color:var(–teal); } /* author card */ .author-card{ display:flex; gap:20px; align-items:flex-start; background:var(–panel); border:1px solid var(–line); border-radius:16px; padding:26px; margin:0 auto 60px; max-width:1180px; } @media (max-width:720px){ .author-card{ margin-left:20px; margin-right:20px; flex-direction:column; } } .author-card .avatar-lg{ width:56px; height:56px; border-radius:50%; background:var(–teal-dim); border:1px solid var(–teal); display:flex; align-items:center; justify-content:center; font-family:’Fraunces’,serif; font-weight:600; color:var(–teal); font-size:1.2rem; flex-shrink:0; } .author-card h4{ font-family:’Fraunces’,serif; font-size:1.05rem; margin-bottom:6px; } .author-card p{ font-size:0.86rem; color:var(–slate); max-width:70ch; margin:0; } .author-card .role{ font-family:’IBM Plex Mono’,monospace; font-size:0.68rem; color:var(–teal); text-transform:uppercase; letter-spacing:.06em; margin-bottom:8px; display:block; } .note{ max-width:1180px; margin:0 auto 40px; padding:0 40px; } @media (max-width:900px){ .note{padding:0 20px;} } .note-box{ background:var(–teal-dim); border:1px dashed var(–teal); border-radius:12px; padding:16px 20px; font-size:0.85rem; color:#134b4d; }
ResolveMass Laboratories
CASE STUDY EST. READ 23 MIN PLGA / LAI
Case Study — Long-Acting Injectables

PLGA microsphere formulation for a 3-month depot antipsychotic

How a formulation and analytical team pushed release from the standard 4-week interval out to 90 days — polymer blending, process control, sterilization strategy, and the data that proved it worked.

Confirmed in vitro release

Three-phase release profile, Day 0 → 90

BURST (0–3d) LAG (3–30d) EROSION-CONTROLLED (30–90d)
85%+
Encapsulation eff.
90 d
Target release window
2–8°C
Storage condition
5
PLGA grades screened for the blend strategy
10L
Pilot-scale batch bridged from 1L bench
6
Analytical techniques run in parallel
65→85%
Encapsulation efficiency after root-cause fixes
This is a redesign concept for one article, built to show the block system in action — hero, stat strip, sticky section index, styled data tables, callouts, and an FAQ accordion. The same components extend cleanly to Sections 2, 4, 5, 7–10 and the reference list once you’re happy with the direction.
01 / 10

Why is PLGA the polymer of choice for long-acting antipsychotics?

PLGA is preferred because it is biodegradable, biocompatible, and its degradation rate can be tuned by adjusting the lactide-to-glycolide ratio, molecular weight, and end-group chemistry — precisely what makes 90-day release achievable.

No single “off the shelf” PLGA grade is typically sufficient for a 3-month target — most programs rely on blends or custom compositions. Three structural variables drive degradation and release rate: lactide:glycolide ratio, molecular weight, and end-group chemistry.

Lactide:Glycolide ratio Molecular weight End-group chemistry
PLGA GradeL:G RatioMW (kDa)End GroupDegradation
RG 502H50:507–17Acid1–2 mo
RG 50350:5024–38Ester2–3 mo
RG 50450:5038–54Ester3–4 mo
RG 752S75:254–15Ester4–5 mo
RG 858S85:15190–240Ester5–6 mo
i

RG 503 alone tailed off before Day 90 for a meaningful fraction of the dose; RG 752S alone overshot the target window. The resolution: blend a majority fraction of 50:50 ester-capped polymer with a smaller fraction of 75:25 polymer.

03 / 10

What manufacturing process was used to build the microspheres?

The microspheres were produced using an oil-in-water single-emulsion solvent evaporation process, chosen for its scalability, regulatory precedent, and compatibility with the antipsychotic’s moderate lipophilicity.

Process parameterEffect when increasedFormulation impact
Stirring speedSmaller, narrower particle sizeFaster release, higher burst
PVA concentrationMore stable emulsionUniform morphology
Solvent evaporation rateHigher internal porosityIncreased burst release
Phase ratioLower encapsulation at high ratiosBalances yield vs. loading
Hardening tempFaster removal, porous shellAffects burst + erosion rate

Small adjustments to stirring speed alone shifted mean particle size from roughly 40 µm to over 90 µm across trial batches — treated as a critical process parameter and locked early.

06 / 10

How was the 90-day release profile confirmed?

A dual-track in vitro release strategy: real-time testing at 37°C across the full 90 days, alongside an accelerated method giving preliminary read-outs in 2–3 weeks.

Burst · Days 0–3 Lag · Days 3–30 Erosion-controlled · Days 30–90

Batches ranked by relative release rate in the accelerated method preserved the same rank order in real-time testing — supporting its use for early-stage screening while reserving full real-time IVR for confirmatory runs on lead candidates.

02 / 10

How does PLGA microsphere technology compare to other LAI platforms?

PLGA microspheres were selected over alternative platforms because they offer the most established regulatory precedent and the widest control range for extending release out to 90 days.

LAI PlatformDurationMechanismAdvantageLimitation
Crystalline suspension2–4 wkDissolution-limitedSimple manufacturingShorter duration ceiling
PLGA microspheres1–6 moPolymer erosion/diffusionTunable, strong precedentComplex CMC, cold-chain
In-situ forming implants1–6 moSolvent exchangeFewer mfg stepsBurst variability
Solid implants1–12 moBulk/surface erosionVery long durationLarger-bore needle/trocar

The 90-day target falls within the range where PLGA’s degradation behavior is well characterized and predictable, and microsphere suspensions deliver through a standard 20–22 gauge needle — unlike the larger-bore devices some solid implants require.

04 / 10

How was the product sterilized without compromising the polymer?

Terminal moist-heat sterilization was ruled out early — PLGA’s glass transition temperature sits well below standard autoclave cycles, so the microspheres would deform, aggregate, or prematurely degrade. Aseptic processing was used instead, under Grade A/B cleanroom conditions.

Sterile-filtered raw materials Validated aseptic transfer Environmental monitoring
!

Gamma irradiation was assessed and rejected. It reduced PLGA molecular weight through radiation-induced chain scission, shortening release duration in side-by-side comparisons — unsuitable for a 90-day target without significant reformulation.

05 / 10

How was drug loading and encapsulation efficiency optimized?

Early batches showed encapsulation efficiency below 65%, traced to partial API solubility in the PVA solution — as solvent evaporated, API diffused into the aqueous phase before the polymer shell solidified.

  1. Aqueous-phase saturation — the PVA solution was pre-saturated with a small, controlled amount of API, reducing the diffusion gradient.

  2. pH adjustment — aqueous-phase pH was tuned to reduce API ionization, since the ionized form was substantially more water-soluble.

  3. Accelerated solvent removal — controlled vacuum assistance locked API into the solidifying matrix faster.

  4. Phase ratio adjustment — the organic-to-aqueous volume ratio was narrowed, shrinking the aqueous “sink.”

Applied together, these four changes raised encapsulation efficiency from below 65% to consistently above 85%, with a corresponding drop in batch-to-batch variability.

07 / 10

What stability data was generated, and what storage was required?

Stability testing followed ICH-aligned long-term and accelerated conditions, watching for two PLGA-specific risks: continued polymer degradation during storage, and moisture-driven changes to the suspension vehicle.

Refrigerated storage (2–8°C) measurably slowed molecular weight decline versus room temperature, supporting a cold-chain recommendation consistent with most marketed PLGA depot antipsychotics.

Reconstitution timing also proved meaningful — extended hold times after reconstitution allowed early hydration and burst-related drug loss, supporting a defined in-use stability window in the handling instructions.

08 / 10

What analytical methods supported this program?

A multi-technique package characterized both the polymer and the finished microspheres at every stage, since no single method explains both what the formulation is doing and why.

GPC / SEC

Molecular weight

Monitored MW and distribution as-received and after accelerated degradation.

LASER DIFFRACTION

Particle sizing

D10/D50/D90 on every batch, correlated to release rate and burst magnitude.

HPLC / UPLC

Drug loading

Quantified loading, encapsulation efficiency, and released API at each IVR time point.

DSC

Thermal behavior

Confirmed Tg stayed above body temperature; screened for API-polymer interaction.

SEM

Morphology

Tracked surface porosity from smooth (Day 0) to eroded/channeled (Day 60–90).

GC HEADSPACE

Residual solvent

Confirmed dichloromethane fell within acceptable limits.

KARL FISCHER

Moisture content

Monitored residual moisture in the lyophilized product.

09 / 10

What do regulators expect from a PLGA depot CMC package?

Regulators evaluate PLGA microsphere depots as complex systems where the manufacturing process itself defines critical quality attributes. FDA and EMA guidance for long-acting parenterals emphasize:

  • Particle size distribution control — directly affects release kinetics and injectability.
  • Residual solvent and sterility assurance — terminal sterilization is generally not feasible for PLGA microspheres.
  • A scientifically justified IVR method, ideally with a documented path toward IVIVC.
  • Comparability protocols for any process or scale changes.
10 / 10

Key takeaways for formulators working on 3-month depot antipsychotics

  • Blending PLGA grades fine-tunes release duration more precisely than a single commercial grade, especially for intermediate targets like 90 days.
  • Encapsulation problems often trace to aqueous-phase solubility, not the polymer — pH and phase-ratio fixes can resolve what looks like an API-polymer issue.
  • Stirring speed deserves CPP-level attention early, since particle size drives both burst release and injectability.
  • Sterilization method should be locked early — both heat and gamma can alter molecular weight and release duration.
  • Accelerated IVR is valuable for screening but must be cross-validated against real-time data before formulation lock.
References

Cited sources

  1. Markowicz-Piasecka M, et al. Long-acting injectable antipsychotics — a review on formulation and in vitro dissolution. Pharmaceutics. 2023. mdpi.com
  2. Chaurasia S, et al. 3-month parenteral PLGA microsphere formulations of risperidone. Materials Science and Engineering: C. 2017. sciencedirect.com
  3. Yerragunta B, et al. Development of a novel 3-month drug releasing risperidone microspheres. J Pharm Bioallied Sci. 2015. journals.lww.com
  4. Bellotti E, et al. Long-lasting rescue of schizophrenia-relevant cognitive impairments via risperidone-loaded microPlates. Drug Deliv Transl Res. 2022. springer.com
  5. Mohammadpour F, et al. PLGA microspheres synthesized by a thermosensitive hydrogel emulsifier for sustained release of risperidone. J Pharm Innov. 2022. springer.com
  6. Shah JC, Hong J. Model for long acting injectables based on pharmacokinetics and physical chemical properties. AAPS J. 2022. springer.com
FAQ

Frequently asked questions

Most long-acting injectable depot products fall between 20–100 µm, with many targeting 25–70 µm. Smaller particles release faster due to higher surface area; larger particles sustain release longer.

Higher lactide content increases hydrophobicity, slowing water penetration and extending release. Higher glycolide content speeds degradation and release.

Excessive burst can push plasma concentration into toxicity risk and shorten the intended sustained-release duration — regulators evaluate it closely during development.

PD
About the author

Priyal Darji, B.Pharm

Experienced in analytical chemistry and pharmaceutical formulation development, with hands-on expertise in method development, impurity profiling, characterization studies, and polymer chemistry for novel drug delivery formulations. Her work focuses on bridging analytical precision with innovative formulation science.

Ready to advance your PLGA microsphere program?

Analytical and formulation expertise for 3-month depots, sustained-release peptides, and complex injectables.

Contact ResolveMass →
ResolveMass Laboratories Inc. — Montreal, Canada  ·  Redesign concept, not live on resolvemass.ca
// scroll reveal const revealEls = document.querySelectorAll(‘.reveal’); const io = new IntersectionObserver((entries)=>{ entries.forEach(e=>{ if(e.isIntersecting){ e.target.classList.add(‘in’); io.unobserve(e.target); } }); }, {threshold:0.15}); revealEls.forEach(el=>io.observe(el)); // faq accordion document.querySelectorAll(‘.faq-item’).forEach(item=>{ const q = item.querySelector(‘.faq-q’); const a = item.querySelector(‘.faq-a’); q.addEventListener(‘click’, ()=>{ const isOpen = item.classList.contains(‘open’); document.querySelectorAll(‘.faq-item.open’).forEach(o=>{ o.classList.remove(‘open’); o.querySelector(‘.faq-a’).style.maxHeight = null; }); if(!isOpen){ item.classList.add(‘open’); a.style.maxHeight = a.scrollHeight + ‘px’; } }); }); // rail active state on scroll const sections = [‘s1′,’s2′,’s3′,’s4′,’s5′,’s6′,’s7′,’s8′,’s9′,’s10′,’refs’,’faq’].map(id=>document.getElementById(id)); const links = document.querySelectorAll(‘.n-link’); const railObs = new IntersectionObserver((entries)=>{ entries.forEach(entry=>{ const idx = sections.indexOf(entry.target); if(entry.isIntersecting && idx>-1){ links.forEach(l=>l.classList.remove(‘active’)); links[idx].classList.add(‘active’); } }); }, {rootMargin:”-40% 0px -50% 0px”}); sections.forEach(s=>railObs.observe(s));

Reference

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
Review Your Cart
0
Add Coupon Code
Subtotal