1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
<!DOCTYPE html> <title>Virtual Element Visual Test</title>
<style>
@import '/reset.css';
#reference {
position: absolute;
top: 150px;
left: 150px;
width: 200px;
height: 200px;
background-color: red;
box-shadow: inset 0 0 0 1px black;
}
#popper {
width: 100px;
height: 100px;
background-color: rebeccapurple;
box-shadow: inset 0 0 0 1px black;
}
#offset {
position: relative;
top: 100px;
left: 100px;
}
</style>
<div id="offset">
<div id="reference">Reference Box</div>
</div>
<div id="popper">Popper Box</div>
<script type="module">
import { createPopper } from './dist/popper.js';
const reference = document.querySelector('#reference');
const popper = document.querySelector('#popper');
function generateGetBoundingClientRect(x = 0, y = 0) {
return () => ({
width: 0,
height: 0,
top: y,
right: x,
bottom: y,
left: x,
});
}
const virtualElement = {
getBoundingClientRect: generateGetBoundingClientRect(),
};
const instance = createPopper(virtualElement, popper);
document.addEventListener('mousemove', ({ clientX: x, clientY: y }) => {
virtualElement.getBoundingClientRect = generateGetBoundingClientRect(x, y);
instance.update();
});
</script>
|