Add JavaScript tests to <link> tags to toggle stylesheets
Similar to how you can add media queries to <link>
tags with the media=""
attribute, Slinky lets you define a custom data-selector=""
and data-test=""
attributes to any <link>
tag to define an element to watch, and a JavaScript test to evaluate from the context of the matching element.
A simple usage might toggle the display of a stylesheet when the #sidebar
element is wider than 500px:
<link rel="stylesheet" href="sidebar.css" media="none" data-selector="#sidebar" data-test="this.offsetWidth > 500" >
By default Slinky will add event listeners for window.load
, window.resize
, window.input
and window.click
, but you can override this by optionally specifying a data-event=""
attribute as well. This stylesheet would listen to window.scroll
alone:
<link rel="stylesheet" href="scroll.css" media="none" data-selector="body" data-test="this.scrollTop > innerHeight" data-event="scroll" >
Note that in these examples I've included media="none"
so the stylesheets default to being hidden - for progressive enhancement if you wish to default to the stylesheets applying unless they need to be hidden by JS, you can leave the media="none"
off and the stylesheet will load by default, instead of remain hidden by default.
View Slinky on Github