自从我发布这个问题以来已经有一段时间了,我确实想出了一种方法来做我想做的事情,并让它完全基于 HTML 和 CSS(无 Javascript)。它有点 hacky,但它适用于我测试过的所有 4 种浏览器(IE、Chrome、Firefox 和 Opera),也适用于 iOS 和 Android 移动设备。
首先,我的 MediaWiki:Common.css 页面上有这个 CSS。
@-webkit-keyframes fadeIn {
from { opacity: 0 }
to { opacity: 1 }
}
@keyframes fadeIn {
from { opacity: 0 }
to { opacity: 1 }
}
.answer {
height:0;
width:auto;
margin: 1px;
overflow: hidden;
padding: 0 18px;
-webkit-transition: all 1.5s ease;
-moz-transition: all 1.5s ease;
transition: all 1.5s ease;
}
.linkshow:target * .answer {
display: block;
-webkit-animation: fadeIn 1.5s;
animation: fadeIn 1.5s;
height: auto;
padding: 24px 18px;
border: 1px solid;
border-radius: 10px;
}
.linkhide:target * .answer {display: none;}
在我的 HTML 中,我有这些 div 结构。每个结构都有不同的 id,具体取决于它是“显示”div 还是“隐藏”div。我还有两个“隐藏”链接,一个在顶部,一个在底部,如果中间的项目足够多,以至于顶部的“隐藏”可以滚出屏幕。
<div class="linkshow" id="SUBJECT1linkshow">
<div class="linkhide" id="SUBJECT1linkhide">
<div>[[#SUBJECT1linkshow|How do I Blah, Blah, Blah, etc.?]]</div>
<div class="answer">
<div style="float: right;">[[#SUBJECT1linkhide|Hide]]</div>
<br \>
To do blah, blah, blah...:
*Do this step.<br \>
*Do this next.<br \>
*Once you've done that, do this.<br \>
*etc. etc. etc..<br \>
<div style="float: right;">[[#SUBJECT1linkhide|Hide]]</div>
</div>
</div>
</div>
<div class="linkshow" id="SUBJECT2linkshow">
<div class="linkhide" id="SUBJECT2linkhide">
<div>[[#SUBJECT2linkshow|Can I change my Blah, Blah, Blah, etc.?]]</div>
<div class="answer">
<div style="float: right;">[[#SUBJECT2linkhide|Hide]]</div>
<br \>
To change your blah, blah, blah...:
*Do this step.<br \>
*Do this next.<br \>
*Click the "Edit" button.[[File:My_Screenshot.png|none]]<br \>
'''''Note: Before these changes will take effect, you must et. etc. [[#SUBJECT3linkshow|Do that thing]].'''''<br \>
<div style="float: right;">[[#SUBJECT2linkhide|Hide]]</div>
</div>
</div>
</div>
你可以在内部 div 中拥有任何你想要的东西。项目符号列表、有序列表、图像,甚至指向同一页面上的其他“答案”。
页面首次显示时,所有答案都会折叠起来,您只会看到一个问题列表。单击一个将触发向展开状态的过渡,答案周围有一个漂亮的边框。单击“隐藏”将折叠,或者单击另一个问题将折叠当前打开的答案并展开新答案。
希望这对某人有所帮助。