Nenhuma Descrição

hide.html 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <!DOCTYPE html> <title>Arrow Visual Test</title>
  2. <style>
  3. @import '/reset.css';
  4. .scroll {
  5. overflow: scroll;
  6. width: 300px;
  7. height: 300px;
  8. background-color: grey;
  9. }
  10. .scroll::before {
  11. content: 'before';
  12. display: block;
  13. height: 300px;
  14. width: 1px;
  15. }
  16. .scroll::after {
  17. content: 'after';
  18. display: block;
  19. height: 300px;
  20. width: 1px;
  21. }
  22. #reference {
  23. width: 200px;
  24. height: 200px;
  25. background-color: red;
  26. box-shadow: inset 0 0 0 1px black;
  27. }
  28. #popper {
  29. width: 100px;
  30. height: 100px;
  31. background-color: rebeccapurple;
  32. border: 10px solid;
  33. }
  34. #arrow::before {
  35. content: '';
  36. display: block;
  37. width: 20px;
  38. height: 20px;
  39. width: 20px;
  40. height: 20px;
  41. background-color: yellow;
  42. }
  43. #arrow[data-hide]::before {
  44. opacity: 0;
  45. }
  46. </style>
  47. <div class="scroll">
  48. <div id="reference">Reference Box</div>
  49. <div id="popper">
  50. Popper Box
  51. <div id="arrow" data-popper-arrow></div>
  52. </div>
  53. </div>
  54. <script type="module">
  55. import { createPopper } from '../../dist/popper.js';
  56. const reference = document.querySelector('#reference');
  57. const popper = document.querySelector('#popper');
  58. window.instance = createPopper(reference, popper, {
  59. placement: 'right',
  60. modifiers: [
  61. {
  62. name: 'applyArrowHide',
  63. enabled: true,
  64. phase: 'write',
  65. fn({ state }) {
  66. if (state.modifiersData.arrow.centerOffset !== 0) {
  67. state.elements.arrow.setAttribute('data-hide', '');
  68. } else {
  69. state.elements.arrow.removeAttribute('data-hide');
  70. }
  71. },
  72. },
  73. {
  74. name: 'preventOverflow',
  75. options: {
  76. tether: false,
  77. },
  78. },
  79. ],
  80. });
  81. </script>