悬停父元素后的CSS悬停元素

Posted

技术标签:

【中文标题】悬停父元素后的CSS悬停元素【英文标题】:CSS hover element after hover parent element 【发布时间】:2018-05-03 11:49:40 【问题描述】:

我有一个带有两个背景图像的分屏。在每一边我都有一个 image.png 和一个 image-hover.png。当我将光标放在背景图像或 image.png 上时,我想将 image-hover.png 放在 image.png 的顶部。

我设法做到了,但是当我将光标放在背景图像上时,悬停在 image.png 上激活,当我将光标拖到 image.png 上时,悬停消失。

这是我的页面:http://loopaa.com/split/

这是我的代码:

@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600,800');

html, body 
  height: 100%;
  min-height: 18em;
background: linear-gradient(90deg, #534591 50%, #e2d649 50%);



.stanga 
  background-image: url("http://loopaa.com/split/left-side.png");
  height: 100%;

    
.dreapta 
  background-image: url("http://loopaa.com/split/right-side.png");
  height: 100%;


.split-pane 
  padding-top: 22%;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  height: 100%;
  font-size: 2em;
  color: white;
  font-family: 'Open Sans', sans-serif;
  font-weight:300;



.split-pane > div 
  position: relative;
  top: 40%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
  text-align: center;

.split-pane > div .text-content 
  line-height: 1.6em;
  margin-bottom: 1em;

.split-pane > div .text-content .big 
  font-size: 2em;
  text-decoration:none;



#cfmargin: auto;
    width: 400px;

#cf .left-cheery
    width: 400px;
    height: 360px;
    background: url(http://loopaa.com/split/cc.png);
    border:0;
    transition: all 0.35s ease-in-out;


.stanga:hover .left-cheery
    background: url(http://loopaa.com/split/cc-hover.png) !important;
    transition: all 1s ease-in;   







#cf .right-cheery
    width: 400px;
    height: 360px;
    background: url(http://loopaa.com/split/cc2.png);
    border:0;
    transition: all 0.35s ease-in-out;


.dreapta:hover .right-cheery
    background: url(http://loopaa.com/split/cc2-hover.png) !important;
    transition: all 1s ease-in;   




.split-pane button, .split-pane a.button-left, .split-pane a.button-right 
  font-family: 'Open Sans', sans-serif;
	font-weight:800;
  background: none;
  border: 1px solid #3b3277;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  width: 15em;
  padding: 0.7em;
  font-size: 0.5em;
  text-decoration: none;
  color: #3b3277;
  display: inline-block;
  cursor: pointer;
  -moz-transition: all 0.2s ease-out;
  -o-transition: all 0.2s ease-out;
  -webkit-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;

.split-pane button:hover, .split-pane a.button-left:hover 
  text-decoration: none;
  background-color: #3b3277;
  border-color: #3b3277;
  cursor: pointer;


.button-leftborder: 1px solid #e1d622 !important;color:#e1d622 !important;margin-bottom:6px;
.button-left:hoverbackground-color:#e1d622 !important;color:#3b3277 !important;

.button-rightborder: 1px solid #3b3277 !important;color:#3b3277 !important;margin-bottom:6px;
.button-right:hoverbackground-color:#3b3277 !important;color:#e1d622 !important;

.uiux-side.split-pane button:hover, .split-pane a.button-left:hover 
  color: #ffffff;

.frontend-side.split-pane button:hover, .split-pane a.button-left:hover 
  color: blue;


#bg-logo border-radius: 50%;
	width: 125px;
	height: 125px; 
    background:#ffffff;
    margin: auto;
    padding-top:38px;


#split-pane-or 
  font-size: 2em;
  color: white;
  font-family: 'Open Sans', sans-serif;
  text-align: center;
  width: 100%;
  position: absolute;
  top: 43.5%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);


.big 
  font-size: 2em;


#slogan 
  position: absolute;
  width: 100%;
  z-index: 100;
  text-align: center;
  vertical-align: baseline;
  top: 0.5em;
  color: white;
  font-family: 'Open Sans', sans-serif;
  font-size: 1.4em;


#slogan img 
  height: 0.7em;

.text-content p
	text-transform:uppercase;
	font-size:1.6rem;
	font-weight:600;
	line-height: 140%;
	margin-top:12px;

.big 
	font-weight:800;












@media only screen and (max-width: 1368px) 
    .split-pane 
    .split-pane > div .text-content .big font-size: 1em;
    .split-pane > div .text-content line-height: 1em;margin-bottom: 0;
    .text-content pmargin-top: 8px;font-size: 1.4rem;





@media only screen and (max-width: 1025px) 

.split-pane

.split-pane > div .text-content .big font-size: 1.4em;

#cf .left-cheery
    width: 200px;
    height: 180px;
    background: url(http://loopaa.com/split/cc-min.png);

.stanga:hover .left-cheery
    background: url(http://loopaa.com/split/cc-min-hover.png) !important;


#cf width:200px;

#cf .right-cheery
    width: 200px;
    height: 180px;
    background: url(http://loopaa.com/split/cc-min.png);

.dreapta:hover .right-cheery
    background: url(http://loopaa.com/split/cc-min-hover.png) !important;




@media (max-width:801px) and (min-width:738px) 
    #bg-logodisplay:none;
   .split-pane 
   .split-pane > div .text-content line-height: 1.6em;margin-bottom: 10px;




@media only screen and (max-width: 737px) 
    #bg-logodisplay:none;
    .split-pane padding-top: 5%;
    .split-pane > div .text-content .big font-size: 1em;
    .split-pane > div .text-content line-height: 1em;margin-bottom: 0;
    .text-content pmargin-top: 8px;font-size: 1.4rem;




@media only screen and (max-width:569px)
    
    #cfdisplay:none;
    .split-pane > div .text-content .big font-size: 1em;
    .split-pane > div .text-content line-height: 1em;margin-bottom: 0;
    .text-content pmargin-top: 8px;font-size: 1.4rem;


@media only screen and (max-width:568px)
    
    #cfdisplay:none;
    .split-pane > div .text-content .big font-size: 0.9em;
    .split-pane > div .text-content line-height: 1em;margin-bottom: 0;
    .text-content pmargin-top: 8px;font-size: 1rem;
<head>
  <meta charset="UTF-8">
  <title>Cheerup</title>
  
  <link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css'>
</head>

<body>
  <div class='split-pane col-xs-12 col-sm-6 stanga' id="body-half-color">
  <div>
      
    <div id="cf">
        <div class="left-cheery"></div>
    </div>
    
    <div class='text-content' style="color:#e1d622;">
      <!--<div class="bold">Photobooth for</div>-->
      <div class='big'>CORPORATE CHEERY</div>
      <p>Oferim experiențe memorabile, pline de zâmbete și veselie,<br /> la orice tip de eveniment business</p>
    </div>
    <a class='button-left'>
      AFLA CUM
    </a>
  </div>
</div>
<div class='split-pane col-xs-12 col-sm-6 dreapta'>
  <div>
 
 
    <div id="cf">
        <div class="right-cheery"></div>
    </div>
 
    <div class='text-content' style="color:#3b3277;">

      <div class='big'>PRIVATE PARTY CHEERY</div>
      <p>Cu noi, distracția primează în rândul celor alături de care ai ales să<br /> petreci una din cele mai importante zile din viața ta</p>
    </div>
    <a class='button-right'>
      AFLA CUM
    </a>
  </div>
</div>
<div id='split-pane-or'>
  <div id="bg-logo">
    <img src='http://loopaa.com/split/logo-cheerup-mic.png' />
  </div>
</div>
  
</body>

我希望我的描述正确并且您理解问题所在。

【问题讨论】:

请分享您的代码。 你是否同时为背景图片和正面图片应用悬停? 看起来悬停只适用于每一侧的一个部分,请尝试在每一侧的整个 div 上添加悬停 我在帖子中添加了我的代码,很抱歉错过了。 @dan6657 将鼠标悬停在每个(左右)的整个部分上,但是“.stanga:hover .left-cheery”会出现问题。 【参考方案1】:

我通常用来解决 CSS 问题的方法是在所有内容周围加上彩色边框 - 我在此处对您的代码进行了此操作:

http://jsfiddle.net/kNB3c/429/

然后你可以看到你的悬停在哪个部分失败(因为你已经为边框着色)所以它在上面的蓝色部分失败..这是#split-pane-or

这是你的中间标志部分,这需要它的宽度减少到大约 20%(或者你希望那个部分有多小)

您可以将#split-pane 中的宽度属性设置为如下所示:

margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
width: 20%;

或者使宽度更小,以便您可以将更多鼠标悬停在该部分上..

附:不错的设计!

【讨论】:

以上是关于悬停父元素后的CSS悬停元素的主要内容,如果未能解决你的问题,请参考以下文章

根据悬停的子元素设置不同的父元素样式 | CSS

CSS - 为啥不:悬停父隐藏子元素

通过 CSS 将鼠标悬停在父元素上时显示 :after

如何在父元素和子元素上设置 CSS 悬停效果

CSS减轻父鼠标悬停的子元素

将父元素悬停到子标签元素后如何更改相同的css样式?