Tether includes the ability to constrain the element within the viewport, its scroll parent, any other element on the page, or a fixed bounding box. When it exceeds those constraints it can be pinned to the edge, flip to the other side of its target, or hide itself.
Tether optimizes its location placement to result in the minimum amount of 'jankyness' as the page is scrolled and resized. The page can maintain 60fps scrolling even with dozens or hundreds of tethers on screen (pop open the devtools timeline as you scroll this page).
Tether is 5kb minified and gzipped, and supports IE9+, and all modern browsers.
Install-Package Tether.New -Version 1.3.3
dotnet add package Tether.New --version 1.3.3
<PackageReference Include="Tether.New" Version="1.3.3" />
paket add Tether.New --version 1.3.3
This package has no dependencies.