0

私は自分のホームページにCSS-Tricks Smooth Scrolling スニペットを実装していましたが、ホームページを再構築することを決定するまで、素晴らしく機能していました。今ではまったく機能していません。

ここに私が何をしたかについての歴史があります。単一ページのスクロール Web サイトを構築しようとしています。もともと、Wordpress でページを作成し、「about」「work」「contact」という 3 つの div を挿入しました。Smooth Scrolling スニペットを実装したところ、すべてがうまく機能していました。しかし、Wordpress のカスタム投稿タイプの魅力を発見するために、さらに調査を行うことにしました。WP_query を使用して 3 つの異なるページを含めるカスタム テンプレート (page-include.php) を使用して、ホームページを再構築することにしました。ページの 2 つ (「about」と「contact」) は実際の Wordpress ページですが、3 つ目 (「work」) はカスタム投稿タイプをプルするカスタム ループです。簡単に言うと、[設定] > [閲覧] に移動し、ホームページを新しいページに直接変更すると、スムーズ スクロールが機能しなくなりました。ナビゲーション バーのリンクをクリックすると、ページは適切な場所にジャンプしますが、まったくスクロールしません。ホームページを古いバージョンに戻しても、スクロールは正常に機能します。なぜそれが機能しなくなったのかについてのアイデアはありますか?

それが役に立ったら、ここに私のサイトがあります。また、ご参考までに、私のテーマはRootsに基づいています。

4

1 に答える 1

0

JavaScript の実行時にエラーが発生したため、スクリプトが終了し、スムーズ スクロールが適用されません。

あなたのスクリプトはplugins.jshref. 残念ながら、ナビゲーション バーに次のようなリンクがあります。<a href="#anchor3">Anchor 3</a>

<div id="#anchor3">Web サイトのようなセクションがなくなりました。これが、スクリプトがエラーをスローする理由です。

問題は、plugins.js の 30 行目あたりの次のコード行です。

var targetOffset = $target.offset().top;

$target が空です。alert($target.length)またはconsole.log($target.length)証明を取得してください。これを修正するには、次の行を変更します。

if (target) {

これに:

if (target && $target.length) {

スクリプトを呼び出す前.offset()に、jQuery の選択範囲に要素があるかどうかを確認します。が空の場合$targetは起動せず、スクリプトは引き続き機能します。

于 2012-11-13T11:53:49.830 に答える