【问题标题】:how to prevent css div popup from jumping back to the top of the page如何防止css div popup跳回页面顶部
【发布时间】:2013-08-20 21:49:34
【问题描述】:

我对 JS 并不精通,但我正在尝试为学校搭建一个简单的作品集网站,并用黑色透明 div 充当灯箱。我正在使用 CSS 和 JS 来切换这个 div,但是在一个长滚动页面上,它在打开时会跳到顶部。这是我的 CSS:

<style type="text/css">
div.transbox{
  width:100%;
  height:100%;
  margin:0px 0px;
  position:fixed;
  background-color:#000000;
  background:rgba(0,0,0,0.75);
  z-index:99;
}
p.ptransbox{
    width:400px;
    padding:5px;
    position:relative;
    background:rgba(255,255,255,0.5);
    color:#000;
    border-radius:5px;
}
img.itransbox{
    padding:10px;
    position:relative;
    background:rgba(255,255,255,0.5);
    border-radius:5px;
}

这里是 JS:

  var toggle2 = function() {
  var mydiv = document.getElementById('02');
  if (mydiv.style.display === 'none' || mydiv.style.display === '')
    mydiv.style.display = 'block';
  else
    mydiv.style.display = 'none'
  }

这是可以立即作为打开 div 的链接查看的代码(打开):

<td style="float:left; width: 33%" class="school">
<a title="Girl in Chair, 2012" class="tooltip" href="#" onclick="toggle2();" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image2','','images/thumbs/chairO.png',1)">
<img src="images/thumbs/chair.png" id="Image2" /></a>

这是启动“灯箱”的代码,可以选择将其关闭:

<a href="#" onclick="toggle2();">
<div align="center" id="02" class="transbox" style="display: none;">
<p><img class="itransbox" src="images/anti-thumbs/chair.jpg" /></p>
<p class="ptransbox"><strong>Wörner Hall</strong>, 2010</p></div></a>

请忽略所有标题、替代项或任何特定于内容的内容。您可以在此处查看我的投资组合:http://www.student.nvcc.edu/home/majeffers3/,如果您注意到,当您滚动到底部并单击一个项目时,它会将您跳到顶部。我已经潜伏了很长时间,我第一次发布问题,因为我似乎找不到解决方案。非常感谢您的所有帮助!

【问题讨论】:

  • 在您单击带有href="#" 的锚元素的处理程序中使用event.preventDefault()

标签: javascript css html


【解决方案1】:

您需要防止在单击链接时发生默认操作。最简单的方法是从onclick 处理程序返回false

<a title="Girl in Chair, 2012" class="tooltip" href="#" onclick="toggle2(); return false;" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image2','','images/thumbs/chairO.png',1)">

【讨论】:

    【解决方案2】:

    请将href="#" 更改为href="javascript:;"。点击时它只是转到“#”链接。

    【讨论】:

    【解决方案3】:

    确保从 onclick 处理程序返回 false。如果不这样做,超链接的默认操作就会启动,这意味着您将导航到 #,这意味着当前页面的顶部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多