【问题标题】:CSS transitions affecting the entire navigation menu on page load页面加载时影响整个导航菜单的 CSS 过渡
【发布时间】:2021-07-03 04:09:43
【问题描述】:

我目前正在尝试为我的一个网站创建一个导航菜单,我曾想过让菜单上的每个项目在悬停时弹出一点,以便用户可以专注于何时需要。

目前,一旦我加载页面本身,所有导​​航菜单项都会发生这种转换,这看起来有点令人不安,并且有点“破坏网站的氛围”。

相关 CSS 代码


html,
body {
  margin: 0;
  padding: 0;
  background-image: linear-gradient(to right, #2cac8c, #84a98c);
}

nav {
  position: fixed;
  top: 0;
  width: 100%;
}
nav, nav li {
  display: inline-flex;
  background-color: rgb(48, 48, 48); 
  flex-direction: row;
  font-family: 'Open Sans', sans-serif;
  font-weight: 800;
  font-size: 24px;
  text-align: right;
  color: white;
}

nav li {
  margin-left: 20px;
  margin-right: 20px;
  transition: font-size 0.5s;
}

nav li:hover {
  font-size: 30px;
}

nav ul a {
  text-decoration: none;
  color: white;
}

#name {
  display: inline-flex;
  font-size: 50px;
  color: white;
  font-family: Arial, Helvetica, sans-serif;
  font-weight: bold;
  margin-left: 20px;
  margin-right: 1100px;
  text-align: center
}
<nav>
    <ul>
        <li id="name">Bqre</li>
        <li><a href="#about">About Me</a></li>
        <li>Web Design</li>
        <li>Resume</li>
        <li>Contact</li>
    </ul>
</nav>

注意:当我尝试将过渡移动到 nav li:hover 元素下时,这确实解决了页面加载问题,但它也使得一旦从项目中悬停它就会立即返回它的常规字体大小没有按预期花费 0.5 秒。

有什么办法可以解决这个问题吗?
有关当前加载方式的参考视频:https://www.youtube.com/watch?v=pEEyP16DXoU

【问题讨论】:

    标签: html css css-transitions


    【解决方案1】:

    如果您更改font-size,容器将自动调整其大小,这就是您的整个导航发生变化的原因。为什么不改用transform : scale() 呢? https://codepen.io/mqbaka/pen/vYgeXGJ

    html,
    body {
      margin: 0;
      padding: 0;
      background-image: linear-gradient(to right, #2cac8c, #84a98c);
    }
    
    nav {
      position: fixed;
      top: 0;
      width: 100%;
    }
    nav, nav li {
      display: inline-flex;
      background-color: rgb(48, 48, 48); 
      flex-direction: row;
      font-family: 'Open Sans', sans-serif;
      font-weight: 800;
      font-size: 24px;
      text-align: right;
      color: white;
    }
    
    nav li {
      margin-left: 20px;
      margin-right: 20px;
      transition: transform 0.5s;
    }
    
    nav li:hover {
      transform: scale(1.2);
    }
    
    nav ul a {
      text-decoration: none;
      color: white;
    }
    
    #name {
      display: inline-flex;
      font-size: 50px;
      color: white;
      font-family: Arial, Helvetica, sans-serif;
      font-weight: bold;
      margin-left: 20px;
      margin-right: 1100px;
      text-align: center
    }
    <nav style='width:100%'>
        <ul>
            <li id="name">Bqre</li>
            <li><a href="#about">About Me</a></li>
            <li>Web Design</li>
            <li>Resume</li>
            <li>Contact</li>
        </ul>
    </nav

    如果我误解了您的问题,请告诉我。

    【讨论】:

    • 不敢相信我没有想到这一点。这很好用,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2014-04-08
    • 2011-09-17
    相关资源
    最近更新 更多