【问题标题】:How to Change Mobile Menu Icon Using PHP (Toggling Hamburger Menu)如何使用 PHP 更改移动菜单图标(切换汉堡菜单)
【发布时间】:2019-03-18 16:59:33
【问题描述】:

我正在使用 AMP-WP 网站上的汉堡切换方法,并将文本替换为符号 ☰ 来创建汉堡。

https://amp-wp.org/documentation/playbooks/toggling-hamburger-menus/

<?php echo( '☰' ); ?>

一切都很好,除了我想在菜单打开/活动时将符号更改为✕。

请问需要什么 PHP 才能做到这一点?

【问题讨论】:

  • 需要 DOM 操作,所以答案是在 HTML、CSS 和 javascript 中完成的。

标签: php wordpress amp-html


【解决方案1】:

您需要采用不同的方法,您的图标实际上是一组 HTML 元素,其中每一行都是独立的,并且可以通过动画定位,在这种情况下是 CSS 转换:

const hamburger = document.querySelector('#hamburger-toggle');

hamburger.addEventListener('click', function() {
  if (this.classList.contains('open')) {
    this.classList.remove('open');
  } else {
    this.classList.add('open');
  }
});
#hamburger-toggle {
  position: relative;
  cursor: pointer;
  height: 40px;
  width: 50px;
  margin: 10px 0;
  padding: 10px 0;   
}
.hamburger-line {
  display: block;
  width: 24px;
  height: 2px;
  background-color: black;
  margin-top: 6px;
  opacity: 1;
}
.hamburger-line-1 {
  margin-top: 0;
}
.hamburger-line-1, .hamburger-line-3 {
  transform-style: preserve-3d;
  transition: transform 200ms; /* this line animates the change in position */
  transform: translateY(0px) rotateZ(0deg);
}
.hamburger-line-2 {
  transition: opacity 200ms; /* this line animates the change in opacity fading in/out the middle hamburger line */
}
#hamburger-toggle.open .hamburger-line-1 {
  transform-style: preserve-3d;
  transition: transform 200ms;
  transform: translateY(8px) rotateZ(44deg);
}
#hamburger-toggle.open .hamburger-line-2 {
  transition: opacity 200ms;
  opacity: 0;
}
#hamburger-toggle.open .hamburger-line-3 {
  transform-style: preserve-3d;
  transition: transform 200ms;
  transform: translateY(-8px) rotateZ(-44deg);
}
<div id="hamburger-toggle">
  <span class="hamburger-line hamburger-line-1"></span>
  <span class="hamburger-line hamburger-line-2"></span>
  <span class="hamburger-line hamburger-line-3"></span>
</div>

【讨论】:

  • Simran,感谢您的建议。我这样做的原因是,虽然您建议的是最流行/传统的方式,但官方的 AMP Navbar 使用符号并且显然使用他们网站上的代码来执行此操作,我在想肯定可能只是一两个PHP 行来更改文本或在我的情况下是一个符号?
  • 如果我遇到困难,我会执行你的建议。谢谢!
  • 酷。请记住,所有 PHP 都是在服务器上呈现的,因此与用户交互和更改网站外观有关的任何事情几乎都是 CSS 或 JS 的事情。
  • 抱歉,我的 PHP 没有显示出来——我刚刚又添加了一遍,如果你想看的话?就像你说的那样,我已经设法用 CSS 对其进行样式设置,我只是更改了字体大小等。除了这件小事之外,它看起来还不错!
  • 那里的文档似乎同意我的观点,你需要一些 JS,他们在下面给你一个 jQuery 解决方案,他们说“这通常涉及将一些基于 jQuery 的 JavaScript 代码排入队列:”。 ;)
猜你喜欢
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多