如何在您的网站上添加粘性返回顶部按钮

已发表: 2019-06-18

我们都去过那里。 你找到了一个很棒的在线指南,一直滚动到底部,然后想,“哇,我很想看看这个网站还能提供什么!”

但是你必须滚动。

全部。

这。

方法。

至。

这。

最佳。

然后你想…… “嗯,没关系。” 并关闭页面。

作为一名网页设计师,这几乎是您希望某人登陆您正在构建的网站时做的最后一件事。 幸运的是,这一年是 2019 年,现代网页设计最佳实践为我们提供了解决这个常见 UX 问题的方法:粘性返回顶部按钮。

什么是粘性返回顶部按钮?

也称为滚动到顶部按钮或转到顶部图像,粘性返回顶部按钮是一种有用的导航元素,可帮助用户返回他们正在查看的网页的顶部。 一个常见的 UI 模式是将此按钮放置在屏幕的右下角,通过固定位置使其“粘性”,以便用户向下滚动页面时始终可以访问它。

添加返回顶部按钮之前需要考虑的事项

像任何流行的设计趋势一样,我鼓励您在在您的网站上实施它之前退一步问自己:如果我要构建这个,我需要遵循哪些返回按钮指南?

在构建滚动到顶部按钮之前,需要回答以下几个问题:

  • 它将被放置在哪里?
  • 它应该有多大(或小)?
  • 您应该遵循哪些设计模式才能保持品牌形象? (想想颜色、字体、图标等)
  • 它是否有覆盖重要网站内容的风险,例如侧边栏中的信息?
  • 在移动设备上会发生什么? 它会响应吗?
  • 你真的需要它吗?*

*注意:您可以说今天的用户习惯于在页面上向下滚动(并向后滚动!),这将消除对返回顶部按钮的“需求”。 我的建议:测试一下! 在点击时添加 Google Analytics 事件或使用 Hotjar 等热图工具来查看您的网站访问者如何与页面互动。

要遵循的最佳“最佳实践”是基于您自己网站和用户的数据!

如何向您的 WordPress 网站添加粘性返回顶部按钮

在本教程中,我将向您展示如何添加我们在 Layout 上使用的确切返回顶部按钮! 唯一的区别是我们将我们的标题放在屏幕顶部的粘性标题中,而不是右下角。 (但别担心,这是同一个概念!)

专业提示:虽然本教程不是太高级,但我仍然建议在临时站点或本地环境中尝试,因此您的实时站点绝对没有风险。 如果您需要快速设置,请查看 Local,这是一款非常易于使用的免费本地 WordPress 应用程序。

让我们开始吧! 我将逐步介绍该过程的每一步,您也可以按照 Flywheel 自己的前端工程师 Josh Masen 提供的这个 Codepen。


或者,查看这个添加粘性返回顶部按钮的视频教程!

请参阅 Josh Lawler (@joshuamasen) 在 CodePen 上的 Pen ES6 Scroll-to-top 按钮。

对于这个粘性返回顶部按钮教程,我们将使用三种语言:

  • 用于创建按钮的标记的 HTML
  • CSS 为按钮设置样式并使其与您的品牌相匹配
  • JavaScript 让它“工作”并定义按钮的行为

在 HTML 中,您会发现以下几行:

<a class="top-link hide" href="" id="js-top">
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6"><path d="M12 6H0l6-6z"/></svg>
  <span class="screen-reader-text">Back to top</span>
</a>

这将是您的粘性返回顶部按钮! 您可以看到我们添加了一个名为.top-link的 CSS 类,并且正在使用一些简单的 JavaScript 来“让它工作”。 我们还为按钮使用了内嵌 SVG。

除了 SVG,您还可以使用图像文件或字体图标来创建按钮。 然而,我们更喜欢 SVG 方法,因为:

  1. 它不会像光栅图像那样在不同的屏幕尺寸下像素化。
  2. 跨浏览器普遍支持 SVG。 (耶,用户体验!)
  3. 使用 CSS 设置样式很容易,因此您可以非常轻松地更改它的所有内容。
  4. 它只需要一行代码,使其轻量级并且更好地提高站点性能。

您将在 HTML 中找到的最后一个真正重要的部分是这一行:

<span class="screen-reader-text">Back to top</span>

这对于使用屏幕阅读器的用户来说至关重要,并将提高您的 WordPress 网站的可访问性。 (把它想象成图像的 alt 标签,但对于滚动到顶部按钮!)

现在让我们更多地谈谈那个 CSS 类.top-link 。 我们使用它来实际设置按钮的样式,您可以在其中定义质量,例如按钮的大小、周围的填充量、颜色等。

