javascript - 根据菜单项的数量更改菜单项的宽度

标签 javascript css joomla menuitem responsive

使用 Joomla 我有 4 个菜单项。其中之一是可选的。如果我想取消发布这个菜单项,其他菜单项的宽度应该增加,但只能在视口(viewport)最小宽度 980px 处增加。 菜单的 ID 为#menu,我要更改的元素宽度为#menu li。可选的菜单项将 .optMenuitem 作为其类名。对于四个菜单项,宽度应为 25%,对于三个则为 33.33%。 我想到了这样的事情:

function changeWidth (){
	var four = document.getElementsByClassName('optMenuitem');
	var opt = document.getElementByID('menu');
	if (four==true){
		opt.li.style.width = "25%";
	} else {
		opt.li.style.width = "33.33%";
	}
}

不起作用。我是新手。有什么建议吗?

最佳答案

编辑 我添加了简单的 JS 来向您展示如何向元素添加类

如果您不反对使用 flexboxes ,这里是解决方案。

flexboxes 的唯一缺点是 they work on recent browsers and not old ones

无论如何,这就是答案(我会给你 CSS + HTML,我会让你处理 JS 方面,你只需要将类应用到你的菜单项并根据需要添加/删除它们)

const containers = document.getElementsByClassName('container');

for (let container of containers) {
  for (const item of container.children) {
    item.className += ' menu';
  }
}
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  align-content: center;
  margin: 20px 0;
}

.menu {
  flex: 1 1 auto;
  height: 50px;
  background: lightgrey;
  
  /* Just to align them to center and style them */
  display: flex;
  justify-content: center;
  align-items: center;
  align-content: center;
  border: 1px solid #aaa;
  margin-left: -1px;
};
<div class="container">
  <div>Menu 1</div>
  <div>Menu 2</div>
  <div>Menu 3</div>
  <div>Menu 4</div>
</div>

<div class="container">
  <div>Menu 1</div>
  <div>Menu 2</div>
  <div>Menu 3</div>
</div>

关于javascript - 根据菜单项的数量更改菜单项的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48207812/

相关文章:

javascript - 悬停功能触发器

css - IE8 中的 Z-Index 问题

css - 媒体查询管理

css - 页脚隐藏内容

php - Joomla 3.5.1 session 冲突 - 已发送重复的 session header

Javascript 检查键盘输入

Javascript 函数未添加到对象原型(prototype)中

javascript - 使用 JavaScript (Ember.js) 将 TMDb 中的流派 ID 与流派名称进行匹配

javascript - 引用错误: sendButton is not defined

html - CSS3PIE 在 IE 中根本不工作