【问题标题】:Overlay hover effect叠加悬停效果
【发布时间】:2017-06-22 18:07:42
【问题描述】:

我无法解决这个问题,我想制作覆盖悬停效果,当鼠标在图像上方时,会有一个图层和文字出来。但是现在不行了,有7张图片,当鼠标触摸它们时,所有的图片都会同时叠加效果,不会消失。太感谢了。

html

<article class="col-md-4 isotopeItem sm">
                                <div class="portfolio-item">
                                    <div class="content-item">
                                    <a href="https://www.w3schools.com">
                                        <img src="img/Case Study/Hotel-Kitchen-Equipment.jpg" alt="Kitchen" style="width:360px;height:292px;">
                                        <div class="overlay"></div>
                                        <div class="corner-overlay-content">Kitchen</div>
                                        <div class="overlay-content">
                                            <p>Kitchen</p>
                                        </div>
                                    </a>
                                    </div>
                                </div>
                            </article>

css

.portfolio-items article img {width:100%;} 

.portfolio-item {
	display: block;
	position: relative;
	-webkit-transition: all 0.2s ease-in-out;
	-moz-transition: all 0.2s ease-in-out;
	-o-transition: all 0.2s ease-in-out;
	transition: all 0.2s ease-in-out;
	
}
.portfolio-item img {
	-webkit-transition: all 300ms linear;
	-moz-transition: all 300ms linear;
	-o-transition: all 300ms linear;
	-ms-transition: all 300ms linear;
	transition: all 300ms linear;
	background: #fff;
	opacity:0.9;	
}

.portfolio-item .portfolio-desc {
    display: block;
    opacity: 0;
    position: absolute;
    width: 100%;
	left: 0;
	top: 0;
	color: rgba(220, 220, 220, 0.7);
}
.portfolio-item:hover .portfolio-desc {
	padding-top: 20%;
	height: 100%;
    transition: all 200ms ease-in-out 0s;
	opacity: 1;
}

.portfolio-item .portfolio-desc a {
	color: #ED502E;
}
.portfolio-item .portfolio-desc a:hover {
	/*text-shadow: 2px 2px 1px rgba(0, 0, 0, 0.7);*/
	text-decoration: none;
}
.portfolio-item .portfolio-desc .folio-info {
	top:-20px;	
	padding: 30px;
	height: 0;
    opacity: 0;
    position: relative;
}
.portfolio-item:hover .folio-info{
	height: 100%;
    opacity: 0.8;
    transition: all 500ms ease-in-out 0s;
	top:-10px;
}


.portfolio-item .portfolio-desc .folio-info h5 {
	text-transform: uppercase;
	
}
.portfolio-item .portfolio-desc .folio-info p {
	
	font-size: 12px;
}
.content-item{
  overflow: hidden;
  backface-visibility: hidden;
	
}
.overlay{
    border-bottom: 76px solid #000000;
    border-left: 360px solid #000000;
    bottom: 0;
    height: 0;
    opacity: .65;
    position: absolute;
    right: 0;
    text-indent: -9999px;
    transition: all .9s ease-out;
    width: 0;
  }
:hover .overlay{
    border-bottom: 292px solid #000000; 
    border-left: 360px solid #000000;
    transition: all .9s ease-out;
  }
  .corner-overlay-content{
    bottom: 26px;
    color: #ffffff;
    position: absolute;
    right: 114px;
    transition: all .5s ease-out;
    font-size: 40px;
  }
  :hover .corner-overlay-content{
    opacity: 0;
    transition: all .10s ease-out;
  }
  .overlay-content{
    bottom: 0;
    color: #333;
    left: 0;
    opacity: 0;
    padding: 30px;
    position: absolute;
    right: 0;
    top: 0;
    transition: all .10s ease-out;
}
.overlay-content p{
    color: #ffffff;
    position: absolute;
    right: 114px;
    font-size: 40px;
    bottom: 124px;
}

