點燈坊

失くすものさえない今が強くなるチャンスよ

如何使 UL + LI 水平顯示 ?

Sam Xiao's Avatar 2020-12-22

UL 與 LI 預設會垂直顯示,但實務上卻常常使用 UL 與 LI 製作水平 Menu,可使用 Flexbox 或 display: inline 使 UL 與 LI 水平顯示。

Version

CSS 3

Flexobx

li000

以水平顯示 menu。

<template>
  <ul class="menu">
    <li>Home</li>
    <li>Search</li>
    <li>About</li>
  </ul>
</template>

<style scoped>
.menu {
  display: flex;
  list-style: none;
}

.menu li {
  margin: 1rem;
}
</style>

10 行

.menu {
  display: flex;
  list-style: none;
}
  • display: flex:將 <ul> 成為 Flexbox container,這使得 <li> 由原本 垂直顯示 而改成 水平顯示
  • list-style: none:使 <li> 之前不顯示 disc

15 行

.menu li {
  margin: 1rem;
}
  • 設定 <li> 之間的 margin1rem

inline

<template>
  <ul class="menu">
    <li>Home</li>
    <li>Search</li>
    <li>About</li>
  </ul>
</template>

<style scoped>
.menu li {
  display: inline;
  margin: 1rem;
}
</style>

10 行

.menu li {
  display: inline;
  margin: 1rem;
}
  • display: inline:原本 <li>displaylist-item 會換行,特別改成 inline 使其不換行

Conclusion

  • 相同效果在 CSS 常有多種寫法,display: flex 是借其預設為 flex-direction: row 因此 水平顯示display: inline 則改變 <li>displaylist-item 改為 inline
  • display: flex 只需用在 <ul> 上,而 display: inline 需套用在每一個 <li>,實務上建議使用 display: flex 較為精簡

Reference

Chris Coyier, When do you use inline-block ?