使用纯Javascript仅在移动设备上显示点击列表的内容,并最初显示在桌面
Using pure Javascript to show contents of list on click only on mobile and show initially on desktop
是否有办法使列表项最初仅在桌面上显示,当改变屏幕大小时,列表项动态更改为下拉式的东西,在那里你必须单击 clickable heading
来显示它的内容?我想使用纯JS
<h2 class="clickable-heading">Toggle This Dropdown</h2>
<ul>
<li><a href="#">How To Do This</a>
</li>
<li><a href="#">Installing in The Mid 90s</a>
</li>
</ul>
<h2 class="clickable-heading">Click This Dropdown 2</h2>
JS:
function toggleDocs(event) {
if (event.target && event.target.className == 'clickable-heading') {
var next = event.target.nextElementSibling;
if (next.style.display == "none") {
next.style.display = "block";
} else {
next.style.display = "none";
}
}
}
document.addEventListener('click', toggleDocs, true);
这是我的小提琴。
PS:我知道这是可能的CSS
,使用复选框hack,但我想避免。
您可以使用window.innerWidth
和window.innerHeight
来获得窗口尺寸
然后根据这些维度显示/隐藏li
元素,如果你隐藏它们,将点击事件绑定到可点击的h2
,这是工作代码:
function toggleDocs() {
var next = this.nextElementSibling;
if (next.style.display == "none") {
next.style.display = "block";
} else {
next.style.display = "none";
}
}
function checkWindowDimensions() {
var winWidth = window.innerWidth;
var winHeight = window.innerHeight;
console.log(winWidth + " ::: " + winHeight);
var ul = document.getElementsByTagName('ul')[0];
if (winWidth < 300 || winHeight < 300) {
ul.style.display = 'none';
document.getElementsByClassName("clickable-heading")[0].addEventListener('click', toggleDocs, true);
} else {
document.getElementsByClassName("clickable-heading")[0].removeEventListener('click', toggleDocs, true);
if (ul.nodeType == 1)
ul.style.display = 'block';
}
}
checkWindowDimensions();
window.onresize = function(event) {
checkWindowDimensions();
};
ul {
display: none;
}
<h2 class="clickable-heading">Toggle This Dropdown</h2>
<ul>
<li><a href="#">How To Do This</a>
</li>
<li><a href="#">Installing in The Mid 90s</a>
</li>
</ul>
<h2 class="clickable-heading">Click This Dropdown 2</h2>
这是更新小提琴。
相关文章:
- 突出显示列表的父项,但不突出显示所有子项
- 如何随机显示列表项的顺序
- 在underscore.js中显示列表中的所有项目(使用Parse.com)
- 使自动完成可搜索下拉菜单don'我不想在点击搜索时显示列表
- 用javascript在html显示列表中显示新成员
- 单击旧列表只显示上次创建的id,应在单击时显示列表id
- Ember-解决所有请求时显示列表
- 隐藏并显示列表中的元素
- 仅在单击下拉列表中的项目时显示列表框
- Ui自动完成不显示列表
- 单击按钮时隐藏并显示列表
- 在可滚动的库中显示列表
- 无序列表 jQuery 在固定位置显示列表中的选定项
- AngularJS在URL正下方显示列表
- 使用 ajax 显示列表
- 制作另一个窗体,该窗体将显示列表(自动完成)并将用作所选字段的值
- 在不使用按钮的情况下显示列表,带有挖空功能
- 如何使用 object.id 显示列表中的 object.name
- PHP 如果选中复选框<选择>则会显示列表
- 是否可以在单击 html 未显示列表中的项目标记时触发事件