如何将CSS应用于除悬停元素之外的其他元素?

卡斯珀特

在网络上,您将最后一次看到许多漂亮的悬停效果,尤其是对于投资组合页面,当您将鼠标悬停在某个项目上时,另一个将具有较低的不透明度,因此突出显示了您悬停的一个。

我试图实现这种效果,并完成了这一点(在CodePen中也进行了更广泛的介绍):

a {
  text-decoration: none;
  transition: color 0.1s linear; 
  -moz-transition: color 0.1s linear; 
  -webkit-transition: color 0.1s linear; 
  -o-transition: color 0.1s linear;
}

a:link, a:visited { color: inherit; } /* Body color */
a:hover, a:active {	color: #d7354a; }

h1, h2, h3, h4, h5, h6 { font-weight: normal; /*margin: 16px 0;*/ } 

h1 { 
  font-family: "Adelle", Arial, sans-serif;
  font-size: 80px; 
  line-height: 90px;
}

h3, h4 { color: #000; }
h3 { 
  font-size: 28px; /* 28px / 16px = 100% */ 
  font-weight: 600;
  line-height: 38px; 
}

.txt-center { text-align: center; }

body {
  margin: auto;
  font-family: "Merriweather", Arial, sans-serif;
  font-size: 18px; /* 18px = 100% */
  line-height: 26px;
  letter-spacing: 1px;
  color: #6f6f6f;
  -webkit-font-smoothing: none; 
  -webkit-font-smoothing: subpixel-antialiased; 
  -webkit-font-smoothing: antialiased; 
}

section { 
  padding: 80px 0; 
  position: relative;
}

#register div:hover .group { opacity: .5; }
#register div .group:hover { opacity: 1; }

#register hgroup { margin-bottom: 80px; }
#register .group a {
  display: block;
  color: #333; 
}

#register .group a:hover .button { 
  background: #FFF; 
  color: #d7354a;
  -webkit-transition: all 0.2s ease;
  -moz-transition: all 0.2s ease;
  -ms-transition: all 0.2s ease;
  -o-transition: all 0.2s ease;
  transition: all 0.2s ease;
}

#register .group figure { margin-bottom: 30px; }
#register .group figure img {
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transition-duration: 0.3s;
  -moz-transition-duration: 0.3s;
  -o-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: transform;
  -moz-transition-property: transform;
  -o-transition-property: transform;
  transition-property: transform;
  -webkit-transition-timing-function: ease-out;
  -moz-transition-timing-function: ease-out;
  -o-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
}

#register .group:hover figure img {
  -webkit-transform: translateY(-6px);
  transform: translateY(-6px);
}

#register .group p:first-of-type { 
  font-family: "Ubuntu", Arial, sans-serif;
  font-size: 22px;
  font-weight: 500; 
}

#register .group h3 { 
  font-size: 70px;
  line-height: 100px;
  font-weight: 400;
  color: inherit; 
  text-transform: lowercase;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>


<main class="main">
  <section class="page-header" id="register">
    <div class="container">
      <div class="row">
        <hgroup class="col-md-10 col-md-offset-1 txt-center">
          <h1>
            Register
          </h1>

        </hgroup><!-- End hgroup.col-md-10 col-md-offset-1 -->

        <div class="col-md-6 group txt-center">
          <a href="#">
            <figure>
              <img src="http://placehold.it/120x120" alt="Register as Watcher">
            </figure>
            <p>Register as</p>
            <h3>Watcher</h3>
            <p>
              Suspendisse sodales ut neque ut facilisis. <br>
              Cras lobortis vestibulum varius.
            </p>
            <div class="button secondary">I am a watcher</div>
          </a>
        </div><!-- End div.col-md-6 group txt-center -->

        <div class="col-md-6 group txt-center">
          <a href="#">
            <figure>
              <img src="http://placehold.it/120x120" alt="Register as Vlogger">
            </figure>
            <p>Register as</p>
            <h3>Vlogger</h3>
            <p>
              Suspendisse sodales ut neque ut facilisis. <br>
              Cras lobortis vestibulum varius.
            </p>
            <div class="button secondary">I am a vlogger</div>
          </a>
        </div><!-- End div.col-md-6 group txt-center -->


      </div><!-- End div.row -->
    </div><!-- End div.container -->

  </section><!-- End section#hero -->
</main>

但是这里的问题是,当光标已经位于某个区域(“注册”文本周围)时,这会使两个项目的不透明度降低。那不是我想要的。我想要的是,当您将鼠标悬停在div上时,.group它将使另一个蒙皮的透明度降低。

我知道您可以使用jQuery做到这一点,但我也知道,仅CSS才应该可行我怎样才能达到我想要的?

