body { --cssx-children: load-btn output-container; } #load-btn { display: inline-block; border: 1px solid gray; padding: 0.5rem 1rem; cursor: pointer; --cssx-on-click: add-class(output-container, 'loading') add-class(load-btn, 'loading') delay('2000') remove-class(output-container, 'loading') add-class(output-container, 'loaded') remove-class(load-btn, 'loading') js-eval('alert("Loaded page")') ; } #load-btn::after { content: "Click me for magic"; } #load-btn.loading { pointer-events: none; opacity: 0.4; } #output-container { --cssx-children: output-container-content; } #output-container.loading::after { content: "Loading..."; } #output-container.loaded::after { content: "This content is loaded my guy"; }