【发布时间】:2018-02-14 01:54:03
【问题描述】:
我正在尝试使用 flexbox 制作多语言导航栏,使用一些 JS 来切换我不想要的元素的可见性,但是在保留绝对定位的布局时遇到了麻烦。
理想情况下,我希望 .language 具有绝对定位,以便多语言元素可以无形地重叠,但应用此设置会覆盖 flexbox 布局。
.language {
position: absolute;
}
function switchLanguage(lang) {
var languageElements = document.getElementsByClassName('language')
for (var x in languageElements) {
if (languageElements[x].getAttribute('lang') != lang) {
languageElements[x].style.visibility = 'hidden';
} else {
languageElements[x].style.visibility = 'visible';
}
}
}
switchLanguage('bs')
#menu {
width: 100vw;
position: fixed;
top: 0px;
text-align: center;
}
ul {
list-style: none;
}
.container {
display: flex;
}
.container>li {
flex: 1;
}
@media all and (max-width: 600px) {
.container {
flex-wrap: wrap;
}
.container>li {
flex-basis: 50%;
}
}
@media all and (max-width: 400px) {
.container>li {
flex-basis: 100%;
}
}
.language {
z-index: auto;
position: absolute;
}
<nav id="menu">
<div class="language" lang="bs">
<ul class="container">
<li><a href="#about">O Nama</a></li>
<li><a href="#hours">Radno Vrijeme</a></li>
<li><a href="#map">Karta</a></li>
<li><a href="#">Meni</a></li>
<li onclick="switchLanguage('en')">English</li>
</ul>
</div>
<div class="language" lang="en">
<ul class="container">
<li><a href="#about ">About Us</a></li>
<li><a href="#hours ">Opening Hours</a></li>
<li><a href="#map ">Map</a></li>
<li><a href="# ">Menu</a></li>
<li onclick="switchLanguage('bs')">Bosanski</li>
</ul>
</div>
</nav>
【问题讨论】:
-
由于您在两个不同大小的
language包装器之间进行交换,除了 move 一些因为它们的内容大小不一样,应该如何表现? -
我建议不要切换可见性,而是使用类切换 .language 框的宽度
-
内容大小是一样的,如果你看一下小提琴,你会发现它们是相互叠放的,而我希望它们叠放在上面,但不能做到这一点with put position: absolute in .language 而不会失去弹性
-
你的意思是它失去了弹性?
标签: html css flexbox css-position