# Vanilla JavaScript

Vanilla JavaScript is JavaScript written without frameworks or intermediary languages.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Vanilla JavaScript support for Tailwind Plus

DevFeed: [Vanilla JavaScript support for Tailwind Plus](<https://devfeed.tech/articles/vanilla-javascript-support-for-tailwind-plus-3505.md>)

Original publisher: [Read original article](<https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus>)

Published: 2025-07-25T14:30:00Z

Content type: release

Language: en

Sources: [Tailwind CSS Blog](<https://devfeed.tech/sources/tailwind-css-blog.md>)

Topics: [Tailwind CSS](<https://devfeed.tech/topics/tailwind.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [ui](<https://devfeed.tech/topics/ui.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [HTML](<https://devfeed.tech/topics/html.md>), [aria](<https://devfeed.tech/topics/aria.md>), [dialog](<https://devfeed.tech/topics/dialog.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>)

Tags: [aria](<https://devfeed.tech/tags/aria.md>), [component](<https://devfeed.tech/tags/component.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [dialog](<https://devfeed.tech/tags/dialog.md>), [framework](<https://devfeed.tech/tags/framework.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Tailwind Plus now provides fully functional, accessible, and interactive UI blocks for projects that do not use React or Vue. Its new Elements library offers headless custom elements for building interactive interfaces with HTML, utility classes, or custom CSS.

### Source excerpt

Every UI block in Tailwind Plus is now fully functional, accessible, and interactive, even if you don't use a framework like React or Vue.

## Self-host Maps with Protomaps and Supabase Storage

DevFeed: [Self-host Maps with Protomaps and Supabase Storage](<https://devfeed.tech/articles/self-host-maps-with-protomaps-and-supabase-storage-548.md>)

Original publisher: [Read original article](<https://supabase.com/blog/self-host-maps-storage-protomaps>)

Author: Brandon Liu; Thor Schaeff

Published: 2024-06-19T07:00:00Z

Content type: tutorial

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [Supabase](<https://devfeed.tech/topics/supabase.md>), [Web](<https://devfeed.tech/topics/web.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [WebGL](<https://devfeed.tech/topics/webgl.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [authorization](<https://devfeed.tech/tags/authorization.md>), [cli](<https://devfeed.tech/tags/cli.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [web](<https://devfeed.tech/tags/web.md>), [webgl](<https://devfeed.tech/tags/webgl.md>)

### AI overview

This tutorial explains how to self-host Protomaps PMTiles on Supabase Storage, render the map with MapLibre GL in a browser, and restrict access using Supabase Edge Functions and authentication.

### Source excerpt

Host Protomaps PMTiles on Supabase Storage and render them with MapLibre GL.

## How to Build a Secret Dark Mode Toggle for Your Blog

DevFeed: [How to Build a Secret Dark Mode Toggle for Your Blog](<https://devfeed.tech/articles/how-to-build-a-secret-dark-mode-toggle-for-your-blog-40738.md>)

Original publisher: [Read original article](<https://radek.io/posts/secret-darkmode-toggle/>)

Published: 2020-10-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [CSS](<https://devfeed.tech/topics/css.md>), [HTML](<https://devfeed.tech/topics/html.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [dark-mode](<https://devfeed.tech/tags/dark-mode.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>)

### AI overview

A tutorial on building a secret dark mode toggle for a blog using vanilla HTML, CSS, and JavaScript. It covers theme custom properties, detecting the operating system's dark mode setting, creating a toggle, and hiding an Easter egg.

### Source excerpt

A simple Easter egg in vanilla HTML, CSS and JavaScript

## Calculating Color: Dynamic Color Theming with Pure CSS

DevFeed: [Calculating Color: Dynamic Color Theming with Pure CSS](<https://devfeed.tech/articles/calculating-color-dynamic-color-theming-with-pure-css-28789.md>)

Original publisher: [Read original article](<https://una.im/css-color-theming/>)

Published: 2019-12-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [color](<https://devfeed.tech/topics/color.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>)

Tags: [color](<https://devfeed.tech/tags/color.md>), [css](<https://devfeed.tech/tags/css.md>), [internet-explorer](<https://devfeed.tech/tags/internet-explorer.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [properties](<https://devfeed.tech/tags/properties.md>), [property](<https://devfeed.tech/tags/property.md>), [themes](<https://devfeed.tech/tags/themes.md>), [variable](<https://devfeed.tech/tags/variable.md>)

### AI overview

This tutorial explains how to build dynamic color themes using pure CSS, custom properties, HSL values, and calc(). It demonstrates recreating common color transformations, including lightening, darkening, analogous, complementary, and triadic colors, without JavaScript or a CSS preprocessor for modern browsers.

### Source excerpt

Did you know that you can build custom dynamic color themes without the use of JavaScript or a CSS preprocessor!? Read on!

## How to show Groovy and Kotlin DSL samples side-by-side

DevFeed: [How to show Groovy and Kotlin DSL samples side-by-side](<https://devfeed.tech/articles/how-to-show-groovy-and-kotlin-dsl-samples-side-by-side-24638.md>)

Original publisher: [Read original article](<https://blog.gradle.org/groovy-kotlin-dsl-samples>)

Author: Eric Wendelin

Published: 2018-10-11T04:00:00Z

Content type: tutorial

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Groovy](<https://devfeed.tech/topics/groovy.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [CSS](<https://devfeed.tech/topics/css.md>), [HTML](<https://devfeed.tech/topics/html.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [interactive website](<https://devfeed.tech/topics/interactive-website.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [LocalStorage](<https://devfeed.tech/topics/localstorage.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [github](<https://devfeed.tech/tags/github.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [guides](<https://devfeed.tech/tags/guides.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial on displaying Groovy and Kotlin DSL examples side by side in GitHub READMEs and web-based documentation. It covers Markdown and HTML disclosure elements for GitHub, plus a CSS and vanilla JavaScript language-selector UI for websites that remembers the user's preferred language.

### Source excerpt

Gradle build script samples now have Kotlin DSL snippets alongside the Groovy snippets in Gradle 5.0 docs and many Gradle guides. We want you to be able to show both DSLs in your READMEs and web-based documentation, so this post shows ways you can display examples in multiple languages on GitHub and on your websites. Groovy and Kotlin DSL samples on GitHub It's hard to find OSS projects that don't have a README.md or README.adoc. Though there aren't many ways to make these README pages interactive, we can use the <details> and <summary> HTML elements within Markdown or Asciidoc achieve a bit of interactivity yet avoid the verbosity of having multiple subsequent samples in view. Use these code snippets to show multi-language snippets on GitHub. <details open> <summary>Groovy</summary> ```groovy logging.captureStandardOutput LogLevel.INFO println 'A message which is logged at INFO level' ``` </details> <details> <summary>Kotlin</summary> ```kotlin logging.captureStandardOutput(LogLevel.INFO) println("A message which is logged at INFO level") ``` </details> ++++ <details open> <summary>Groovy</summary> ++++ [source,groovy] ---- logging.captureStandardOutput LogLevel.INFO println 'A message which is logged at INFO level' ---- ++++ </details> ++++ ++++ <details> <summary>Kotlin</summary> ++++ [source,kotlin] ---- logging.captureStandardOutput(LogLevel.INFO) println("A message which is logged at INFO level") ---- ++++ </details> ++++ Here it is in action: Note that this won't work for jekyll or static websites, so there we have to write a bit of code. Groovy and Kotlin DSL samples on the web With a bit of CSS and JavaScript, you can make a nice little language selector UI that remembers user selections. The combination of this vanilla CSS, HTML, and JavaScript creates what you see at the top of the post. A little bit about what the code does: First, the JS initializes the preferred language, getting and storing in window.localStorage so that user preferences are saved. Ne

## Frameworkless JavaScript Part 3: One-Way Data Binding

DevFeed: [Frameworkless JavaScript Part 3: One-Way Data Binding](<https://devfeed.tech/articles/frameworkless-javascript-part-3-one-way-data-binding-32303.md>)

Original publisher: [Read original article](<https://jack.ofspades.com/frameworkless-javascript-part-3-one-way-data-binding/>)

Author: Jack Tarantino

Published: 2018-02-26T00:43:11Z

Content type: tutorial

Language: en

Sources: [Jacopo Tarantino](<https://devfeed.tech/sources/jacopo-tarantino.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [data](<https://devfeed.tech/topics/data.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [proxy](<https://devfeed.tech/topics/proxy.md>), [React](<https://devfeed.tech/topics/react.md>), [Angular](<https://devfeed.tech/topics/angular.md>), [Ember](<https://devfeed.tech/topics/ember.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [callback](<https://devfeed.tech/tags/callback.md>), [code](<https://devfeed.tech/tags/code.md>), [developers](<https://devfeed.tech/tags/developers.md>), [ember](<https://devfeed.tech/tags/ember.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [re](<https://devfeed.tech/tags/re.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

A tutorial on implementing one-way data binding in frameworkless JavaScript using native APIs, the DOM, ES6 Proxy objects, and callbacks. It explains how to update DOM content when data changes and works toward reusable node and proxy constructors.

### Source excerpt

This article is one in a series about writing client-focused JavaScript without the help of libraries and frameworks. It's meant to help developers remember that they can write good code on their own using nothing but native APIs and methods. For more, check out the original article on writing small

## Frameworkless JavaScript Part 2: Templates and Rendering

DevFeed: [Frameworkless JavaScript Part 2: Templates and Rendering](<https://devfeed.tech/articles/frameworkless-javascript-part-2-templates-and-rendering-32302.md>)

Original publisher: [Read original article](<https://jack.ofspades.com/frameworkless-javascript-part-2-templates-and-rendering/>)

Author: Jack Tarantino

Published: 2017-01-08T18:19:00Z

Content type: tutorial

Language: en

Sources: [Jacopo Tarantino](<https://devfeed.tech/sources/jacopo-tarantino.md>)

Topics: [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Code](<https://devfeed.tech/topics/code.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code](<https://devfeed.tech/tags/code.md>), [frameworks](<https://devfeed.tech/tags/frameworks.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [templates](<https://devfeed.tech/tags/templates.md>), [templating](<https://devfeed.tech/tags/templating.md>), [vanilla-javascript](<https://devfeed.tech/tags/vanilla-javascript.md>)

### AI overview

This tutorial explains how to implement basic HTML templating and string interpolation with vanilla JavaScript, using native APIs and methods instead of libraries or frameworks.

### Source excerpt

This article is one in a series about writing client-focused JavaScript without the help of libraries and frameworks. It's meant to help developers remember that they can write good code on their own using nothing but native APIs and methods. For more, check out the original article on writing small

## Plain JavaScript animated window scroll function

DevFeed: [Plain JavaScript animated window scroll function](<https://devfeed.tech/articles/plain-javascript-animated-window-scroll-function-37237.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/animate-window-scroll-to/>)

Author: Stanko

Published: 2016-09-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [element](<https://devfeed.tech/tags/element.md>), [import](<https://devfeed.tech/tags/import.md>), [input](<https://devfeed.tech/tags/input.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [npm](<https://devfeed.tech/tags/npm.md>), [object](<https://devfeed.tech/tags/object.md>)

### AI overview

A tutorial presenting a plain JavaScript function for smoothly animating window scrolling without requiring jQuery. It documents the animated-scroll-to npm package, including installation, usage, duration settings, the scroll element, and cancellation on user input.

### Source excerpt

Before modern frameworks, I always used jQuery's scrollTo method. At some point, not every project included jQuery, so I wrote simple function to animate window scroll. I have kept copying that function from project to project. Finally I took some time, cleaned it up and published it on the npm (this is the first npm package I published). Check the demo and read documentation of Github. Find it on Github and npm Installation # npm install animated-scroll-to Usage # import animateScrollTo from 'animated-scroll-to'; // desiredOffset - page offset to scroll // options - object with options // default options const options = { // duration of the scroll per 1000px, default 500 speed: 500, // minimum duration of the scroll minDuration: 250, // maximum duration of the scroll maxDuration: 1500, // DOM element to scroll, default window // Pass a reference to a DOM object // Example: document.querySelector('#element-to-scroll'), element: window, // should animated scroll be canceled on user scroll/keypress // if set to "false" user input will be disabled until animated scroll is complete cancelOnUserAction: true }; const desiredOffset = 1000; animateScrollTo(desiredOffset, options);

## Developing small JavaScript components WITHOUT frameworks

DevFeed: [Developing small JavaScript components WITHOUT frameworks](<https://devfeed.tech/articles/developing-small-javascript-components-without-frameworks-32299.md>)

Original publisher: [Read original article](<https://jack.ofspades.com/developing-small-javascript-components-without-frameworks/>)

Author: Jack Tarantino

Published: 2016-04-17T20:11:45Z

Content type: tutorial

Language: en

Sources: [Jacopo Tarantino](<https://devfeed.tech/sources/jacopo-tarantino.md>)

Topics: [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Frameworks](<https://devfeed.tech/topics/frameworks.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code](<https://devfeed.tech/tags/code.md>), [developers](<https://devfeed.tech/tags/developers.md>), [frameworks](<https://devfeed.tech/tags/frameworks.md>), [javascript](<https://devfeed.tech/tags/javascript.md>)

### AI overview

This tutorial argues that small JavaScript components can often be built with vanilla JavaScript instead of frameworks, plugins, and other tooling. It uses a programmatically generated employee list for a corporate homepage to examine the problem scope and question whether heavier tools are necessary.

### Source excerpt

You too can write vanilla JavaScript! A mistake that a lot of developers make when they first approach a problem (me included!) is to start thinking about the problem from the top down. They start thinking of the problem at hand in terms of frameworks and plugins and pre-processors and

## Play Framework - Kevin Galligan

DevFeed: [Play Framework - Kevin Galligan](<https://devfeed.tech/articles/play-framework-kevin-galligan-38048.md>)

Original publisher: [Read original article](<https://touchlab.co/2011-10-play-framework>)

Published: 2011-10-08T04:00:00Z

Content type: opinion

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Frameworks](<https://devfeed.tech/topics/frameworks.md>), [Vanilla JavaScript](<https://devfeed.tech/topics/vanilla-js.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Heroku](<https://devfeed.tech/topics/heroku.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [development](<https://devfeed.tech/tags/development.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [framework](<https://devfeed.tech/tags/framework.md>), [google](<https://devfeed.tech/tags/google.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [java](<https://devfeed.tech/tags/java.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Kevin Galligan reflects on his first week using the Play Framework, comparing it with Seam for Java web development. He discusses Play's simplified stack, its lack of session and conversation scopes, and the trade-offs involved in deploying applications on services such as Heroku and Google App Engine. He also describes wanting a framework that can support mobile apps and enable rapid prototyping and deployment.

### Source excerpt

It's been a week with the play framework. The summary? Play comes from France. The differences from frameworks I've used in the past are very significant.