修改id元素内的html标记的样式

时间:2017-11-16 14:36:16

标签: javascript html css

在我的网站上,我有这样的风格:

#titlebar a {
  display: inline-block;
}

和html:

<div id="titlebar">
  <nav>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
  </nav>
</div>

我想更改<a>中标识为<div>的所有titlebar代码的样式。 display应从inline-block更改为block。这是可以使用JavaScript还是我必须以不同的方式搜索?

https://jsfiddle.net/Ln0a235v/2/

完整背景:

// Using Gurvinder's solution.

menu = false;

function toggleMenu() {
  if (menu) {
    document.getElementById("titlebar").style.maxHeight = "4em";
    document.getElementById("fab").style.top = "calc(4em - 32px)";
    document.querySelectorAll("#titlebar a").forEach(function(el) {
      el.style.display = "inline-block";
    });
  } else {
    document.getElementById("titlebar").style.maxHeight = "500px";
    document.getElementById("fab").style.top = "0px";
    document.querySelectorAll("#titlebar a").forEach(function(el) {
      el.style.display = "block";
    });
  }
  menu = !menu;
}
body {
  background: #ffffff;
  font-family: sans-serif;
}

#titlebar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: #3f51b5;
  min-height: 4em;
  max-height: 4em;
  box-shadow: 0px 4px 8px #757575;
  transition: max-height 0.3s;
}

#titlebar a {
  font-variant: small-caps;
  line-height: 4em;
  display: inline-block;
  padding: 0px 16px;
  margin: 0px;
  color: #ffffff;
  text-decoration: none;
  transition: background 0.2s, display 1s;
  outline: none;
}

#titlebar a:hover {
  background: #ff4081;
}

#fab {
  position: fixed;
  width: 64px;
  height: 64px;
  z-index: 100;
  /*right: 64px;*/
  right: 3%;
  top: calc(4em - 32px);
  transition: top 0.3s;
}

.main {
  box-shadow: 0px 4px 8px #757575;
  width: 80%;
  margin: 0 auto;
  margin-bottom: 64px;
}

.content {
  padding: 6em 0;
  margin: 0 10%;
}

hr {
  border: 1px solid #c5cae9;
}

.content img {
  float: right;
  margin-left: 32px;
  margin-bottom: 32px;
  width: 30%;
  min-width: 256px;
  box-shadow: 0px 4px 8px #757575;
  padding: 8px;
}
<div id="titlebar">
  <nav>
    <a onclick="toggleMenu()" href="#">ToggleMenu</a>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
  </nav>
</div>

<div class="main">
  <div class="content">
    <h1>Lorem ipsum</h1>
    <p>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore
      eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
      euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate
      velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
      eleifend option congue nihil imperdiet doming id quod mazim placerat facer
    </p>
    <hr/>
    <h1>Lorem ipsum</h1>
    <p>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore
      eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
      euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate
      velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
      eleifend option congue nihil imperdiet doming id quod mazim placerat facer
    </p>
  </div>
</div>

3 个答案:

答案 0 :(得分:2)

是的,可以使用JavaScript。 更好且不引人注目的方式是使用JavaScript和CSS的组合:

&#13;
&#13;
setTimeout(function () {
  // See from here:
  document.getElementById("titlebar").classList.add("block");
}, 1000);
&#13;
#titlebar a {
  display: inline-block;
  background: #ccf;
}
#titlebar.block a {
  display: block;
}
&#13;
<div id="titlebar">
  <nav>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
  </nav>
</div>
&#13;
&#13;
&#13;

更新:基于OP的小提琴,我在这里应用了我的解决方案:

&#13;
&#13;
function toggleMenu() {
  document.getElementById("titlebar").classList.toggle("block");
}
&#13;
body {
  background: #ffffff;
  font-family: sans-serif;
}

#titlebar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: #3f51b5;
  min-height: 4em;
  max-height: 4em;
  box-shadow: 0px 4px 8px #757575;
  transition: max-height 0.3s;
}

#titlebar a {
  font-variant: small-caps;
  line-height: 4em;
  display: inline-block;
  padding: 0px 16px;
  margin: 0px;
  color: #ffffff;
  text-decoration: none;
  transition: background 0.2s, display 1s;
  outline: none;
}

#titlebar a:hover {
  background: #ff4081;
}

#fab {
  position: fixed;
  width: 64px;
  height: 64px;
  z-index: 100;
  /*right: 64px;*/
  right: 3%;
  top: calc(4em - 32px);
  transition: top 0.3s;
}

.main {
  box-shadow: 0px 4px 8px #757575;
  width: 80%;
  margin: 0 auto;
  margin-bottom: 64px;
}

.content {
  padding: 6em 0;
  margin: 0 10%;
}

hr {
  border: 1px solid #c5cae9;
}

.content img {
  float: right;
  margin-left: 32px;
  margin-bottom: 32px;
  width: 30%;
  min-width: 256px;
  box-shadow: 0px 4px 8px #757575;
  padding: 8px;
}

#titlebar.block {
  max-height: none;
}
#titlebar.block a {
  display: block;
}
&#13;
<div id="titlebar">
  <nav>
    <a onclick="toggleMenu(); return false;" href="#">ToggleMenu</a>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
  </nav>
</div>

<div class="main">
  <div class="content">
    <h1>Lorem ipsum</h1>
    <p>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore
      eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
      euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate
      velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
      eleifend option congue nihil imperdiet doming id quod mazim placerat facer
    </p>
    <hr/>
    <h1>Lorem ipsum</h1>
    <p>
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore
      eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
      euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate
      velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
      eleifend option congue nihil imperdiet doming id quod mazim placerat facer
    </p>
  </div>
</div>
&#13;
&#13;
&#13;

更改的元素位于:

<a onclick="toggleMenu(); return false;" href="#">ToggleMenu</a>
// Added a return false.

CSS添加

#titlebar.block {
  max-height: none;
}
#titlebar.block a {
  display: block;
}

答案 1 :(得分:1)

普通JS方法

document.querySelectorAll( "#titlebar a" ).forEach( function(el){
   el.style.display = "block";
});

<强>演示

&#13;
&#13;
document.querySelectorAll("#titlebar a").forEach(function(el) {
  el.style.display = "block";
});
&#13;
#titlebar a {
  display: inline-block;
}
&#13;
<div id="titlebar">
  <nav>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
    <a href="#">test</a>
  </nav>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

迭代每个控件并将显示设置为阻止

_search

您可以在here

查看小提琴

不知道上下文,所以当你要求给你javascript建议但它也可以用css来完成