哈里

考虑到您在实现该目标上实际需要走多远,该解决方案实际上很简单。

以下是我所做的修复:

  • 添加了另一个选择器,当鼠标悬停在具有“注册”文本的上方时,该选择器opacity会将所有同级.group元素设置为1 hgroup
  • 改变了margin-bottom: 80pxhgrouppadding-bottom: 80px因为余量不是元件的一部分,而所占面积由填充是。因此,hgroup:hover即使鼠标悬停在“注册”按钮下方的空间上(但不在其内部.group选择器也将适用
  • 向中添加了margin-left: 0pxhgroup因为默认情况下,Bootstrap CSS会为hgroup元素提供80px的左边距,这会导致hgroup:hover选择器出现问题

在以下代码段中,我还在hgroup.group元素周围添加了黑色边框,以供您查看边界。

a {
  text-decoration: none;
  transition: color 0.1s linear; 
  -moz-transition: color 0.1s linear; 
  -webkit-transition: color 0.1s linear; 
  -o-transition: color 0.1s linear;
}

a:link, a:visited { color: inherit; } /* Body color */
a:hover, a:active {	color: #d7354a; }

h1, h2, h3, h4, h5, h6 { font-weight: normal; /*margin: 16px 0;*/ } 

h1 { 
  font-family: "Adelle", Arial, sans-serif;
  font-size: 80px; 
  line-height: 90px;
}

h3, h4 { color: #000; }
h3 { 
  font-size: 28px; /* 28px / 16px = 100% */ 
  font-weight: 600;
  line-height: 38px; 
}

.txt-center { text-align: center; }

body {
  margin: auto;
  font-family: "Merriweather", Arial, sans-serif;
  font-size: 18px; /* 18px = 100% */
  line-height: 26px;
  letter-spacing: 1px;
  color: #6f6f6f;
  -webkit-font-smoothing: none; 
  -webkit-font-smoothing: subpixel-antialiased; 
  -webkit-font-smoothing: antialiased; 
}

section { 
  padding: 80px 0;
  position: relative;
}

#register div:hover .group { opacity: .5; }
#register hgroup:hover ~ .group { opacity: 1; }
#register div .group:hover { opacity: 1; }

#register hgroup { 
  padding-bottom: 80px; 
  width: 100%;
  margin-left: 0;
}
#register .group a {
  display: block;
  color: #333; 
}

#register .group a:hover .button { 
  background: #FFF; 
  color: #d7354a;
  -webkit-transition: all 0.2s ease;
  -moz-transition: all 0.2s ease;
  -ms-transition: all 0.2s ease;
  -o-transition: all 0.2s ease;
  transition: all 0.2s ease;
}

#register .group figure { margin-bottom: 30px; }
#register .group figure img {
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transition-duration: 0.3s;
  -moz-transition-duration: 0.3s;
  -o-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: transform;
  -moz-transition-property: transform;
  -o-transition-property: transform;
  transition-property: transform;
  -webkit-transition-timing-function: ease-out;
  -moz-transition-timing-function: ease-out;
  -o-transition-timing-function: ease-out;
  transition-timing-function: ease-out;
}

#register .group:hover figure img {
  -webkit-transform: translateY(-6px);
  transform: translateY(-6px);
}

#register .group p:first-of-type { 
  font-family: "Ubuntu", Arial, sans-serif;
  font-size: 22px;
  font-weight: 500; 
}

#register .group h3 { 
  font-size: 70px;
  line-height: 100px;
  font-weight: 400;
  color: inherit; 
  text-transform: lowercase;
}

