【问题标题】:JS: Change ScrollTop to display browser widthsJS:更改 ScrollTop 以显示浏览器宽度
【发布时间】:2021-03-22 10:00:47
【问题描述】:

我的 WordPress 站点中有一个脚本 (https://deganiagroup.com/},单击其中一个导航按钮可以滚动到屏幕上的适当位置。由于标题粘滞,我不得不添加一个固定的 scrollTop 值,要么在桌面上正常工作,但不能在移动设备上工作,或者反过来。

这是因为标头的高度会随着浏览器宽度的变化而变化,因为标头本身会发生变化。所以固定高度在这里并不适用。

我可以扩展这个脚本来提供断点,这样无论浏览器宽度是多少,scrollTop 值都会根据标题高度而变化吗?

此脚本适用于 Elementor 页面构建器,但实际上它可能适用于涉及点击滚动的任何内容。

Javascript:

add_action( 'wp_footer', function() {
    if ( ! defined( 'ELEMENTOR_VERSION' ) ) {
        return;
    }
    ?>
    <script>
        jQuery( function( $ ) {
            // Add space for Elementor Menu Anchor link
            $( window ).on( 'elementor/frontend/init', function() {
                elementorFrontend.hooks.addFilter( 'frontend/handlers/menu_anchor    /scroll_top_distance', function( scrollTop ) {
                    return scrollTop - 121; // Scroll to fixed value
                } );
            } );
        } );
    </script>
    <?php
} );

【问题讨论】:

  • 如果您的标题高度是可变的,那么您可以拥有引用它的 CSS 变量。 :root { --header-height: 40px; } @media (min-width: 800px) { :root { --header-height: 50px; } } 之类的。然后当你想在你的 css 中使用它时,你可以 var(--header-height) 使用该值

标签: javascript elementor


【解决方案1】:

您可以直接在函数中计算高度:

<script>
  jQuery(function($) {
    var $siteHeader  = $('#site-header');
    
    // Add space for Elementor Menu Anchor link
    $(window).on('elementor/frontend/init', function() {
      elementorFrontend.hooks.addFilter('frontend/handlers/menu_anchor    /scroll_top_distance', function(scrollTop) {
        return scrollTop - $siteHeader.height();
      });
    });
  });
</script>

【讨论】:

  • 我刚刚用你的代码更新了functions.php,但我没有看到任何变化。你可以检查吗?就像桌面上的距离 c 应该在 157 像素左右,在移动设备上应该是 121 像素。
  • 我花了一些时间查看它并在代码中设置断点以查看发生了什么。永远不会调用此 return scroll... 行。过滤器永远不会被调用。原因如下:在 Elementor 的代码中,它应该在您单击给定的一组链接时执行此操作。它试图通过使用它在settings.selectors.links 中查找的 CSS 选择器来查找这些链接,但该选择器未设置,因此它放弃了:imgur.com/a/BnVvUYp (handleAnchorLinks not called bc no selector) 我试图查看文档,但没有找到如何设置此设置。该值应该是".menu-link"
猜你喜欢
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多