不使用填充时如何删除水平滚动条

How to remove horizontal scrollbar when using no padding

我有一个问题: 我想创建一个布局,但是一旦我删除以下代码行 (p-0) 处的填充,就会出现一个水平滚动条。有没有可能我可以删除填充并且没有滚动条出现?我不知道该怎么办,也许你们可以帮助我。问题是我想让col没有填充的全长,但是当我删除填充时,水平滚动条出现了。

...

<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 p-0">    
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success p-0">
...

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div>
      <div class="row m-auto">
        <div class="col-md-12 p-0">
            <div>
            <nav class="navbar navbar-expand-lg navbar-light bg-light">
                <a class="navbar-brand" href="#">
                    Navbar w/ text
          </a>
                <button
                    class="navbar-toggler"
                    type="button"
                    data-toggle="collapse"
                    data-target="#navbarText"
                    aria-controls="navbarText"
                    aria-expanded="false"
                    aria-label="Toggle navigation"
                >
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarText">
                    <ul class="navbar-nav mr-auto">
                        <li class="nav-item active">
                            <a class="nav-link" href="#">
                                Home <span class="sr-only">(current)</span>
                            </a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">
                                Features
                </a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">
                                Pricing
                </a>
                        </li>
                    </ul>
                    <span class="navbar-text">Navbar text with an inline element</span>
                </div>
            </nav>
        </div>
          <div class="container-fluid">
            <div class="row">
              <div class="col-md-4">
                        <div>
                  <div class="row m-1">
                    <div class="col-md-11">
                      Chats
                  </div>
                    <div class="col-md-1">
                      <i class="fas fa-plus-circle"></i>
                    </div>
                  </div>
                  <div class="row mb-2">
                    <div class="col-md-12">
                      <form class="form-inline" style={{ height: "0%", width: "100%", paddingLeft: "0", paddingRight: "0", paddingTop: "8px" }}>
                        <input class="form-control  mr-sm-1" style={{ width: "80%" }} type="search" placeholder="Suchen" aria-label="Search" />
                        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Suchen</button>
                      </form>
                    </div>
                  </div>
                  <div class="row">
                    <div class="col-md-12">
                      <div class="list-group">
                        <div>
            <a href="#" class="list-group-item list-group-item-action flex-column align-items-start" style={{marginTop: "7.5px", marginBottom: "7.5px"}}>
                <div class="d-flex w-100 justify-content-between">
                    <h5 class="mb-1">List group item heading</h5>
                    <small>3 days ago</small>
                </div>
                <div class="row">
                    <div class="col-md-11">Donec id elit non mi porta...
                    </div>
                    <div class="col-md-1">
                        <span class="badge badge-primary badge-pill text-right">5</span>
                    </div>
                </div>
            </a>
        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <div class="col-md-8 ">
                  <div>
            <div class="row">
                <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 p-0">

                    <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success p-0">
                        <div class="row">
                        <!-- it should be the full width but unfortunatelly a scrollbar appears because of this section right here... -->
                            <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
                                <img src="..." class="image-head-chat" alt="Responsive image" />
                            </div>

                            <div class="col-8 col-sm-8 col-md-8 col-lg-8 col-xl-8">
                                Text
                            </div>

                            <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2">
                                Icons
                            </div>

                        </div>
                    </div>


                    <div class="row">
                        <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
                            Nachrichten
            </div>
                    </div>

                    <div class="row">
                        <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
                            Eingabe
              <div class="row">
                                Form
              </div>
                        </div>
                    </div>

                </div>
            </div>
        </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

</body>
</html>

可能您未正确实现网格。 避免向 bootstrap classes 添加额外的样式,并在需要时使用 .row。当您需要自定义样式时,请在 .container.row.col 中使用包装器,这样您就可以在不改变 bootstrap 行为的情况下管理它们。

在你的情况下,我会从 p-0 的父 div 中删除 class row,然后删除 class col-md-12 来自 p-0,将 p-0 width 设置为 100% 并删除属性 padding:0px。无论如何,我认为你的嵌套元素中还有其他问题,所以对你来说很好的讲座是:

在div class=col-md-8的行中,删除-15px的右边距和左边距;

就像您的 (使用 m-auto 的错误答案),实际问题是 网格结构不正确 .

网格必须container > row > col-*s > row > col-*s等...


简单回答:

“如何在不使用填充时删除水平滚动条”

遵循正确的网格结构...

<div class="container-fluid">
    <div class="row">
        <div class="col-12 bg-info p-0">
            no padding
        </div>
    </div>
</div>

并且,在 嵌套 列时遵循正确的网格结构...

<div class="container-fluid">
    <div class="row">
        <div class="col-12 p-0">
             <div class="row">
                <div class="col-12 bg-info p-0">
                no padding
                </div>
             </div>
        </div>
    </div>
</div>

那就没有水平滚动条了!

Demo


完整答案 (TL;DR)

阅读 Bootstrap 文档...

"Containers are the most basic layout element in Bootstrap and are required when using our default grid system. "

"Rows are wrappers for columns.... In a grid layout, content must be placed within columns and only columns may be immediate children of rows."

  • 1 - 网格需要一个 容器 -- 选择 container-fluid 以获得全宽
  • 2 - 列 并且只有列 .row 的直接子列,其他列不是。 Read about nesting.
  • 3 - 行 用于换列。 内容不应直接放在.row.

正在将您的代码与网格结构“规则”进行比较...

一个问题来了....

<div class="col-md-8 ">
    <div>
        <div class="row">
            <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 p-0">
                <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success p-0">
                    <div class="row">
                        <!-- it should be the full width but unfortunatelly a scrollbar appears because of this section right here... -->
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

您有一个 col-12 立即嵌套在另一个 col-12 中,但这是行不通的。正确的结构是...

<div class="col-md-8">
    <div class="row">
        <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 p-0">
            <div class="row">
                <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 bg-success p-0">
                    content here
                </div>
            </div>
        </div>
    </div>
</div>

其次,列和行被过度使用。没有理由在具有 12 个单位的列的更多行中包含 12 个单位的列。也没有理由在每个断点处使用相同的大小...

col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12

等同于:

col-12

最后,应该只有一个外容器流体,而不是嵌套在容器内的容器。如果要移除列周围或列之间的间距,可以使用 special no-gutters class,这是移除整行间距(填充)的正确方法。

只需遵循 correct grid stucture 即可大大简化整个标记。通过简单地了解网格的工作原理,您将节省大量时间...

container > row >(有内容的列)> row >(有内容的列)等...