首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套的ul和ol结束标记放置

嵌套的ul和ol结束标记放置
EN

Stack Overflow用户
提问于 2020-12-20 07:08:45
回答 2查看 29关注 0票数 0

我已经看到了两种不同的方式:

第一种方式

代码语言:javascript
复制
<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>

第二种方式

代码语言:javascript
复制
<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>

这两种方法在呈现方式上是相同的,但其中一种方法比另一种方法更好吗?

EN

回答 2

Stack Overflow用户

发布于 2020-12-20 08:28:28

这取决于你想要实现什么(包括你的JS )。每种方法的使用示例:

first way (多级下拉嵌套列表):

W3schools example.

Stackoverflow example

The second way示例:

代码语言:javascript
复制
* {
  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%;
}
代码语言:javascript
复制
<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>

票数 1
EN

Stack Overflow用户

发布于 2020-12-20 08:06:46

尽管html可能看起来是一样的,但还是有一些不同,使得第一种方法成为更好的选择。

首先,在语义上:你可以找到一个讨论和一些文章here

第二,DOM操作。使用第一个方法,嵌套的ul显然是第二个li的子级。例如,如果您决定删除js中的第二个li,则ul也将被删除。使用第二种方法时,它的看起来像是嵌套的ul是一个子对象,但实际上并非如此。因此,如果您决定删除第二个li,那么仍然会有嵌套的ul,没有它的父级,这没有多大意义。

第三,风格。仅当未应用特定样式时,这两种方法看起来才相同。如果你想改变一些东西,事情可能会开始变得不同。例如,假设您想要在li中添加一些填充。看一下这段代码:

代码语言:javascript
复制
  li{
    padding-left: 30px;
  }
代码语言:javascript
复制
<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 =)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65375364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档