.top-link {
  transition: all .25s ease-in-out;
  position: fixed;
  bottom: 0;
  right: 0;
  display: inline-flex;
  
 cursor: pointer;
 align-items: center;
 justify-content: center;
 margin: 0 3em 3em 0;
 border-radius: 50%;
 padding: .25em;
 width: 80px;
 height: 80px;
 background-color: #F8F8F8;

注意:我们使用 Sass(一种样式表语言)来更快地编写 CSS。 在此处了解有关此预处理器的更多信息。

此片段中的几个重要部分: transition: all .25s ease-in-out ; 控制按钮在屏幕上出现或消失的“速度”,以及position: fixed ; 是什么让按钮“粘”到你想要的位置。

接下来,您将看到.show.hide的规则。 我们将使用 JavaScript 在这些类之间切换,以便告诉浏览器按钮应该(或不应该)出现在页面上的时间。

  .show {
    visibility: visible;
    opacity: 1;
  }
  
  .hide {
    visibility: hidden;
    opacity: 0;
  }

在我们进入 JavaScript 之前,我们将在 CSS 中添加几行代码。

svg {
 fill: #000;
 width: 24px;
 height: 12px;
}

&:hover {
 background-color: #E8E8E8;

 	svg {
	 fill: #000000;
	}
}

这些类将为箭头本身设置 SVG 图像的样式,并告诉浏览器在用户将鼠标悬停在按钮上时如何显示按钮。

最后,我们将添加一些 CSS 来为屏幕阅读器隐藏“回到顶部”的文本。

// Text meant only for screen readers.
.screen-reader-text {
	position: absolute;
	clip-path: inset(50%);
	margin: -1px;
	border: 0;
	padding: 0;
	width: 1px;
	height: 1px;
	overflow: hidden;
	word-wrap: normal !important;
	clip: rect(1px, 1px, 1px, 1px);

	&:focus {
		display: block;
		top: 5px;
		left: 5px;
		z-index: 100000; // Above WP toolbar
		clip-path: none;
		background-color: #eee;
		padding: 15px 23px 14px;
		width: auto;
		height: auto;
		text-decoration: none;
		line-height: normal;
		color: #444;
		font-size: 1em;
		clip: auto !important;
	}
}

现在到 JavaScript 了! 我们将在不加载 jQuery 的情况下执行此操作,这将有助于保持代码的轻量级和快速加载。

第一个变量将帮助浏览器找到按钮。

// Set a variable for our button element.
const scrollToTopButton = document.getElementById('js-top');

接下来,我们将创建一个函数,如果用户滚动超出初始窗口的高度,则显示滚动到顶部按钮。

const scrollFunc = () => {
  // Get the current scroll value
  let y = window.scrollY;
  
  // If the scroll value is greater than the window height, let's add a class to the scroll-to-top button to show it!
  if (y > 0) {
    scrollToTopButton.className = "top-link show";
  } else {
    scrollToTopButton.className = "top-link hide";
  }
};

我们还将添加一个事件侦听器,它将在用户滚动时进行监视(因此我们知道他们在页面上的位置)。

window.addEventListener("scroll", scrollFunc);

快完成了! 接下来,我们需要定义使按钮真正将用户带回页面顶部的函数。 为此,我们将为距页面顶部的像素数创建一个变量。 如果该数字大于 0,该函数会将其设置回 0,将我们带到顶部!

我们还会在这里添加一点动画,所以跳跃不会太突然。

const scrollToTop = () => {
  // Let's set a variable for the number of pixels we are from the top of the document.
  const c = document.documentElement.scrollTop || document.body.scrollTop;
  
  // If that number is greater than 0, we'll scroll back to 0, or the top of the document.
  // We'll also animate that scroll with requestAnimationFrame:
  // https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
  if (c > 0) {
    window.requestAnimationFrame(scrollToTop);
    // ScrollTo takes an x and a y coordinate.
    // Increase the '10' value to get a smoother/slower scroll!
    window.scrollTo(0, c - c / 10);
  }
};

最后但同样重要的是,我们只需要告诉页面在有人点击我们的粘性返回顶部按钮时运行该功能。

// When the button is clicked, run our ScrolltoTop function above!
scrollToTopButton.onclick = function(e) {
  e.preventDefault();
  scrollToTop();
}

下一篇:发现开发人员喜爱的 19 个 WordPress 插件

下载此电子书以获取我们最推荐给开发人员的插件列表! 我们发现所有这些插件都易于使用,不会对您的网站造成太大影响,而且非常可靠。


而已! 您现在将在您的 WordPress 网站上拥有一个功能齐全且可自定义的粘性返回顶部按钮。 要查看整个教程,请记得查看 Flywheel 自己的前端工程师 Josh Masen 的这个 Codepen!