Quick tech tip of the day (Webflow edition). If you have a blog article page with a ToC block on it that has internal scrolling, and you want to make it automatic with your page content scroll - here’s a quick JavaScript solution: // Script START <script> document.addEventListener('DOMContentLoaded', function () { const toc = document.querySelector('.blog_toc-inner'); if (!toc) return; const observer = new MutationObserver(() => { const activeLink = toc.querySelector('.w--current'); if (activeLink) { toc.scrollTo({ top: activeLink.offsetTop - toc.clientHeight / 2 + activeLink.clientHeight / 2, behavior: 'smooth' }); } }); observer.observe(toc, { subtree: true, attributeFilter: ['class'], attributes: true }); }); </script> // Script END Works perfectly with Finsweet library, and even Locomotive scroll by LENIS. Enjoy! ✌ #DevTips #Webflow #JavaScript #CodeSolution #WebDevelopment
Serhii Zavatyi’s Post
More Relevant Posts
-
𝗧𝗵𝗲 𝗝𝗮𝗩𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗥𝘂𝗻𝘁𝗶𝗺𝗲: 𝗙𝗶𝘅𝗶𝗻𝗴 𝗬𝗼𝘂𝗿 𝗠𝗲𝗻𝘁𝗮𝗹 𝗠𝗼𝗱𝗲𝗹 You may have noticed some behaviors in JavaScript that seem strange. For example: - setTimeout doesn't interrupt loops - setTimeout doesn't block - A resolved Promise still runs after synchronous code - await pauses a function but doesn't freeze the page - Rendering sometimes waits Let's explore why this happens. JavaScript executes synchronously inside a task. Nothing can interrupt that execution. Here's what we mean by 'synchronous' and 'asynchronous': - Synchronous execution: code that runs immediately, from top to bottom via the call stack - Asynchronous code: code whose result is not available immediately, it schedules something to run later Asynchronous mechanisms do not block nor interrupt the call stack. They arrange for something to run later via scheduling. Let's test this claim with a simple for loop and setTimeout: ``` is not allowed, so we use plain text instead console.log("sync start") for (let i = 0; i < 1e9; i++) {} console.log("sync end") console.log("sync start") setTimeout(() => { console.log("timeout fired") }, 0) for (let i = 0; i <
To view or add a comment, sign in
-
𝗖𝗿𝗮𝗰𝗸 𝘁𝗵𝗲 𝗖𝗼𝗱𝗲: 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗛𝗼𝗶𝘀𝘁𝗶𝗻𝗴 𝗘𝘅𝗽𝗹𝗮𝗶𝗻𝗲𝗱! 🤔 Ever seen code that works even though you call a function before defining it? That's the magic (and potential trap) of Hoisting! 🪄 Here is a simple breakdown of this essential JS concept: What is it? Think of it as the JavaScript engine giving your declarations a "lift." Before running your code, it moves function and variable declarations (not their values!) to the top of their scope. ⬆️ 𝗩𝗮𝗿𝗶𝗮𝗯𝗹𝗲𝘀 𝘄𝗶𝘁𝗵 𝘃𝗮𝗿: These are hoisted and initialized to undefined. You can access them, but they won't have their values yet. 🤷♂️ 𝗩𝗮𝗿𝗶𝗮𝗯𝗹𝗲𝘀 𝘄𝗶𝘁𝗵 𝗹𝗲𝘁 & 𝗰𝗼𝗻𝘀𝘁: These are hoisted but not initialized. Accessing them before they're defined throws an error—a safe space known as the Temporal Dead Zone (TDZ)! 🛑🚫 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀: Full function declarations are hoisted, allowing you to call them anywhere in their scope. (This is super convenient!) 🤩 Understanding hoisting is crucial for avoiding confusing bugs and writing cleaner, more predictable code. 🧱💻 Check out this diagram for a visual guide! #JavaScript #WebDevelopment #CodingTips #SoftwareEngineering #Hoisting #TemporalDeadZone #LearningToCode #WebDev
To view or add a comment, sign in
-
-
💡Don't Use Array Spread Operator In Every Case💡 Yes, you heard that right. If you have a very large data set, then using array spread operator to create a new array will slow down your application and you might receive, "Maximum call stack size exceeded" error. So instead of using array spread operator, use array concat method. const largeArray = [/* your large array */]; const newArray = [/* additional items */]; // Using spread operator (slow for large arrays) const combinedArray1 = [...largeArray, ...newArray]; // Using concat method (more efficient for large arrays) const combinedArray2 = largeArray.concat(newArray); So If you have a very large array, then avoid using spread operator, instead use array concat method. This is because spread operator creates a new array which means each spread operator like …arr1, …arr2 will create a new array and then iterates and then returns a new array. For example, with const result = […arr1, …arr2], javascript will create three arrays one for the result and one for each spread operator (and then iterates it) If we use the same for concat method then there would be one array creation which is result meaning the concat method directly iterates the array. 𝗙𝗼𝗿 𝗺𝗼𝗿𝗲 𝘀𝘂𝗰𝗵 𝘂𝘀𝗲𝗳𝘂𝗹 𝗰𝗼𝗻𝘁𝗲𝗻𝘁, 𝗱𝗼𝗻'𝘁 𝗳𝗼𝗿𝗴𝗲𝘁 𝘁𝗼 𝗳𝗼𝗹𝗹𝗼𝘄 𝗺𝗲. #javascript #reactjs #typescript #webdevelopment
To view or add a comment, sign in
-
🚀 𝐃𝐚𝐲 6 – 𝐉𝐚𝐯𝐚𝐒𝐜𝐫𝐢𝐩𝐭 𝐄𝐯𝐞𝐧𝐭 𝐋𝐨𝐨𝐩 (𝐒𝐢𝐦𝐩𝐥𝐞 & 𝐂𝐥𝐞𝐚𝐫) JavaScript is single-threaded… 👉 But then how does it handle things like `setTimeout`? 🤔 Let’s understand the real flow 👇 --- 💡 The Setup JavaScript uses: * Call Stack → runs code * Web APIs → handles async tasks * Callback Queue → waits for execution * Event Loop → manages everything --- 💡Example: console.log("Start"); setTimeout(() => { console.log("Timeout"); }, 0); console.log("End"); --- 💡 Output: Start End Timeout --- 💡 Why? (Step-by-step) * `Start` → runs immediately * `setTimeout` → sent to Web APIs * `End` → runs immediately * Timer completes → callback goes to Queue * Event Loop checks → Stack empty * Callback pushed to Stack → executes --- ⚡ Key Insight 👉 Even with `0ms`, it does NOT run immediately 👉 It waits until the Call Stack is empty --- 💡 Simple Mental Model 👉 “Async code runs after sync code finishes” --- 💡 Why this matters? Because it explains: * execution order * async behavior * common bugs --- 👨💻 Continuing my JavaScript fundamentals series 👉 Next: **Promises (Async Made Better)** 👀 #JavaScript #WebDevelopment #FrontendDevelopment #Coding #SoftwareEngineer #Tech
To view or add a comment, sign in
-
-
Built an open-source EPUB reader in just one night. Most tools are clunky and outdated. But with Claude Code, I created something sleek and functional in hours. What's inside: → Real-time feedback for authors → JavaScript, Bootstrap, and epub.js under the hood → An in-browser readability analysis tool #EPUBReader #AIIntegration #OpenSource https://lnkd.in/g8G7KAzd
To view or add a comment, sign in
-
🚀 Understanding Factory Functions in JavaScript Ever felt confused using constructors and the new keyword? 🤔 That’s where Factory Functions make life easier! 👉 A Factory Function is simply a function that creates and returns objects. 💡 Why use Factory Functions? ✔️ No need for new keyword ✔️ Easy to understand (perfect for beginners) ✔️ Avoids this confusion ✔️ Helps in writing clean and reusable code ✔️ Supports data hiding using closures 🧠 Example: function createUser(name, age) { return { name, age, greet() { console.log("Hello " + name); } }; } const user = createUser("Sushant", 21); user.greet(); ⚠️ One downside: Methods are not shared (can use more memory) 🎯 Conclusion: Factory Functions are a great way to start writing clean and maintainable JavaScript code without complexity. #JavaScript #WebDevelopment #FrontendDeveloper #CodingJourney #LearnToCode #100DaysOfCode
To view or add a comment, sign in
-
-
Ever wondered why this prints in a different order? console.log("Start"); setTimeout(() => { console.log("Timeout"); }, 0); console.log("End"); Output: Start End Timeout Wait… timeout is 0ms, right? So why does it run last? ⸻ 🧠 Welcome to the Event Loop JavaScript is single-threaded, but it handles async tasks using: 👉 Call Stack 👉 Web APIs 👉 Callback Queue 👉 Event Loop ⸻ ⚙️ What’s happening behind the scenes? 1️⃣ "Start" → goes to Call Stack → executed 2️⃣ setTimeout → sent to Web APIs 3️⃣ "End" → executed immediately 4️⃣ Callback enters queue 5️⃣ Event Loop pushes it back to stack 👉 That’s why "Timeout" runs last ⸻ 🔥 Key Insight: setTimeout(fn, 0) does NOT mean “run immediately” It means → “run after current execution is done” ⸻ 💬 Lesson learned: JavaScript isn’t just about syntax… It’s about understanding how it executes code ⸻ #JavaScript #WebDevelopment #Frontend #EventLoop #AsyncJavaScript #CodingJourney
To view or add a comment, sign in
-
-
𝐇𝐚𝐬 𝐭𝐡𝐞 '𝐭𝐡𝐢𝐬' 𝐤𝐞𝐲𝐰𝐨𝐫𝐝 𝐞𝐯𝐞𝐫 𝐭𝐞𝐫𝐫𝐢𝐟𝐢𝐞𝐝 𝐲𝐨𝐮 𝐢𝐧 𝐉𝐚𝐯𝐚𝐒𝐜𝐫𝐢𝐩𝐭 😅? Well it has for me and when I learnt about call(), apply(), and bind(), it connected! Let's say, you have a function that logs "Hello, my name is {this.name}." The problem is JavaScript doesn't always know who 'this' is. The 'this' keyword is dynamic! These 3 methods let YOU decide: 📌 call() — Run the function NOW, and 'this' is this object attached to it. 📌 apply() — Does the same thing, but passes your arguments as an array. 📌 bind() — Don't run it yet. Just give me a version of this function where 'this' is already set. ______________________________________________ bind() is my personal favourite. It's perfect for React event handlers and callbacks where you need to pass a function but not call it immediately. Another thing about bind is that you prevent the 'this' keyword from attaching itself to the element of event handlers. It is even used for partial application meaning it lets you create a new function with some arguments fixed. ______________________________________________ ☞ const double = multiply.bind(null, 2); // preset a = 2 ☞double(5); // 2 * 5 = 10 double(10); // 2 * 10 = 20 ______________________________________________ Learning these three changed how I read and write JavaScript. What concept seems more logical for you in JS? Drop it below 👇 #JavaScript #WebDevelopment #Programming #Frontend #SoftwareEngineering #LearnToCode #100DaysOfCode #TechCommunity #DevCommunity #JavaScriptTips
To view or add a comment, sign in
-
-
🚀 JavaScript String Methods Strings are one of the most common data types in JavaScript, and yet, so many devs underuse the powerful methods that come with them. Here are some essential ones to know: ✂️ 𝘀𝗹𝗶𝗰𝗲(𝘀𝘁𝗮𝗿𝘁, 𝗲𝗻𝗱): extract a substring 🔄 𝗿𝗲𝗽𝗹𝗮𝗰𝗲() / 𝗿𝗲𝗽𝗹𝗮𝗰𝗲𝗔𝗹𝗹(): update parts of a string 🔍 𝗶𝗻𝗰𝗹𝘂𝗱𝗲𝘀(): check if a substring exists 🔠 𝘁𝗼𝗨𝗽𝗽𝗲𝗿𝗖𝗮𝘀𝗲() / 𝘁𝗼𝗟𝗼𝘄𝗲𝗿𝗖𝗮𝘀𝗲(): format consistently 🔢 𝗶𝗻𝗱𝗲𝘅𝗢𝗳() / 𝗹𝗮𝘀𝘁𝗜𝗻𝗱𝗲𝘅𝗢𝗳(): find character positions 📏 𝗹𝗲𝗻𝗴𝘁𝗵: total character count 🧼 𝘁𝗿𝗶𝗺() / 𝘁𝗿𝗶𝗺𝗦𝘁𝗮𝗿𝘁() / 𝘁𝗿𝗶𝗺𝗘𝗻𝗱(): clean up whitespace 🔗 𝘀𝗽𝗹𝗶𝘁(): break a string into an array ➕ 𝗰𝗼𝗻𝗰𝗮𝘁(): combine strings (or just use +) 🔡 𝗰𝗵𝗮𝗿𝗔𝘁() / 𝗰𝗵𝗮𝗿𝗖𝗼𝗱𝗲𝗔𝘁(): access individual characters Save & share with your team! Download Our Free Full-Stack Developer Starter Kit ➡️ https://buff.ly/JbI0Qof --- If you found this guide helpful, follow TheDevSpace | Dev Roadmap, w3schools.com, and JavaScript Mastery for more tips, tutorials, and cheat sheets on web development. Let's stay connected! 🚀 #React #JavaScript #CheatSheet #WebDevelopment
To view or add a comment, sign in
-
-
Have you ever wanted to create a dynamic object that can intercept operations? The Proxy and Reflect APIs in JavaScript allow you to do just that! How have you utilized these in your projects? ────────────────────────────── Exploring the Proxy and Reflect API in JavaScript Unlock the potential of Proxy and Reflect in your JavaScript code. #javascript #proxy #reflect #apis ────────────────────────────── Key Rules • Use Proxy to create a wrapper around an object to redefine fundamental operations. • Reflect provides methods that mirror the behavior of the Proxy handlers, making your code cleaner. • Always consider performance implications when using proxies, as they can add overhead. 💡 Try This const target = {}; const handler = { get: (obj, prop) => prop in obj ? obj[prop] : 'not found' }; const proxy = new Proxy(target, handler); console.log(proxy.someProperty); ❓ Quick Quiz Q: What does a Proxy do in JavaScript? A: It intercepts and customizes operations on an object. 🔑 Key Takeaway Embrace the power of Proxy and Reflect to create more flexible and maintainable code! ────────────────────────────── Small JavaScript bugs keep escaping to production and breaking critical user flows. Debugging inconsistent runtime behavior steals time from feature delivery.
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development