cari

Rumah  >  Soal Jawab  >  teks badan

Mengapa arrowBackground menukar serta-merta dan tidak mengambil masa 0.5 saat

//* Define variables and html elements

const sidebar = document.querySelector('.sidebar');
const arrow = document.querySelector('.arrow');

//* Add event listeners

sidebar.addEventListener('mouseout', () => {
  arrow.style.transitionDelay = '0s';
  sidebar.style.transitionDelay = '0.05s';
})

sidebar.addEventListener('mouseover', () => {
  arrow.style.transitionDelay = '0.05s';
  sidebar.style.transitionDelay = '0s';
})
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  height: 100vh;
  width: 100vw;
  display: flex;
}

.sidebar {
  position: fixed;
  height: 100vh;
  background-color: black;
  width: 80px;
  transition: all 0.5s ease;
  z-index: 0;
}

.arrow {
  position: relative;
  left: 7.5px;
  right: 7.5px;
  top: 7.5px;
  width: 65px;
  height: 65px;
  fill: rgb(115, 151, 162);
  transition: all 0.5s ease;
  z-index: 2;
}

.arrowBackground {
  position: absolute;
  top: 0;
  width: 82px;
  height: 80px;
  background-color: rgb(30, 30, 30);
  z-index: 1;
  border: 2px solid rgb(50, 50, 50);
  transition: all 0.5s ease;
}

.sidebar:hover {
  width: 240px;
}

body:has(.sidebar:hover) .arrow {
  transform: rotate(180deg);
  left: 167.5px;
}

body:has(.sidebar:hover) .arrowBackground {
  left: 160px;
}
<section class="sidebar">
  <div class="icons">
    <div>
      <svg class="icon arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
      <div class="arrowBackground"></div>
    </div>
  </div>
</section>

Apabila saya menuding di atas bar sisi, anak panah dan bar sisi mengambil masa 0.5 saat untuk menukar tetapi kelas latar belakang anak panah melakukannya serta-merta, saya tidak tahu mengapa, saya menjangkakan ia mengambil masa 0.5 saat untuk menukar tetapi saya tidak tahu bagaimana untuk betulkan

Saya cuba menyusun semula beberapa kod tetapi tidak berjaya, saya cuba menetapkan kelewatan peralihan dalam JavaScript tetapi masih tidak berfungsi

P粉473363527P粉473363527261 hari yang lalu3605

membalas semua(1)saya akan balas

  • P粉226642568

    P粉2266425682024-04-06 00:16:09

    akan left: 0; 添加到 arrowBackground jika tidak ia tidak tahu dari mana hendak menukar

    //* Define variables and html elements
    
    const sidebar = document.querySelector('.sidebar');
    const arrow = document.querySelector('.arrow');
    
    //* Add event listeners
    
    sidebar.addEventListener('mouseout', () => {
      arrow.style.transitionDelay = '0s';
      sidebar.style.transitionDelay = '0.05s';
    })
    
    sidebar.addEventListener('mouseover', () => {
      arrow.style.transitionDelay = '0.05s';
      sidebar.style.transitionDelay = '0s';
    })
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    body {
      height: 100vh;
      width: 100vw;
      display: flex;
    }
    
    .sidebar {
      position: fixed;
      height: 100vh;
      background-color: black;
      width: 80px;
      transition: all 0.5s ease;
      z-index: 0;
    }
    
    .arrow {
      position: relative;
      left: 7.5px;
      right: 7.5px;
      top: 7.5px;
      width: 65px;
      height: 65px;
      fill: rgb(115, 151, 162);
      transition: all 0.5s ease;
      z-index: 2;
    }
    
    .arrowBackground {
      position: absolute;
      left: 0;
      top: 0;
      width: 82px;
      height: 80px;
      background-color: rgb(30, 30, 30);
      z-index: 1;
      border: 2px solid rgb(50, 50, 50);
      transition: all 0.5s ease;
    }
    
    .sidebar:hover {
      width: 240px;
    }
    
    body:has(.sidebar:hover) .arrow {
      transform: rotate(180deg);
      left: 167.5px;
    }
    
    body:has(.sidebar:hover) .arrowBackground {
      left: 160px;
    }

    balas
    0
  • Batalbalas