将鼠标悬停在 div 上以显示隐藏的 div - 保持活跃超过 parent 高度
Hover over div to expose hidden div - Keep active past parent height
我正在寻找实现一些简单但挂断它的方法。这是我想要做的事情的粗略副本:http://codepen.io/anon/pen/LGZaPr
我的 Sass 用于 col-4 parent:
.col-4 {
background: $primary-color;
color: $heading-two;
font-family: $secondary-font;
text-align: center;
height: 201px;
padding: rem-calc(32px 0);
overflow: visible;
}
more-info intro-content之前的内容:
.more-info {
@media #{$xlarge-breakpoint} {
width: calc-percent(70px, $site-width);
}
position:absolute;
width: calc-percent(123px, $site-width);
height: 201px;
background: $base-color;
overflow: hidden;
z-index: 9999;
visibility: hidden;
font-family: $primary-font;
padding: rem-calc(10px);
color: $primary-color;
text-align: left;
@include transition(bottom, 0.3s, ease-in-out);
line-height: 1.3;
@media #{$medium-breakpoint} {
width: 22.115%;
}
&:active {
display: block;
}
&:hover {
display: block;
}
a {
text-transform: uppercase;
font-family: $secondary-font;
text-decoration: none;
color: $primary-color;
&:hover {
color: $heading-two;
}
}
} // .more-info
我的 Sass 悬停看起来像:
.intro-content {
//height: 100%;
&:hover + .more-info {
opacity: 1.0;
display: block;
visibility: visible;
position: relative;
z-index: 100000;
}
}
我想将鼠标悬停在 .intro-content 上以显示 .more-info 中的内容。我希望能够保持 more-info div 打开,直到我将光标移开,这样任何人都可以单击框中的 link / 突出显示任何文本。
感谢任何帮助,谢谢!
好吧,您可以为此使用一些 javascript。像这样..
我编辑了你的一些 CSS。只需将 js 脚本复制并粘贴到您的代码中,它就会开始工作。我还编辑了你的 CSS 并给了你它的编译版本。它的 Scss 版本可以找到 here
编辑
检查您的网站后,我发现您的 wrapper
class 已将溢出设置为隐藏,这会阻止您的弹出窗口完整显示。
我唯一能找到的解决办法就是禁用它。禁用后可以看到more-info
的整个方框。 (或将其设置为可见)
.wrapper {
margin: 0 auto;
width: 940px;
overflow: visible;
}
还有这个到您的更多信息悬停部分。
#services-menu .col-4 .more-info:hover {
display: block;
position: relative; /*NEW */
}
position relative 防止弹框溢出
接下来是媒体查询。
您已根据网页的视口设置了宽度。不应该是这样的。。
您应该将其设置为 col-4 的 width: 100%
,然后可以基于视口。这样 more-info
弹出窗口的宽度始终与 col-4
相同。
也这样做
#services-menu .col-4 .more-info {
display: none;
position: absolute;
width: 100%; /*instead of the 13.08511% you have as default. */
height: 201px;
background: #ffffff;
overflow: hidden;
z-index: 999;
-moz-transition: bottom, 0.3s, ease-in-out;
-o-transition: bottom, 0.3s, ease-in-out;
-webkit-transition: bottom, 0.3s, ease-in-out;
transition: bottom, 0.3s, ease-in-out;
line-height: 1.3;
}
我认为你不需要媒体查询,所以从你那里删除这个 css。
@media only screen and (min-width: 1441px){
#services-menu .col-4 .more-info {
width: 8.51064%;
}
}
一旦你这样做了。一切都会好起来的。
编辑结束
$("div.intro-content").hover(
function() {
$(this).find("div.more-info").stop().animate({
opacity: 1
}, 500);
},
function() {
$(this).find("div.more-info").stop().animate({
opacity: 0
}, 200);
});
.wrapper {
margin: 0 auto;
width: 940px;
overflow: hidden;
}
#services-menu {
position: absolute;
width: 100%;
height: 272px;
background: blue;
margin-top: 83px;
z-index: 5;
}
#services-menu #services {
padding: 25px 0;
}
#services-menu .col-4 {
position: relative;
background: blue;
color: black;
text-align: center;
height: 201px;
padding: 32px 0;
overflow: visible;
}
#services-menu .col-4 .intro-content:hover + .more-info {
opacity: 1.0;
display: block;
visibility: visible;
z-index: 100000;
}
#services-menu .col-4 .more-info {
/* position:absolute;
width: 123px;
height: 201px;
background: white;
overflow: hidden;
z-index: 9999;
visibility: hidden;
padding: 10px;
text-align: left;
line-height: 1.3;
top: -27px;
left: 41%; */
display: none;
position: absolute;
width: 123px;
height: 201px;
background: white;
overflow: hidden;
z-index: 999;
top: 130px;
left: 44%;
}
#services-menu .col-4 .more-info:active {
display: block;
}
#services-menu .col-4 .more-info:hover {
display: block;
}
#services-menu .col-4 .more-info a {
text-transform: uppercase;
text-decoration: none;
color: blue;
}
#services-menu .col-4 .more-info a:hover {
color: red;
}
#services-menu .col-4 img {
display: block;
margin: 0 auto;
padding-bottom: 18px;
}
#services-menu .col-4 a {
color: blue;
text-decoration: none;
}
#services-menu .col-4 a span {
display: block;
}
<section id="services-menu">
<div class="wrapper">
<div id="services">
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
</div>
<!-- /#services -->
</div>
<!-- /.wrapper -->
</section>
<!--/ #services-menu -->
我正在寻找实现一些简单但挂断它的方法。这是我想要做的事情的粗略副本:http://codepen.io/anon/pen/LGZaPr
我的 Sass 用于 col-4 parent:
.col-4 {
background: $primary-color;
color: $heading-two;
font-family: $secondary-font;
text-align: center;
height: 201px;
padding: rem-calc(32px 0);
overflow: visible;
}
more-info intro-content之前的内容:
.more-info {
@media #{$xlarge-breakpoint} {
width: calc-percent(70px, $site-width);
}
position:absolute;
width: calc-percent(123px, $site-width);
height: 201px;
background: $base-color;
overflow: hidden;
z-index: 9999;
visibility: hidden;
font-family: $primary-font;
padding: rem-calc(10px);
color: $primary-color;
text-align: left;
@include transition(bottom, 0.3s, ease-in-out);
line-height: 1.3;
@media #{$medium-breakpoint} {
width: 22.115%;
}
&:active {
display: block;
}
&:hover {
display: block;
}
a {
text-transform: uppercase;
font-family: $secondary-font;
text-decoration: none;
color: $primary-color;
&:hover {
color: $heading-two;
}
}
} // .more-info
我的 Sass 悬停看起来像:
.intro-content {
//height: 100%;
&:hover + .more-info {
opacity: 1.0;
display: block;
visibility: visible;
position: relative;
z-index: 100000;
}
}
我想将鼠标悬停在 .intro-content 上以显示 .more-info 中的内容。我希望能够保持 more-info div 打开,直到我将光标移开,这样任何人都可以单击框中的 link / 突出显示任何文本。
感谢任何帮助,谢谢!
好吧,您可以为此使用一些 javascript。像这样..
我编辑了你的一些 CSS。只需将 js 脚本复制并粘贴到您的代码中,它就会开始工作。我还编辑了你的 CSS 并给了你它的编译版本。它的 Scss 版本可以找到 here
编辑
检查您的网站后,我发现您的 wrapper
class 已将溢出设置为隐藏,这会阻止您的弹出窗口完整显示。
我唯一能找到的解决办法就是禁用它。禁用后可以看到more-info
的整个方框。 (或将其设置为可见)
.wrapper {
margin: 0 auto;
width: 940px;
overflow: visible;
}
还有这个到您的更多信息悬停部分。
#services-menu .col-4 .more-info:hover {
display: block;
position: relative; /*NEW */
}
position relative 防止弹框溢出
接下来是媒体查询。
您已根据网页的视口设置了宽度。不应该是这样的。。
您应该将其设置为 col-4 的 width: 100%
,然后可以基于视口。这样 more-info
弹出窗口的宽度始终与 col-4
相同。
也这样做
#services-menu .col-4 .more-info {
display: none;
position: absolute;
width: 100%; /*instead of the 13.08511% you have as default. */
height: 201px;
background: #ffffff;
overflow: hidden;
z-index: 999;
-moz-transition: bottom, 0.3s, ease-in-out;
-o-transition: bottom, 0.3s, ease-in-out;
-webkit-transition: bottom, 0.3s, ease-in-out;
transition: bottom, 0.3s, ease-in-out;
line-height: 1.3;
}
我认为你不需要媒体查询,所以从你那里删除这个 css。
@media only screen and (min-width: 1441px){
#services-menu .col-4 .more-info {
width: 8.51064%;
}
}
一旦你这样做了。一切都会好起来的。
编辑结束
$("div.intro-content").hover(
function() {
$(this).find("div.more-info").stop().animate({
opacity: 1
}, 500);
},
function() {
$(this).find("div.more-info").stop().animate({
opacity: 0
}, 200);
});
.wrapper {
margin: 0 auto;
width: 940px;
overflow: hidden;
}
#services-menu {
position: absolute;
width: 100%;
height: 272px;
background: blue;
margin-top: 83px;
z-index: 5;
}
#services-menu #services {
padding: 25px 0;
}
#services-menu .col-4 {
position: relative;
background: blue;
color: black;
text-align: center;
height: 201px;
padding: 32px 0;
overflow: visible;
}
#services-menu .col-4 .intro-content:hover + .more-info {
opacity: 1.0;
display: block;
visibility: visible;
z-index: 100000;
}
#services-menu .col-4 .more-info {
/* position:absolute;
width: 123px;
height: 201px;
background: white;
overflow: hidden;
z-index: 9999;
visibility: hidden;
padding: 10px;
text-align: left;
line-height: 1.3;
top: -27px;
left: 41%; */
display: none;
position: absolute;
width: 123px;
height: 201px;
background: white;
overflow: hidden;
z-index: 999;
top: 130px;
left: 44%;
}
#services-menu .col-4 .more-info:active {
display: block;
}
#services-menu .col-4 .more-info:hover {
display: block;
}
#services-menu .col-4 .more-info a {
text-transform: uppercase;
text-decoration: none;
color: blue;
}
#services-menu .col-4 .more-info a:hover {
color: red;
}
#services-menu .col-4 img {
display: block;
margin: 0 auto;
padding-bottom: 18px;
}
#services-menu .col-4 a {
color: blue;
text-decoration: none;
}
#services-menu .col-4 a span {
display: block;
}
<section id="services-menu">
<div class="wrapper">
<div id="services">
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
<div class="col-4">
<div class="intro-content">
<img src="http://placehold.it/156x96">
<a href="#">Service Name</a>
</div>
<!-- /.intro-content -->
<div class="more-info">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tincidunt eros quis odio porttitor rhoncus. Ut condim</p>
<p><a href="#">Start Here</a></p>
</div>
<!-- /.more-info -->
</div>
<!-- /.col-4 -->
</div>
<!-- /#services -->
</div>
<!-- /.wrapper -->
</section>
<!--/ #services-menu -->