【问题标题】:CSS transition to appear boxes one by one on mouseoverCSS过渡以在鼠标悬停时一一显示框
【发布时间】:2024-01-03 21:07:02
【问题描述】:

我创建了一个社交媒体框,当您将鼠标悬停在共享按钮上时,它会弹出并显示社交媒体图标,它现在工作正常,但我想在其上进行过渡,所以当我将鼠标悬停在共享按钮上时其他 4 个项目一一显示,并带有一些过渡效果。

我正在寻找的效果类似于这个site,在右上角。

body {
  background: #cdcdcd;
  padding: 150px 0 0 100px;
}
.social-share {
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.3);
  color: #34abd2;
  float: left;
  font-size: 18px;
  height: 35px;
  line-height: 35px;
  position: relative;
  text-align: center;
  width: 35px;
  cursor: pointer;
}
.social-share > ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.social-share > ul > li {
  list-style: none;
}
.social-share > ul > li > i {
  transition: all 0.5s ease 0s;
}
.social-share > ul > li:hover > i {
  -ms-transform: rotate(180deg);
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}
.social-share > ul > li > ul {
  line-height: none;
  padding: 0;
  margin: 0 auto;
  left: 0;
  right: 0;
  position: absolute;
  bottom: 35px;
  line-height: normal;
  visibility: hidden;
}
.social-share > ul > li:hover ul {
  visibility: visible;
}
.social-share > ul > li > ul > li {
  list-style: none;
  background-color: #fff;
  margin-bottom: 3px;
  display: inline-block;
  width: 35px;
  height: 35px;
  line-height: 35px;
  border-radius: 50%;
}
.social-share > ul > li > ul > li > a {
  color: #fff;
}
.social-share > ul > li > ul > li:nth-child(1) {
  background-color: #3C5A99;
}
.social-share > ul > li > ul > li:nth-child(2) {
  background-color: #229EF1;
}
.social-share > ul > li > ul > li:nth-child(3) {
  background-color: #DD4A40;
}
.social-share > ul > li > ul > li:nth-child(4) {
  background-color: #2FA64A;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet"/>
<div class="social-share">
  <ul>
    <li><i class="fa fa-share-alt" aria-hidden="true"></i>
      <ul>
        <li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-whatsapp" aria-hidden="true"></i></a></li>
      </ul>
    </li>
  </ul>
</div>

【问题讨论】:

  • 我了解您不满意的javascript?
  • 我实际上希望仅使用 CSS 来处理它

标签: jquery html css css-transitions


【解决方案1】:

我认为transition-delay 是你的答案

body {
  background: #cdcdcd;
  padding: 150px 0 0 100px;
}
.social-share {
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.3);
  color: #34abd2;
  float: left;
  font-size: 18px;
  height: 35px;
  line-height: 35px;
  position: relative;
  text-align: center;
  width: 35px;
  cursor: pointer;
}
.social-share > ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.social-share > ul > li {
  list-style: none;
}
.social-share > ul > li > i {
  transition: all 0.5s ease 0s;
}
.social-share > ul > li:hover > i {
  -ms-transform: rotate(180deg);
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}
.social-share > ul > li > ul {
  line-height: none;
  padding: 0;
  margin: 0 auto;
  left: 0;
  right: 0;
  position: absolute;
  bottom: 35px;
  line-height: normal;
  visibility: hidden;
}
.social-share > ul > li:hover ul {
  visibility: visible;
}
.social-share > ul > li > ul > li {
  list-style: none;
  background-color: #fff;
  margin-bottom: 3px;
  display: inline-block;
  width: 35px;
  height: 35px;
  line-height: 35px;
  border-radius: 50%;
}
.social-share > ul > li > ul > li > a {
  color: #fff;
}
.social-share > ul > li > ul > li:nth-child(1) {
  background-color: #3C5A99;
  transition-delay: 0ms;
}
.social-share > ul > li > ul > li:nth-child(2) {
  background-color: #229EF1;
  transition-delay: 500ms;
}
.social-share > ul > li > ul > li:nth-child(3) {
  background-color: #DD4A40;
  transition-delay: 1000ms;
}
.social-share > ul > li > ul > li:nth-child(4) {
  background-color: #2FA64A;
  transition-delay: 1500ms;
}

.social-share > ul > li:hover > ul > li:nth-child(1) {
  transition-delay: 1500ms;
}
.social-share > ul > li:hover > ul > li:nth-child(2) {
  transition-delay: 1000ms;
}
.social-share > ul > li:hover > ul > li:nth-child(3) {
  transition-delay: 500ms;
}
.social-share > ul > li:hover > ul > li:nth-child(4) {
  transition-delay: 0ms;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet"/>
<div class="social-share">
  <ul>
    <li><i class="fa fa-share-alt" aria-hidden="true"></i>
      <ul>
        <li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-whatsapp" aria-hidden="true"></i></a></li>
      </ul>
    </li>
  </ul>
</div>

【讨论】:

  • 是的,这个做法不错,我可以用它来调整过渡时间,谢谢!!
  • 你也可以修复悬停顺序吗?
  • @JishnuVS 对不起,我不明白你。请扩大您的要求
  • 我的意思是当你悬停共享时,图标在底部一一显示,当悬停在顶部时一一隐藏
  • @SanjeevK 我改进了隐藏和编辑我的答案的效果。看。您还可以更改显示/隐藏效果(淡入淡出或其他)
【解决方案2】:

根据您的问题和其他答案,我认为您正在寻找以下内容。

body {
  background: #cdcdcd;
  padding: 150px 0 0 100px;
}

.social-share {
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.3);
  color: #34abd2;
  float: left;
  font-size: 18px;
  height: 35px;
  line-height: 35px;
  position: relative;
  text-align: center;
  width: 35px;
  cursor: pointer;
}

