在网络上,您将最后一次看到许多漂亮的悬停效果,尤其是对于投资组合页面,当您将鼠标悬停在某个项目上时,另一个将具有较低的不透明度,因此突出显示了您悬停的一个。
我试图实现这种效果,并完成了这一点(在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: 80px
在hgroup
到padding-bottom: 80px
因为余量不是元件的一部分,而所占面积由填充是。因此,hgroup:hover
即使鼠标悬停在“注册”按钮下方的空间上(但不在其内部.group
),选择器也将适用。margin-left: 0px
,hgroup
因为默认情况下,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] 删除。
我来说两句