【问题标题】:CSS translate button on sibling hover兄弟悬停时的 CSS 翻译按钮
【发布时间】:2014-12-27 05:19:25
【问题描述】:

我正在尝试创建一组按钮,这些按钮将从顶部悬停按钮下方滑出,但它在 my Codepen (http://codepen.io/dmoz/pen/xIsfL) 中不起作用。

代码如下:

HTML

<button class="one"></button>
<button class="two"></button>
<button class="three"></button>
<button class="four"></button>
<button class="five">^</button>

CSS

button {
  margin: 0;
  font-size: 12px;
  padding: 0;
  border: 0 none;
  cursor: pointer;
  color: #fff;
  width: 60px;
  height: 60px;
  display: block;
  text-transform: none;
  border-radius: 0;
  background-color: #0078E7;
  background-image: none;
  box-shadow: none;
  position: absolute;
  overflow: visible;
}
.one {
  background-color: #3b5997;
  color: #ffffff;
  left: 10;
  -webkit-transition: 0.2s ease-out;
  -moz-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
}
.two {
  background-color: #ba0f16;
  color: #ffffff;
  left: 10;
  -webkit-transition: 0.2s ease-out;
  -moz-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
}
.three {
  background-color: #d64937;
  color: #ffffff;
  left: 10;
  -webkit-transition: 0.2s ease-out;
  -moz-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
}
.four {
  background-color: #0073b2;
  color: #ffffff;
  left: 10;
  -webkit-transition: 0.2s ease-out;
  -moz-transition: 0.2s ease-out;
  -o-transition: 0.2s ease-out;
  transition: 0.2s ease-out;
}
.five {
  background-color: #ffffff;
  border: 1px solid #888888;
  color: #888888;
  left: 10;
}
.five:hover ~ .one {
  left: 70px;
}
.five:hover ~ .two {
  left: 130px;
}
.five:hover ~ .three {
  left: 190px;
}
.five:hover ~ .four {
  left: 250px;
}

有人知道为什么它不起作用吗?

【问题讨论】:

    标签: html css css-transitions siblings translate-animation


    【解决方案1】:

    CSS3 选择器~ 仅适用于出现在第一个元素之后的兄弟姐妹,无论其间有多少兄弟姐妹。 CSS2.1 选择器+ 仅适用于直接的 NEXT 元素。因此,您的代码将无法工作,因为 .five 是最后一个元素。 上一个兄弟姐妹没有选择器。

    如果您将第五个按钮移到其他按钮之前并添加z-index,它将起作用,请参阅http://codepen.io/anon/pen/kEjwe

    更新:根据要求,CodePen 示例现在有一个包装器 div,用于呈现按钮子元素。因此,不再需要兄弟选择器。这样,当包装器悬停时,可以单击各个按钮。

    【讨论】:

    • 太棒了!工作。不过,我仍然想知道,为什么~ 在这种情况下起作用?:stackoverflow.com/questions/9924068/… 是过渡缓动导致下面的框在它们返回到起始位置时显示在悬停 div 的左侧?
    • 链接的问题/答案有效,因为 .b 先出现(然后是 .a.c)。
    • 对不起,我看错了。一个半相关的后续问题:我如何将滑出按钮保持在初始悬停后的位置(以便可以自己单击它们)?这将是一个社交分享弹出窗口。
    • 当然,但这需要对 HTML 代码进行更多更改,因为您至少需要一个悬停的包装元素。请参阅codepen.io/anon/pen/kEjwe 的更新演示。包装元素还允许您删除兄弟选择器,因为按钮现在是子元素。
    • 啊,爱它!非常感谢!
    猜你喜欢
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多