.social-share > ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.social-share > ul > li {
  list-style: none;
}

.social-share > ul > li > i {
  transition: all 0.5s ease 0s;
}

.social-share > ul > li:hover > i {
  -ms-transform: rotate(180deg);
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}

.social-share > ul > li > ul {
  line-height: none;
  padding: 0;
  margin: 0 auto;
  left: 0;
  right: 0;
  position: absolute;
  bottom: -3px;
  line-height: normal;
  z-index: -1;
}

.social-share > ul > li:hover ul {
  bottom: 35px;
  z-index: auto;
  height: 150px;
}

.social-share > ul > li > ul > li {
  background-color: #fff;
  border-radius: 50%;
  bottom: 0;
  display: inline-block;
  height: 35px;
  left: 0;
  line-height: 35px;
  list-style: outside none none;
  margin-bottom: 3px;
  position: absolute;
  transition: all 0.3s linear 0s;
  width: 35px;
}

.social-share > ul > li > ul > li > a {
  color: #fff;
}

.social-share > ul > li > ul > li:nth-child(1) {
  background-color: #3C5A99;
}

.social-share > ul > li:hover > ul > li:nth-child(1) {
  bottom: 3px;
}

.social-share > ul > li > ul > li:nth-child(2) {
  background-color: #229EF1;
}

.social-share > ul > li:hover > ul > li:nth-child(2) {
  bottom: 41px;
}

.social-share > ul > li > ul > li:nth-child(3) {
  background-color: #DD4A40;
}

.social-share > ul > li:hover > ul > li:nth-child(3) {
  bottom: 79px;
}

.social-share > ul > li > ul > li:nth-child(4) {
  background-color: #2FA64A;
}

.social-share > ul > li:hover > ul > li:nth-child(4) {
  bottom: 117px;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" />
<div class="social-share">
  <ul>
    <li><i class="fa fa-share-alt" aria-hidden="true"></i>
      <ul>
        <li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a></li>
        <li><a href="#"><i class="fa fa-whatsapp" aria-hidden="true"></i></a></li>
      </ul>
    </li>
  </ul>
</div>

【讨论】:

    【解决方案3】:

    这个想法怎么样,我想你正在寻找这个,我刚刚更改了overflow:visible 属性并添加了一些代码

    body {
      background: #cdcdcd;
      padding: 150px 0 0 100px;
    }
    .social-share {
      background-color: #fff;
      border-radius: 50%;
      box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.3);
      color: #34abd2;
      float: left;
      font-size: 18px;
      height: 35px;
      line-height: 35px;
      position: relative;
      text-align: center;
      width: 35px;
      cursor: pointer;
    }
    .social-share:hover {
      overflow:visible;
      transition-duration:1s;
      -moz-transition-duration:1s;
      -ms-transition-duration:1s;
      -webkit-transition-duration:1s;
    }
    .social-share > ul {
      list-style: none;
      margin: 0;
      padding: 0;
    }
    .social-share > ul > li {
      list-style: none;
      overflow:hidden;
    }
    .social-share > ul > li > i {
      z-index: 1;
      position: relative;
      transition: all 0.5s ease 0s;
    }
    .social-share > ul > li:hover > i {
      -ms-transform: rotate(180deg);
      -webkit-transform: rotate(180deg);
      transform: rotate(180deg);
    }
    .social-share > ul > li > ul {
      line-height: none;
      padding: 0;
      margin: 0 auto;
      left: 0;
      right: 0;
      position: absolute;
      bottom: 18px;
      line-height: normal;
      height:0;
      overflow:hidden;
      transition-duration:2s;
      -moz-transition-duration:2s;
      -ms-transition-duration:2s;
      -webkit-transition-duration:2s;
    }
    .social-share > ul > li:hover ul {
      height:173px;
      transition-duration:2s;
      -moz-transition-duration:2s;
    }
    .social-share > ul > li > i, .social-share > ul > li > ul > li {
      list-style: none;
      background-color: #fff;
      margin-bottom: 3px;
      display: inline-block;
      width: 35px;
      height: 35px;
      line-height: 35px;
      border-radius: 50%;
    }
    .social-share > ul > li > ul > li > a {
      color: #fff;
    }
    .social-share > ul > li > ul > li:nth-child(1) {
      background-color: #3C5A99;
    }
    .social-share > ul > li > ul > li:nth-child(2) {
      background-color: #229EF1;
    }
    .social-share > ul > li > ul > li:nth-child(3) {
      background-color: #DD4A40;
    }
    .social-share > ul > li > ul > li:nth-child(4) {
      background-color: #2FA64A;
    }
      <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet"/>
    <div class="social-share">
      <ul>
        <li><i class="fa fa-share-alt" aria-hidden="true"></i>
          <ul>
            <li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
            <li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
            <li><a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a></li>
            <li><a href="#"><i class="fa fa-whatsapp" aria-hidden="true"></i></a></li>
          </ul>
        </li>
      </ul>
    </div>

    【讨论】:

    • 是的,它更好,根据@Adrian Bobrowski 的回答,它有鼠标移出问题
    • @JishnuVS 可以提高隐藏效果吗?
    最近更新 更多