【问题标题】:I need an unordered list without any bullets我需要一个没有任何项目符号的无序列表
【发布时间】:2020-04-25 05:45:14
【问题描述】:

我创建了一个无序列表。我觉得无序列表中的项目符号很烦人,所以我想删除它们。

是否可以有一个没有项目符号的列表?

【问题讨论】:

    标签: html css


    【解决方案1】:

    您可以通过在父元素(通常是<ul>)的 CSS 上将 list-style-type 设置为 none 来移除项目符号,例如:

    ul {
      list-style-type: none;
    }
    

    如果您还想删除缩进,您可能还想添加padding: 0margin: 0

    请参阅Listutorial,了解列表格式化技术的精彩演练。

    【讨论】:

    • @tovmeod 似乎在我的 IE9(在 Win7 上)中运行良好。 (这是一个复杂的页面,而不是简单的 POC,也许是其他东西改变了行为)
    • 如果你和我一样,也在寻找如何去除缩进,看这个 - stackoverflow.com/a/13939142/846727
    • 哦,我回来这里复制/粘贴多少次了 :)
    • 很好的填充和边距
    • 在下面@shaneb 的回答中有一个更优雅的解决方案来显示不带项目符号的列表。它利用 HTML5 对象“描述列表”。
    【解决方案2】:

    你需要使用list-style: none;

    <ul style="list-style: none;">
        <li>...</li>
    </ul>
    

    【讨论】:

    • 请注意,内联 css 优先于文件中的 css。根据应用程序/开发实践,它可能真的很烦人。
    【解决方案3】:

    对先前答案的小改进:如果较长的行溢出到额外的屏幕行,则使它们更具可读性:

    ul, li {list-style-type: none;}
    
    li {padding-left: 2em; text-indent: -2em;}
    

    【讨论】:

    • 有效,但仅适用于 IE8
    • 没有必要在ulli 上都加上list-style-type: none;。你可以只做一个。
    【解决方案4】:

    如果您想在不借助 CSS 的情况下保持简单,我只需在代码行中添加 &amp;nbsp;。即&lt;table&gt;&lt;/table&gt;

    是的,它会留下一些空格,但这不是一件坏事。

    【讨论】:

    • -1 简单吗?没有CSS?这就是为什么许多网站都处于令人震惊的状态。 CSS 增加了简单性。表格不是前进的方向。
    【解决方案5】:

    如果您使用的是 Bootstrap,它有一个“无样式”类:

    删除列表项的默认列表样式和左侧填充(仅限直接子项)。

    引导程序 2:

    <ul class="unstyled">
       <li>...</li>
    </ul>
    

    http://twitter.github.io/bootstrap/base-css.html#typography

    引导程序 3 和 4:

    <ul class="list-unstyled">
       <li>...</li>
    </ul>
    

    引导程序 3:http://getbootstrap.com/css/#type-lists

    引导程序 4:https://getbootstrap.com/docs/4.3/content/typography/#unstyled

    引导程序 5:https://getbootstrap.com/docs/5.0/content/typography/#unstyled

    【讨论】:

    • 如果我们列出每个 CSS 框架的类,我们会在 StackOverflow 上搞得一团糟。快速的 Google 搜索显示,Bootstrap 在其高峰期仅被 2% 的网站使用,而且随着 flexbox 和 css 网格等更明智的解决方案的引入,这一比例肯定会下降。
    • 其实,这个答案正是我想要的。而 Bootstrap 被整个互联网的 3.6% 使用,所以它并没有下降。 trends.builtwith.com/docinfo/Twitter-Bootstrap 快速的 Google 搜索显示,Bootstrap 一直被列为“最流行的 CSS 框架”类别。
    • @PJBrunet 如果我们列出每个 CSS 框架的类,我们将会有更多的人得到他们问题的答案。此外,OP 没有提到他只对纯 CSS 解决方案感兴趣。
    • 如果 ul 是唯一的,我会在这里使用 id 而不是 class。如果没有,请继续上课。
    【解决方案6】:

    我在 ul 和 li 上都使用了list-style 来移除子弹。我想用自定义字符替换项目符号,在本例中为“破折号”。这提供了一个很好的缩进效果,当文本换行时效果很好。

    ul.dashed-list {
        list-style: none outside none;
    }
    
    ul.dashed-list li:before {
        content: "\2014";
        float: left;
        margin: 0 0 0 -27px;
        padding: 0;
    }
    
    ul.dashed-list li {
        list-style-type: none;
    }
    <ul class="dashed-list">
      <li>text</li>
      <li>text</li>
    </ul>

    【讨论】:

      【解决方案7】:

      如果您无法使其在&lt;ul&gt; 级别工作,您可能需要将list-style-type: none; 置于&lt;li&gt; 级别:

      <ul>
          <li style="list-style-type: none;">Item 1</li>
          <li style="list-style-type: none;">Item 2</li>
      </ul>
      

      您可以创建一个 CSS 类来避免这种重复:

      <style>
      ul.no-bullets li
      {
          list-style-type: none;
      }
      </style>
      
      <ul class="no-bullets">
          <li>Item 1</li>
          <li>Item 2</li>
      </ul>
      

      必要时使用!important:

      <style>
      ul.no-bullets li
      {
          list-style-type: none !important;
      }
      </style>
      

      【讨论】:

        【解决方案8】:

        这对列表进行垂直排序,没有项目符号。只需一行!

        li {
            display: block;
        }
        

        【讨论】:

        • 技术说明:这是可行的,因为它覆盖了默认的display&lt;li&gt;,即display: list-item;
        【解决方案9】:

        如果您想单独使用 HTML 来完成此任务,此解决方案将适用于所有主流浏览器:

        描述列表

        只需使用以下 HTML:

            <dl>
              <dt>List Item 1</dt>
                <dd>Sub-Item 1.1</dd>
              <dt>List Item 2</dt>
                <dd>Sub-Item 2.1</dd>
                <dd>Sub-Item 2.2</dd>
                <dd>Sub-Item 2.3</dd>
              <dt>List Item 3</dt>
                <dd>Sub-Item 3.1</dd>
            </dl>

        此处示例:https://jsfiddle.net/zumcmvma/2/

        参考这里:https://www.w3schools.com/tags/tag_dl.asp

        【讨论】:

        • 如果您要使用此方法,请使用语义正确的方式输入要在&lt;dt&gt; 中定义的术语,并在&lt;dd&gt; 中输入该术语的定义。
        • 这是这个问题的最佳答案,虽然提出这个问题的人不知道这个更优雅的解决方案,所以他们会不同意,但这个解决方案产生了最好的结果。
        【解决方案10】:
         <div class="custom-control custom-checkbox left">
            <ul class="list-unstyled">
                <li>
                 <label class="btn btn-secondary text-left" style="width:100%;text-align:left;padding:2px;">
                   <input type="checkbox" style="zoom:1.7;vertical-align:bottom;" asp-for="@Model[i].IsChecked" class="custom-control-input" /> @Model[i].Title
                 </label>
                </li>
             </ul>
        </div>
        

        【讨论】:

          【解决方案11】:

          我试过并观察到:

          header ul {
             margin: 0;
             padding: 0;
          }
          

          【讨论】:

          • 这实际上并没有删除项目符号。他们只是被推到屏幕外。
          【解决方案12】:

          彻底删除ul默认样式:

              list-style-type: none;
          
              margin: 0;
              margin-block-start: 0;
              margin-block-end: 0;
              margin-inline-start: 0;
              margin-inline-end: 0;
              padding-inline-start: 0;
          

          【讨论】:

            【解决方案13】:

            如果您正在开发现有主题,则该主题可能具有自定义列表样式。

            因此,如果您无法在 ul 或 li 标签中使用 list-style: none; 更改列表样式,请先使用 !important 进行检查,因为可能其他一些样式行会覆盖您的样式。如果!important 修复了它,您应该找到更具体的选择器并清除!important

            li {
                list-style: none !important;
            }
            

            如果不是这样,请检查li:before。如果它包含内容,则执行:

            li:before {
                display: none;
            }
            

            【讨论】:

              【解决方案14】:
              ul{list-style-type:none;}
              

              只需设置无序列表的样式为none即可。

              【讨论】:

                【解决方案15】:

                您可以使用::marker 伪元素隐藏它们。

                1. 透明::marker

                ul li::marker {
                  color: transparent;
                }
                

                ul li::marker {
                  color: transparent;
                }
                
                ul {
                  padding-inline-start: 10px; /* Just to reset the browser initial padding */
                }
                <ul>
                  <li> Bullets are bothersome </li>
                  <li> I want to remove them. </li>
                  <li> Hey! ::marker to the rescue </li>
                </ul>
                1. ::marker内容为空

                ul li::marker {
                  content: "";
                }
                

                ul li::marker {
                   content: "";
                }
                <ul>
                  <li> Bullets are bothersome </li>
                  <li> I want to remove them </li>
                  <li> Hey! ::marker to the rescue </li>
                </ul>

                当您需要从特定列表项中删除项目符号时会更好。

                ul li:nth-child(n)::marker { /* Replace n with the list item's position*/
                   content: "";
                }
                

                ul li:not(:nth-child(2))::marker {
                   content: "";
                }
                <ul>
                  <li> Bullets are bothersome </li>
                  <li> But I can live with it using ::marker </li>
                  <li> Not again though </li>
                </ul>

                【讨论】:

                  【解决方案16】:

                  这是可能的。在

                  ul {
                    list-style-type: none;
                  }
                  当然,您也可以添加 id 和类。

                  【讨论】:

                    【解决方案17】:
                    li{
                    list-style: none;
                    }
                    

                    它从所有列表项中删除项目符号。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2015-06-06
                      • 1970-01-01
                      • 2017-09-30
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-08-23
                      相关资源
                      最近更新 更多