我试图使用css-tables和纯JavaScript(无jQuery)隐藏和显示表格行。
我的div
设置为display
且其中table-row
为nav
。无论我做什么,border-collapse
等,div
仍保持其中一些高度。
有什么想法吗?
HTML:
<!-- Header -->
<header id='header'> <!-- Table Row 1 -->
<div id="header-table">
<div id='back'>
<button id='back-button'>←</button>
</div>
<div id="title">
<h1 id='title-h1'>Title</h1>
</div>
<div id="menu">
<button id='menu-button'>≡</button>
</div>
</div>
</header>
<nav id="menu-nav">
<a href="#intro">Introductory Page</a>
<a href="#list">Activity List</a>
<a href="#settings">Settings</a>
<a href="#about">About</a>
</nav>
<div id="body"> <!-- Table Row 3 -->
<div id="wrapper">
CSS
header#header {
position: relative;
display: table-row;
}
div#menu-nav-cell {
position: relative;
display: table-row;
text-align: center;
overflow: hidden;
background: yellow;
}
nav#menu-nav {
display: table-row;
height: 0em;
width: 100%;
color: #000;
background: pink;
}
div#body {
position: relative;
display: table-row;
height: 100%;
}
div#wrapper {
position: relative;
height: 100%;
}
答案 0 :(得分:1)
为什么不简单地使用display: none
?
也许我误会了,因为你说你的div
里面有一个nav
,但我在你的html示例中看不到。
我想你要显示/隐藏导航。这可以通过添加此css规则来完成:
nav#menu-nav.hidden {
display: none;
}
和javascript
document.getElementById("toggle").onclick = function () {
document.getElementById("menu-nav").classList.toggle("hidden");
}
<强> jsFiddle 强>
如果要为高度设置动画,可以执行以下操作:
/* new rules that I added */
nav#menu-nav {
line-height: 1em;
-webkit-transition: line-height .2s, background-color .2s;
}
nav#menu-nav a {
display: inline-block;
overflow: hidden;
height: 1em;
-webkit-transition: height .2s;
}
nav#menu-nav.hidden {
line-height: 0em;
background-color: transparent;
}
nav#menu-nav.hidden a {
height: 0;
}
诀窍是对表格单元格使用overflow: hidden; display:inline-block
,而不是display:table-cell
。
这样,将高度和行高改为零就可以了。
然而仍然可以看到一些高度(大约3px),所以我决定将背景颜色设置为透明动画。如果你评论那个动画背景颜色的部分,你就会理解我的意思。
<强> jsFiddle v2 强>