【问题标题】:Background image div clickable背景图像 div 可点击
【发布时间】:2017-08-28 10:13:16
【问题描述】:

我有一个带有背景图片的 div。如何使 div (背景图像)可点击?单击 div(图像)时,我想取消隐藏另一个 div。点击代码:onclick="javascript:unhide('kazen')"

    var clickit = document.getElementsByClassName("fh5co-grid")[0];
    		var kazen = document.getElementById("kazen");
    
    		clickit.addEventListener("click", function(){
    			if (kazen.style.display === "none") {
    				kazen.style.display="block";
    			} else {
    				kazen.style.display="none";
    			}
    		});
    
    		kazen.addEventListener("click", function(){
    			this.style.display="none";
    		});
    #kazen {
      background-color: #cc9;
      display: none;
      width: 100px;
      height: 100px;
      position: absolute;
      top: 15px;
      left: 15px;
    }
    
    .fh5co-grid {
    }
    <div class="col-md-4 col-sm-6 ">
    									<div class="fh5co-grid" style="background-image: url(images/PREVIEW_Shop_02-29.jpg);">
    										<a class="image-popup text-center" >
    											<div class="prod-title ">
    												<h3>Kaas</h3>
    												<h4>in ons aanbod hebben we verse en harde kazen - binnenkort meer hierover</h4>
    											</div>
    										</a>
    									</div>
    								</div>
    
    								<div id="kazen" >
    									<div class="col-md-12">
    										<div class="fh5co-grid" style="background-image: url(images/Melkerhei_Dag2-16-4.jpg);">
    											<a class="image-popup text-center" >
    												<div class="prod-title ">
    
    												</div>
    											</a>
    										</div>
    									</div>
    
    								</div>

【问题讨论】:

  • fh5co-grid可点击
  • @Liam 在 css 中?
  • $('.fh5co-gri').on('click', function() {unhide('kazen') }); -- jQuery
  • 避免使用内联 javascript。坏坏坏。丑陋的。维持痛苦。
  • @Snowmonkey 有什么更好的解决方案?

标签: javascript jquery html


【解决方案1】:

根据您的描述,这似乎非常接近。背景图像不可点击,它是 div 本身。这可以用 jQuery 来完成,是的,但是很简单,纯 javascript 在这里很容易。单击红框区域将显示 id 为 kazen 的 div,再次单击 kazen 或红框区域将隐藏它。

注意,我的解决方案有一个奇怪的故障。我更改了显示 if/else 以检查它当前是否显示并隐藏它,而不是它当前是否隐藏以显示它。这导致了在第一次点击时重新隐藏喀山 div 的奇怪效果。

在 stackoverflow 中,您需要一个绝对网址来显示图像。如果您没有在此处看到您的图像,这可能就是原因。

var clickit = document.getElementsByClassName("fh5co-grid")[0];
var kazen = document.getElementById("kazen");

clickit.addEventListener("click", function(){
  if (kazen.style.display === "block") {
    kazen.style.display="none";
  } else {
    kazen.style.display="block";
  }
});

kazen.addEventListener("click", function(){
  this.style.display="none";
 });
#kazen {
  background: url("https://static.pexels.com/photos/6832/waterfall-beauty-lets-explore-lets-get-lost.jpg");
  background-size: 100%;
  display: none;
  width: 100px;
  height: 100px;
  position: absolute;
  top: 15px;
  left: 15px;
  color: #fff;
}

.fh5co-grid {
  border: 1px dotted red;
}
<div class="col-md-4 col-sm-6 ">
<div class="fh5co-grid" style="background-image: url(images/PREVIEW.jpg);">
  <a class="image-popup text-center">
    <div class="prod-title ">
      <h3>cheese</h3>
      <h4>tekst</h4>
    </div>
  </a>
</div>
</div>
<div id="kazen">
  Click me to hide!
  </div>

【讨论】:

  • 当您说仍然无法正常工作时,您到底在说什么?是否显示 div?
  • div不显示,无法点击图片
  • 在 stackoverflow 中,相对图像 url 会中断,因此不会显示。另外,我在我的答案中编辑了代码,我的 if/else 语句中存在显示问题。尝试再次查看上面的代码,看看它是否更适合您。
【解决方案2】:

如果这是你想要的,你可以看看我创建的fiddle

$(document).ready(function() {
  $("div.fh5co-grid").click(function() {
    $("div.next").css("display", "block");
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-4 col-sm-6 ">
  <div class="fh5co-grid" style="background-image: url(http://placehold.it/350x150);">
    <a class="image-popup text-center">
      <div class="prod-title ">
        <h3>cheese</h3>
        <h4>tekst</h4>
      </div>
    </a>
  </div>
</div>

<div style="background-color: #000; display:none" class="next">Next div</div>

【讨论】:

  • 请在答案中添加您的代码。您也可以在此处创建可执行的 sn-p。 (通知&lt;&gt;图标
  • 如果 jsFiddle 被某人的防火墙阻止、消失或关闭,您的回答没有任何价值。请在此处发布代码。
  • 好吧,照着做。
  • 如果你想发布一个小提琴,这对我来说从来都不是问题,但如果可能的话,也包括一个内联示例。唯一的问题是脚本变得太长,此时小提琴(或 bin 或 codepen)才有意义。
  • 对不起,我在这里创建一个可执行的 sn-p 时遇到了一些问题。虽然添加了代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多