我已经看到了两种不同的方式:
第一种方式
<ul>
<li>first item</li>
<!-- No closing li tag in next line -->
<li>second item
<ul>
<li>first subitem of second item</li>
</ul>
<!-- li closing tag in next line -->
</li>
</ul>第二种方式
<ul>
<li>first item</li>
<!-- Closing li tag in next line like normal -->
<li>second item</li>
<ul>
<li>first subitem of second item</li>
</ul>
</ul>这两种方法在呈现方式上是相同的,但其中一种方法比另一种方法更好吗?
发布于 2020-12-20 08:28:28
这取决于你想要实现什么(包括你的JS )。每种方法的使用示例:
first way (多级下拉嵌套列表)::
The second way示例:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-size: 10px;
overflow-x: hidden;
}
header {
background-color: #f88752;
position: relative;
height: 50px;
width: 100%;
}
nav {
height: 100%;
}
.first-list,
.second-list {
list-style-type: none;
display: flex;
align-items: center;
justify-content: center;
}
.first-list {
height: 100%;
}
.first-list .list1-item {
margin: 0 10px;
cursor: pointer;
color: #f1f1f1;
font-size: 1.3rem;
}
.second-list {
position: absolute;
flex-direction: column;
left: -100%;
transform: translate(-50%, 0);
top: 65px;
background-color: #f88752;
width: 400px;
height: 70px;
border-radius: 5px;
transition: all 0.2s;
}
.second-list .list2-item {
font-size: 1.2rem;
}
#myBtn:hover ~ .second-list {
left: 50%;
}<header>
<nav>
<ul class="first-list">
<li class="list1-item">Home</li>
<li class="list1-item">Gallery</li>
<li class="list1-item">About</li>
<li class="list1-item" id="myBtn">Contact</li>
<ul class="second-list">
<li class="list2-item">+123456789</li>
<li class="list2-item">example@hotmail.com</li>
</ul>
</ul>
</nav>
</header>
发布于 2020-12-20 08:06:46
尽管html可能看起来是一样的,但还是有一些不同,使得第一种方法成为更好的选择。
首先,在语义上:你可以找到一个讨论和一些文章here
第二,DOM操作。使用第一个方法,嵌套的ul显然是第二个li的子级。例如,如果您决定删除js中的第二个li,则ul也将被删除。使用第二种方法时,它的看起来像是嵌套的ul是一个子对象,但实际上并非如此。因此,如果您决定删除第二个li,那么仍然会有嵌套的ul,没有它的父级,这没有多大意义。
第三,风格。仅当未应用特定样式时,这两种方法看起来才相同。如果你想改变一些东西,事情可能会开始变得不同。例如,假设您想要在li中添加一些填充。看一下这段代码:
li{
padding-left: 30px;
}<ul>
<li>first item</li>
<!-- No closing li tag in next line -->
<li>second item
<ul>
<li>first subitem of second item</li>
</ul>
<!-- li closing tag in next line -->
</li>
</ul>
<ul>
<li>first item</li>
<!-- Closing li tag in next line like normal -->
<li>second item</li>
<ul>
<li>first subitem of second item</li>
</ul>
</ul>
您可以看到,第一种方法看起来仍然不错,而第二种方法开始看起来不太对劲。
因此,在结论中,虽然它们看起来是一样的,但请选择选项1 =)
https://stackoverflow.com/questions/65375364
复制相似问题