float

A floating, potentially draggable user interface element.

<tosi-float class="float" remain-on-resize="remain" remain-on-scroll="remain" drag>
  <h4>Drag Me</h4>
  <div class="no-drag balloon">🎈</div>
  <div class="behavior">I ignore resizing and scrolling</div>
  <footer style="font-size: 75%">neunundneunzig pixel-ballon</footer>
</tosi-float>

<tosi-float class="float" remain-on-scroll="remain" style="top: 50px; right: 20px;" drag>
  <h4>Drag Me</h4>
  <div class="no-drag balloon">🎈</div>
  <div class="behavior">I disappear on resize</div>
  <footer style="font-size: 75%">neunundneunzig pixel-ballon</footer>
</tosi-float>

<tosi-float class="float" remain-on-resize="remain" remain-on-scroll="remove" style="bottom: 20px; left: 50px;" drag>
  <h4>Drag Me</h4>
  <div class="no-drag balloon">🎈</div>
  <div class="behavior">I disappear on scroll</div>
  <footer style="font-size: 75%">neunundneunzig pixel-ballon</footer>
</tosi-float>
.preview .float {
  width: 220px;
  height: 180px;
  padding: 0;
  gap: 5px;
  display: flex;
  flex-direction: column;
  border-radius: 5px;
  background: #fff8;
  box-shadow: 2px 10px 20px #0004;
  overflow: hidden;
  cursor: move;
}

.preview h4 {
  margin: 0;
  padding: 5px 10px;
  color: white;
  background: #c00;
}

.preview .balloon {
  cursor: default;
  flex: 1 1 auto;
  font-size: 99px;
  line-height: 120px;
  text-align: center;
  height: auto;
  overflow: hidden;
}

.preview .behavior {
  position: absolute;
  bottom: 16px;
  left: 8px;
  right: 8px;
  background: #fffc;
}

.preview footer {
  text-align: center;
  background: #b00c;
  color: white;

Styling

Note that the <tosi-float> element has absolutely minimal styling. It's up to you to provide a drop shadow and background and so on.

Attributes

A float made by popFloat (menus, tooltips) has an anchor, the element it was popped from, and only a scroll that MOVES the anchor (the page, or a scroller containing it) hides or removes it. Before 1.16.3 any scroll anywhere did, so filtering a table on every keystroke (which scrolls it) closed a menu or hint list the moment it opened. A float with no anchor still reacts to any scroll outside itself.

To prevent dragging for an interior element (e.g. if you want a floating palette with buttons or input fields) just add the no-drag class to an element or its container.