ConstCSS cannot pin anything to the visual viewport (position: fixed pins to the layout viewport, which
the keyboard does not shrink on iOS, nor on Chrome by default), and script placement runs a frame
behind the browser's own scroll, zoom and address-bar animation. So:
env(keyboard-inset-height). The visual viewport is wrong in one state there: Chrome
bringing its address bar back as the keyboard rises on a scrolled page reports the visible area as
if the bar were still hidden, which would put the accessory behind the keyboard. Elsewhere (iOS
Safari, Firefox) it is placed from the visual viewport.Its top edge is published through getKeyboardAccessoryTop while it shows. It never scrolls the page.
Inside an iframe the visual viewport is the iframe's, so the accessory rides the iframe's bottom. A floating or split keyboard, or a hardware one, does not shrink the visual viewport: the accessory sits at the bottom of the visible area, and no keyboard close is reported.
Content that rides the top of the virtual keyboard: a bar of a page-level portal, placed from the visual viewport (the part of the page the keyboard leaves visible).