[JS30] - 26) Stripe Follow Along Dropdown


マウスが止まるたびにドロップダウンメニューが表示されます


🧀 Element: mouseenter event


🧀 Element: mouseleave event



各ボタンにマウスを置くたびに、ドロップダウンメニューが表示されます.
const triggers = document.querySelectorAll('.cool > li');
triggers.forEach(trigger => trigger.addEventListener('mouseenter', handleEnter));
triggers.forEach(trigger => trigger.addEventListener('mouseleave', handleLeave));

マウスの各ボタンのドロップダウン内容のサイズに合わせて、メニューの背景のサイズを変更します。


🧀 Element.getBoundingClientRect()


🧀 CSSStyleDeclaration.setProperty()


CSSスタイル宣言オブジェクトのプロパティの新しい値を設定します.style.setProperty(propertyName, value, priority);

パラメータ


propertyName


DOMStringが変更するCSS属性名(ハイフン大文字小文字)

n.選択科目


DOMStringの新しい属性値を含む

priority


CSS属性の優先度の指定
const dropdown = this.querySelector('.dropdown');
  const dropdownCoords = dropdown.getBoundingClientRect();
  const navCoords = nav.getBoundingClientRect();

  const coords = {
    width: dropdownCoords.width,
    height: dropdownCoords.height,
    top: dropdownCoords.top - navCoords.top,
    left: dropdownCoords.left - navCoords.left,
  };

  background.style.setProperty('width', `${coords.width}px`);
  background.style.setProperty('height', `${coords.height}px`);
  background.style.setProperty('transform', `translate(${coords.left}px, ${coords.top}px)`);
coordsオブジェクトを作成し、指定したプログラムをそれぞれロードします.

Reference

  • https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event
  • https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event
  • https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
  • https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty