javascript - 点数不显示时,如何将菜单按钮变成白色?

标签 javascript html css

我写了css来定义菜单的颜色,当不同的 Action 发生时,菜单中的按钮会显示不同的颜色。但是,由于我想将按钮的颜色设置为与点的颜色相同,所以我在生成按钮时在 JS 中定义了背景颜色。因此,无论点是否显示,按钮的背景颜色都不会改变。如何在点不显示的情况下将菜单按钮变成白色?

var toggleableLayerIds = ['Restaurants', 'Food', 'Shopping', 'Travel', 'Leisure', 'Night Life', 'Beauty & Health', 'Local Services'];

var LayerColors = ['#F44336', '#FF9800', '#FFEB3B', '#4CAF50', '#03A9F4', '#3F51B5', '#9C27B0', '#607D8B'];

for (var i = 0; i < toggleableLayerIds.length; i++) {
  var id = toggleableLayerIds[i];
  var color = LayerColors[i]

  var link = document.createElement('a');
  link.href = '#';
  link.className = 'active';
  link.textContent = id;
  link.style.backgroundColor = color;

  link.onclick = function(e) {
    var clickedLayer = this.textContent;
    e.preventDefault();
    e.stopPropagation();

    var visibility = map.getLayoutProperty(clickedLayer, 'visibility');

    if (visibility === 'visible') {
      map.setLayoutProperty(clickedLayer, 'visibility', 'none');
      this.className = '';
    } else {
      this.className = 'active';
      map.setLayoutProperty(clickedLayer, 'visibility', 'visible');
    }
  };

  var layers = document.getElementById('menu');
  layers.appendChild(link);
}
#menu {
  background: #fff;
  position: absolute;
  z-index: 1;
  top: 20px;
  right: 40px;
  border-radius: 3px;
  width: 120px;
  border: 1px solid rgba(255, 255, 255, 0.4);
  font-family: 'Open Sans', sans-serif;
}

#menu a {
  font-size: 12px;
  color: #404040;
  display: block;
  margin: 0;
  padding: 0;
  padding: 3px;
  text-decoration: none;
  border-bottom: 2px solid rgba(255, 255, 255, 0.4);
  text-align: center;
}

#menu a:last-child {
  border: none;
}

#menu a:hover {
  background-color: #f8f8f8;
  color: #404040;
  box-shadow: inset 0 0 0 3px rgba(0, 0, 0, 0.10)
}

#menu a.active {
  background-color: #FBC02D;
  color: #ffffff;
}

#menu a.active:hover {
  background: #9E9E9E;
  box-shadow: inset 0 0 0 3px rgba(0, 0, 0, 0.10)
}
<nav id="menu"></nav>

This picture shows the map I have made yet

最佳答案

如果 map 上有当前图层的任何点,您需要检查循环。如果没有点,则使用 color: #fff;display: none; 或任何你想要的方式将 CSS 类添加到当前按钮。

关于javascript - 点数不显示时,如何将菜单按钮变成白色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131917/

相关文章:

javascript - 向 jQuery Counter 添加千位分隔符

javascript - jQuery - 更改未创建的 div 元素的样式

javascript - JQuery - 选择选项不会附加在更改事件上

javascript - Mobx textField的属性值没有改变

javascript - 获取两个日期时间之间的时间差

javascript - 动画高度属性::HTML + CSS + JavaScript

css - 如何让 3 个 div 显示在一行中,如果我调整浏览器大小则不会换行?

java - Eclipse 无法找到 GWT Binder 的 css 文件

html - 删除悬停背景下拉 Bootstrap 4

html - 如何制作100%高度和固定位置的侧边栏