express.ui.panel_absolute

express.ui.panel_absolute(top=None, left=None, right=None, bottom=None, width=None, height=None, draggable=False, fixed=False, cursor='auto', **kwargs)

Context manager for a panel of absolutely positioned content.

This function wraps panel_absolute.

Creates a <div> tag whose CSS position is set to absolute (or fixed if fixed = True). The way absolute positioning works in HTML is that absolute coordinates are specified relative to its nearest parent element whose position is not set to static (which is the default), and if no such parent is found, then relative to the page borders. If you're not sure what that means, just keep in mind that you may get strange results if you use this function from inside of certain types of panels.

Parameters

top: Optional[str] = None

Distance between the top of the panel, and the top of the page or parent container.

left: Optional[str] = None

Distance between the left side of the panel, and the left of the page or parent container.

right: Optional[str] = None

Distance between the right side of the panel, and the right of the page or parent container.

bottom: Optional[str] = None

Distance between the bottom of the panel, and the bottom of the page or parent container.

width: Optional[str] = None

Width of the panel.

height: Optional[str] = None

Height of the panel.

draggable: bool = False

If True, allows the user to move the panel by clicking and dragging.

fixed: bool = False

Positions the panel relative to the browser window and prevents it from being scrolled with the rest of the page.

cursor: Literal[‘auto’, ‘move’, ‘default’, ‘inherit’] = ‘auto’

The type of cursor that should appear when the user mouses over the panel. Use "move" for a north-east-south-west icon, "default" for the usual cursor arrow, or "inherit" for the usual cursor behavior (including changing to an I-beam when the cursor is over text). The default is "auto", which is equivalent to "move" if draggable else "inherit".

**kwargs: TagAttrValue = {}

Attributes added to the content’s container tag.

Tip

The position (top, left, right, bottom) and size (width, height) parameters are all optional, but you should specify exactly two of top, bottom, and height and exactly two of left, right, and width for predictable results.

Like most other distance parameters in Shiny, the position and size parameters take a number (interpreted as pixels) or a valid CSS size string, such as "100px" (100 pixels) or "25%".

For arcane HTML reasons, to have the panel fill the page or parent you should specify 0 for top, left, right, and bottom rather than the more obvious width = "100%" and height = "100%".

Examples

#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400

## file: app.py
from shiny.express import ui

ui.h2("A basic absolute panel example")

with ui.panel_absolute(draggable=True, width="300px", right="50px", top="25%"):
    with ui.panel_well():
        "Drag me around!"
        ui.input_slider("n", "N", min=0, max=100, value=20)