:hover .overlay-content{
    opacity: 1;
    transition: all .5s ease-out;
}
<article class="col-md-4 isotopeItem sm">
									<div class="portfolio-item">
										<div class="content-item">
										<a href="@">
											<img src="img/Case Study/Hotel-Kitchen-Equipment.jpg" alt="Kitchen" style="width:360px;height:292px;">
 											<div class="overlay"></div>
  											<div class="corner-overlay-content">Kitchen</div>
  											<div class="overlay-content">
  												<p>Kitchen</p>
    										</div>
										</a>
  										</div>
									</div>
								</article>

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    试试这个代码

    CSS

    .portfolio-items article img {
      width: 100%;
    }
    
    .portfolio-item {
      display: block;
      position: relative;
      -webkit-transition: all 0.2s ease-in-out;
      -moz-transition: all 0.2s ease-in-out;
      -o-transition: all 0.2s ease-in-out;
      transition: all 0.2s ease-in-out;
    }
    .portfolio-item img {
      -webkit-transition: all 300ms linear;
      -moz-transition: all 300ms linear;
      -o-transition: all 300ms linear;
      -ms-transition: all 300ms linear;
      transition: all 300ms linear;
      background: #fff;
      opacity: 0.9;
    }
    
    .portfolio-item .portfolio-desc {
      display: block;
      opacity: 0;
      position: absolute;
      width: 100%;
      left: 0;
      top: 0;
      color: rgba(220, 220, 220, 0.7);
    }
    .portfolio-item:hover .portfolio-desc {
      padding-top: 20%;
      height: 100%;
      transition: all 200ms ease-in-out 0s;
      opacity: 1;
    }
    
    .portfolio-item .portfolio-desc a {
      color: #ED502E;
    }
    .portfolio-item .portfolio-desc a:hover {
      /*text-shadow: 2px 2px 1px rgba(0, 0, 0, 0.7);*/
      text-decoration: none;
    }
    .portfolio-item .portfolio-desc .folio-info {
      top: -20px;
      padding: 30px;
      height: 0;
      opacity: 0;
      position: relative;
    }
    .portfolio-item:hover .folio-info {
      height: 100%;
      opacity: 0.8;
      transition: all 500ms ease-in-out 0s;
      top: -10px;
    }
    
    .portfolio-item .portfolio-desc .folio-info h5 {
      text-transform: uppercase;
    }
    .portfolio-item .portfolio-desc .folio-info p {
      font-size: 12px;
    }
    .content-item {
      overflow: hidden;
      backface-visibility: hidden;
    }
    .overlay {
      border-bottom: 76px solid #000000;
      border-left: 360px solid #000000;
      bottom: 0;
      height: 0;
      opacity: .65;
      position: absolute;
      right: 0;
      text-indent: -9999px;
      transition: all .9s ease-out;
      width: 0;
    }
    .content-item:hover .overlay {
      border-bottom: 292px solid #000000;
      border-left: 360px solid #000000;
      transition: all .9s ease-out;
    }
    .corner-overlay-content {
      bottom: 26px;
      color: #ffffff;
      position: absolute;
      right: 114px;
      transition: all .5s ease-out;
      font-size: 40px;
    }
    .content-item:hover .corner-overlay-content {
      opacity: 0;
      transition: all .10s ease-out;
    }
    .overlay-content {
      bottom: 0;
      color: #333;
      left: 0;
      opacity: 0;
      padding: 30px;
      position: absolute;
      right: 0;
      top: 0;
      transition: all .10s ease-out;
    }
    .overlay-content p {
      color: #ffffff;
      position: absolute;
      right: 114px;
      font-size: 40px;
      bottom: 124px;
    }
    
    .content-item:hover .overlay-content {
      opacity: 1;
      transition: all .5s ease-out;
    }
    

    你不应该直接使用 :hover 。利用容器并将鼠标悬停在其上触发效果。

    link for reference

    希望这会有所帮助..

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2011-06-20
      相关资源
      最近更新 更多