CSS 过渡 - 问题

标签 css

好的,所以我在 CSS 中让转换按照我希望的方式工作时遇到了一些问题,我希望有 CSS 经验的人告诉我如何实现我想要实现的目标.

我得到的实际初始转换工作正常,但我在这里遇到了两个问题。

首先,我的导航栏的第二个按钮/链接 - 字符 - 有三个子链接,当鼠标悬停在字符按钮上时会显示这些子链接。我想得到它,以便在字符按钮的实际转换发生之前不显示这些子链接。我希望你明白我在说什么。那么,这可能吗?如果可能,如何实现?

其次,目前我所拥有的只是按钮/链接滚动时的过渡,但滚动时没有。相反,在推出时它会立即回到默认状态,我觉得真的破坏了过渡效果。所以,我想知道是否可以为悬停和悬停设置过渡。

这是我的 HTML 代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Home</title>
<link rel="stylesheet" href="complex_1.css"/>
</head>

<body>
  <ul id="navbar">
    <li id="home"><a href="#">Home</a></li>
    <li id="characters"><a href="#">Characters</a>
        <ul>
          <li id="subzero"><a href="#">Sub-Zero</a></li>
          <li id="scorpion"><a href="#">Scorpion</a></li>
          <li id="kano"><a href="#">Kano</a></li>
        </ul>
    </li>
    <li id="about"><a href="#">About</a></li>
    <li id="contact"><a href="#">Contact</a></li>
  </ul>
</body>
</html>

以及有问题的 CSS 代码:

ul { /* Sets out the dimensions of the unordered list. */
  font-family:Verdana;
  font-size: 17px; 
  margin: 0px;
  padding: 0px; 
  list-style:none;
  position:absolute;
  letter-spacing:1px;
} 

ul li { /* All list items of unordered lists. */  
  display: block;
  position: relative; 
  text-align:center;
  float: left; /* Makes the navigation bar horizontal instead of vertical. */ 
} 

li ul { 
  display: none; /* Hides the dropdown menu list items by default. */ 
}

ul li a { /* All list items of unordered lists that are links. */ 
  color: #ffffff; 
  background: #000000;
  display:block;
  text-decoration: none;
  border-top: 1px solid #ffffff; 
  padding: 7px 40px 7px 40px; 
  margin-left: 0px; 
  white-space: nowrap; 
} 

ul li a:hover { 
  -moz-transition-property:background-color;
  -moz-transition-duration:400ms;
  -moz-transition-timing-function:ease-in-out; 
  color:#ffffff;
  background: #ff0000;
  } 

li:hover ul { 
  display:block;
  width:182px; 
} 

li:hover li {
  display:block; 
  font-size:10px; 
  float:none;
}

li:hover a { 
  background: #000000;   /* This is where you apply the colour you want for the dropdown list items off the main menu. */
} 

li:hover li a:hover { 
  color: #ffffff;
  background: #ff0000;   /* This is where you apply the colour you want for the hover over the list. */
} 

提前感谢任何可以帮助我完成我想在这里做的事情的人,真的非常感谢。

最佳答案

好的。所以。 答案 1.

与其将过渡属性放在特定的选择器上,不如尝试像这样制作一个选择器:

.trans {
    -webkit-transition:  all 300ms linear;
    -moz-transition:     all 300ms linear;
    -ms-transition:      all 300ms linear;
    transition:          all 300ms linear; 
}

然后您可以在您的 html anchor 标记中应用 class="trans"。

过渡只发生在“in”而不是“out”的原因是因为你只将它应用于 :hover。您需要将它应用于常规选择器和 :hover 状态。

上面的内容简洁明了,但有时您会想要不同的过渡时间。

在那种情况下:

.my-thing {
    -webkit-transition:  all 300ms linear;
    -moz-transition:     all 300ms linear;
    -ms-transition:      all 300ms linear;
    transition:          all 300ms linear; 
}

.my-thing:hover {
    -webkit-transition:  all 600ms linear;
    -moz-transition:     all 600ms linear;
    -ms-transition:      all 600ms linear;
    transition:          all 600ms linear; 
}

答案 2.

您可以延迟转换。在您的情况下,从 display:none 到 block 的过渡。

.delay {
    transition-delay: 300s;
    -moz-transition-delay: 300s;
    -webkit-transition-delay: 300s;
    -o-transition-delay: 300s;
}

所以你可以将它应用到 sub ul 或其他东西。

一般来说,我会重新考虑您的选择器。看起来你兴奋得让事情变得比它们需要的更复杂。

查看 this jsFiddle .

要使下拉菜单具有动画效果,您可能需要 java 脚本。我似乎无法在 display:none 上进行转换。但是看看 fiddle 。我认为它回答了您的问题并显示了上述两种解决方案的示例。祝你好运!

关于CSS 过渡 - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431946/

相关文章:

javascript - 创建全局变量并生成随机数并在 Javascript 中调用函数时更新变量

html - 在 Firefox 中,一个 <hr> 标签有效,但另一个无效。这是为什么?

javascript - jQuery 在鼠标移出时处理 hover() 和未完成的动画

html - 添加 div 后,值进入新行

javascript - 清除所有 Javascript 应用的样式

css - 当要与元素重叠时如何使文本进入下一行

HTML CSS 响应式地在两列中堆叠图像

html - 如何使省略号在具有动态宽度的 flex 元素上工作( flex :1)?

html - 如何创建旁边有 2x3 网格的侧边栏

html - @媒体(最大宽度: 767px) {/*content*/} does not work