hgroup, .group{
  border: 1px solid;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>


<main class="main">
  <section class="page-header" id="register">
    <div class="container">
      <div class="row">
        <hgroup class="col-md-10 col-md-offset-1 txt-center">
          <h1>
            Register
          </h1>

        </hgroup><!-- End hgroup.col-md-10 col-md-offset-1 -->

        <div class="col-md-6 group txt-center">
          <a href="#">
            <figure>
              <img src="http://placehold.it/120x120" alt="Register as Watcher">
            </figure>
            <p>Register as</p>
            <h3>Watcher</h3>
            <p>
              Suspendisse sodales ut neque ut facilisis. <br>
              Cras lobortis vestibulum varius.
            </p>
            <div class="button secondary">I am a watcher</div>
          </a>
        </div><!-- End div.col-md-6 group txt-center -->

        <div class="col-md-6 group txt-center">
          <a href="#">
            <figure>
              <img src="http://placehold.it/120x120" alt="Register as Vlogger">
            </figure>
            <p>Register as</p>
            <h3>Vlogger</h3>
            <p>
              Suspendisse sodales ut neque ut facilisis. <br>
              Cras lobortis vestibulum varius.
            </p>
            <div class="button secondary">I am a vlogger</div>
          </a>
        </div><!-- End div.col-md-6 group txt-center -->


      </div><!-- End div.row -->
    </div><!-- End div.container -->

  </section><!-- End section#hero -->
</main>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将 href 和 data-toggle 应用于除其子元素之一之外的元素?

来自分类Dev

如何将CSS应用于Javascript添加的元素

来自分类Dev

将CSS样式应用于除具有特定ID之外的所有元素

来自分类Dev

将CSS应用于除某些类后代之外的任何元素?

来自分类Dev

将CSS样式应用于除具有特定ID之外的所有元素

来自分类Dev

浮动元素也将背景应用于其他div

来自分类Dev

仅在子元素创建后如何将规则应用于子元素(CSS)?

来自分类Dev

在AngularJS中,如何将指令绑定到除指令根元素之外的其他元素中?

来自分类Dev

如何使用 Adobe Muse 将其他 CSS 样式应用于特定元素?

来自分类Dev

如何将CSS3滤镜灰度应用于除figcaption的标记之外的所有属性?

来自分类Dev

如何将AND应用于列表的所有元素?

来自分类Dev

如何将SlimScroll应用于身体元素?

来自分类Dev

如何将$(this)应用于单个子元素

来自分类Dev

如何将AND应用于列表的所有元素?

来自分类Dev

如何将Knockout绑定应用于<html>元素?

来自分类Dev

如何将 $lt 应用于数组元素?

来自分类Dev

显示时如何将动画应用于元素?

来自分类Dev

如何将CSS指令应用于h3元素?

来自分类Dev

如何将CSS应用于IE中使用javascript创建的元素?

来自分类Dev

如何将CSS样式表应用于单个特定元素?

来自分类Dev

如何将CSS属性单独应用于多个元素

来自分类Dev

如何将colorzilla生成的CSS应用于body元素

来自分类Dev

如何将CSS高度设置应用于所有子元素?

来自分类Dev

如何将引导程序类应用于 css 文件中的每个相同的 HTML 元素?

来自分类Dev

如何将 CSS flex 属性应用于嵌套元素

来自分类Dev

单击以将样式应用于元素,同时从其他元素中删除

来自分类Dev

如何避免将CSS样式应用于特定元素

来自分类Dev

如何避免将CSS样式应用于特定元素

来自分类Dev

如何将模板应用于除特殊模板之外的所有模板

Related 相关文章

  1. 1

    如何将 href 和 data-toggle 应用于除其子元素之一之外的元素?

  2. 2

    如何将CSS应用于Javascript添加的元素

  3. 3

    将CSS样式应用于除具有特定ID之外的所有元素

  4. 4

    将CSS应用于除某些类后代之外的任何元素?

  5. 5

    将CSS样式应用于除具有特定ID之外的所有元素

  6. 6

    浮动元素也将背景应用于其他div

  7. 7

    仅在子元素创建后如何将规则应用于子元素(CSS)?

  8. 8

    在AngularJS中,如何将指令绑定到除指令根元素之外的其他元素中?

  9. 9

    如何使用 Adobe Muse 将其他 CSS 样式应用于特定元素?

  10. 10

    如何将CSS3滤镜灰度应用于除figcaption的标记之外的所有属性?

  11. 11

    如何将AND应用于列表的所有元素?

  12. 12

    如何将SlimScroll应用于身体元素?

  13. 13

    如何将$(this)应用于单个子元素

  14. 14

    如何将AND应用于列表的所有元素?

  15. 15

    如何将Knockout绑定应用于<html>元素?

  16. 16

    如何将 $lt 应用于数组元素?

  17. 17

    显示时如何将动画应用于元素?

  18. 18

    如何将CSS指令应用于h3元素?

  19. 19

    如何将CSS应用于IE中使用javascript创建的元素?

  20. 20

    如何将CSS样式表应用于单个特定元素?

  21. 21

    如何将CSS属性单独应用于多个元素

  22. 22

    如何将colorzilla生成的CSS应用于body元素

  23. 23

    如何将CSS高度设置应用于所有子元素?

  24. 24

    如何将引导程序类应用于 css 文件中的每个相同的 HTML 元素?

  25. 25

    如何将 CSS flex 属性应用于嵌套元素

  26. 26

    单击以将样式应用于元素,同时从其他元素中删除

  27. 27

    如何避免将CSS样式应用于特定元素

  28. 28

    如何避免将CSS样式应用于特定元素

  29. 29

    如何将模板应用于除特殊模板之外的所有模板

热门标签

归档