This 8 line shim makes elements with position: sticky
work as intended in situations where you have scrollable content nested within your app - see this for an example.
You can either copy the sticky-shim.js
file from this gist, or install it as a module using npm...
$ npm install --save gist:4c7dd81a61adcb648944a16b0fac717f
You will need to enable the position: sticky
flag/blink feature in order for this to work.
You can do this by either adding CSSStickyPosition
to the blinkFeatures
web preference...
win = new BrowserWindow({
// ...
webPreferences: {
blinkFeatures: 'CSSStickyPosition',
},
});
Or you can enable all of the Chrome experimental features (of which position: sticky
is one)...
win = new BrowserWindow({
// ...
webPreferences: {
experimentalFeatures: true,
},
});
Now all you need to do is import electron-sticky-shim
(or manually include the sticky-shim.js
file), and add the sticky-shim
class to any elements which have the position: sticky
css rule applied.
require('electron-sticky-shim');
// ...
The shim does not automatically add position: sticky
to your sticky elements, this is so when Electron does support it natively, you can simply remove the shim and the shim class, and your CSS should work as intended.
<div class="container">
<div class="sticky-shim" style="position: sticky; top: 0">
Example
</div>
Lorem ipsum...
</div>
WTFPL - http://www.wtfpl.net/txt/copying