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