JavaScript 画廊通过点击导航菜单触发
JavaScript gallery gets triggered by click on navigation menu
我在相同的网页。
这样做之后,当点击导航菜单中的 link 时,它会向下滚动到页面的相关部分。它会按应有的方式滚动,但出于某种原因,它还会打开 PhotoSwipe 画廊。
点击菜单 link 应该只会滚动到相关区域,不会触发 PhotoSwipe 图库。
我使用了 FixedNav 和 PhotoSwipe 的所有默认设置,并将它们放在一个页面上以说明问题:
https://jsfiddle.net/5pw1rem9/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Adtile Fixed Nav</title>
<meta name="author" content="Adtile">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="css/styles.css">
<title>CodePen - PhotoSwipe Demo</title>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.0/photoswipe.css'>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.0/default-skin/default-skin.css'>
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Bitter:400,700,400italic'>
<link rel="stylesheet" href="./style.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<link rel="stylesheet" href="css/ie.css">
<![endif]-->
<script src="js/responsive-nav.js"></script>
</head>
<body>
<header>
<a href="#home" class="logo" data-scroll>Fixed Nav</a>
<nav class="nav-collapse">
<ul>
<li class="menu-item active"><a href="#home" data-scroll>Home</a></li>
<li class="menu-item"><a href="#about" data-scroll>About</a></li>
<li class="menu-item"><a href="#projects" data-scroll>Projects</a></li>
<li class="menu-item"><a href="#blog" data-scroll>Blog</a></li>
<li class="menu-item"><a href="http://www.google.com" target="_blank">Google</a></li>
</ul>
</nav>
</header>
<section id="home">
<h1>Fixed Nav</h1>
<!-- partial:index.partial.html -->
<div class="container">
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<h1 class="text-center">
<small><em>..and a PhotoSwipe Demo</em></small>
</h1>
<!-- Galley wrapper that contains all items -->
<div id="gallery" class="gallery" itemscope itemtype="http://schema.org/ImageGallery">
<!-- Use figure for a more semantic html -->
<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
<!-- Link to the big image, not mandatory, but usefull when there is no JS -->
<a href="https://unsplash.it/1200/900/?image=702" data-caption="Sea side, south shore<br><em class='text-muted'>© Dominik Schröder</em>" data-width="1200" data-height="900" itemprop="contentUrl">
<!-- Thumbnail -->
<img src="https://unsplash.it/400/300/?image=702" itemprop="thumbnail" alt="Image description">
</a>
</figure>
在您的函数中,您有一个针对 'a' 的点击事件,其中 a 不仅仅是图库链接;单击功能也会影响您的菜单链接。这就是导致您出现问题的原因。
要解决此问题,您需要更具体地定义要受单击事件影响的链接。在你的情况下,你所要做的就是在 a
之前插入 div id“#gallery”,因为你的图库 div 中的所有链接都是图像,如下所示:
$('#gallery a').click(function(event) {
//etc..
查看(略有更新)fiddle
但是,如果图库 div 中还有其他链接(图片除外),这将不是一个理想的解决方案,因此您还应该考虑使用 class 来标识您的图库图像组,并使用 class 代替。
希望对您有所帮助
我在相同的网页。
这样做之后,当点击导航菜单中的 link 时,它会向下滚动到页面的相关部分。它会按应有的方式滚动,但出于某种原因,它还会打开 PhotoSwipe 画廊。
点击菜单 link 应该只会滚动到相关区域,不会触发 PhotoSwipe 图库。
我使用了 FixedNav 和 PhotoSwipe 的所有默认设置,并将它们放在一个页面上以说明问题:
https://jsfiddle.net/5pw1rem9/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Adtile Fixed Nav</title>
<meta name="author" content="Adtile">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="css/styles.css">
<title>CodePen - PhotoSwipe Demo</title>
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.0/photoswipe.css'>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.0/default-skin/default-skin.css'>
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Bitter:400,700,400italic'>
<link rel="stylesheet" href="./style.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<link rel="stylesheet" href="css/ie.css">
<![endif]-->
<script src="js/responsive-nav.js"></script>
</head>
<body>
<header>
<a href="#home" class="logo" data-scroll>Fixed Nav</a>
<nav class="nav-collapse">
<ul>
<li class="menu-item active"><a href="#home" data-scroll>Home</a></li>
<li class="menu-item"><a href="#about" data-scroll>About</a></li>
<li class="menu-item"><a href="#projects" data-scroll>Projects</a></li>
<li class="menu-item"><a href="#blog" data-scroll>Blog</a></li>
<li class="menu-item"><a href="http://www.google.com" target="_blank">Google</a></li>
</ul>
</nav>
</header>
<section id="home">
<h1>Fixed Nav</h1>
<!-- partial:index.partial.html -->
<div class="container">
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<h1 class="text-center">
<small><em>..and a PhotoSwipe Demo</em></small>
</h1>
<!-- Galley wrapper that contains all items -->
<div id="gallery" class="gallery" itemscope itemtype="http://schema.org/ImageGallery">
<!-- Use figure for a more semantic html -->
<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
<!-- Link to the big image, not mandatory, but usefull when there is no JS -->
<a href="https://unsplash.it/1200/900/?image=702" data-caption="Sea side, south shore<br><em class='text-muted'>© Dominik Schröder</em>" data-width="1200" data-height="900" itemprop="contentUrl">
<!-- Thumbnail -->
<img src="https://unsplash.it/400/300/?image=702" itemprop="thumbnail" alt="Image description">
</a>
</figure>
在您的函数中,您有一个针对 'a' 的点击事件,其中 a 不仅仅是图库链接;单击功能也会影响您的菜单链接。这就是导致您出现问题的原因。
要解决此问题,您需要更具体地定义要受单击事件影响的链接。在你的情况下,你所要做的就是在 a
之前插入 div id“#gallery”,因为你的图库 div 中的所有链接都是图像,如下所示:
$('#gallery a').click(function(event) {
//etc..
查看(略有更新)fiddle
但是,如果图库 div 中还有其他链接(图片除外),这将不是一个理想的解决方案,因此您还应该考虑使用 class 来标识您的图库图像组,并使用 class 代替。
希望对您有所帮助