【问题标题】:Open all for Accordion / print all打开所有手风琴/打印所有
【发布时间】:2017-11-20 23:24:27
【问题描述】:

我已经整理了一个带有手风琴功能的页面,所以页面不会太长,现在当我想打印页面时,它只会打印打开的部分,我希望有一个全部打开按钮或全部打印已实现按钮,非常感谢任何帮助!

有人可以帮忙吗?

var acc = document.getElementsByClassName("accordion");
var i;

for (i = 0; i < acc.length; i++) {
  acc[i].onclick = function() {
    this.classList.toggle("active");
    var panel = this.nextElementSibling;
    if (panel.style.maxHeight) {
      panel.style.maxHeight = null;
    } else {
      panel.style.maxHeight = panel.scrollHeight + "px";
    }
  }
}
button.accordion {
  background-color: #13294b;
  border: 2px solid #59cbe8;
  border-radius: 0px 10px 0px 10px;
  box-shadow: 7px 7px 5px #cccccc;
  color: #fff;
  cursor: pointer;
  padding: 10px 15px 10px 15px;
  margin: 4px 0px 7px 0px;
  width: 100%;
  font-size: 18px;
  transition: 0.4s;
  outline: none;
  text-align: left;
}

button.accordion.active,
button.accordion:hover {
  background-color: #1f447b;
}

button.accordion:after {
  content: '\002B';
  color: #59cbe8;
  font-weight: bold;
  float: right;
}

button.accordion.active:after {
  content: "\2212";
}

div.panel {
  padding: 0 18px;
  background-color: white;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s ease-out;
}
<button class="accordion">Title 1</button>
<div class="panel">content</div>

<button class="accordion">Title 2</button>
<div class="panel">content</div>

【问题讨论】:

  • 只需添加一个“打印”按钮,单击该按钮时,将循环显示面板并将每个面板的height 设置为“打开”高度并调用window.print() 方法。然后,触发活动面板的click事件,重置所有高度。
  • 嗨,斯科特,感谢您提供的信息,对 javascript 有点陌生,您能指导我完成这个吗?干杯
  • 你好,请帮忙

标签: javascript html css button accordion


【解决方案1】:

只需使用媒体查询打印https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries

例如:

.accordion .collapsed {
    height: 0;
    overflow: hidden;
}

@media print {
    .accordion .collapsed {
         height: auto;
    }
}
<ul class="accordion">
    <li class="collapsed">this is hidden</li>
    <li class="collapsed">this is hidden</li>
    <li>this is not hidden</li>
    <li class="collapsed">this is hidden</li>
    <li class="collapsed">this is hidden</li>
    <li class="collapsed">this is hidden</li>
</ul>

<button onclick="window.print()">Print</button>

【讨论】:

  • 谢谢,你的代码很完美,你能告诉我如何将它应用到我现有的 CSS 代码上吗?当前代码是交叉部分应用的,真的不想重做所有事情,谢谢
  • 1st,你需要找到隐藏手风琴元素的css,在我的是.accordion .collapse,然后你只需要用媒体查询打印覆盖它,在我的代码中,我用height:0 并用height: auto 覆盖它,其他方法是用display: none 隐藏它并用display: block 覆盖它,这取决于你的代码,如果你不能很好,你可以在问题中更新你的css包括手风琴部件,以便我或其他人可以为您发现它
猜你喜欢
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 2018-06-15
  • 2016-12-05
  • 1970-01-01
  • 2016-10-11
相关资源
最近更新 更多