【问题标题】:Grid gutters are too wide for viewport and causing line break网格排水沟对于视口来说太宽并导致换行
【发布时间】:2016-04-23 16:44:15
【问题描述】:

这是一个非常复杂的例子,但假设我有 100 个 div,它们有一个 margin-right1px...它们将中断到下一行,因为仅元素的宽度就占据了全部视口的宽度。

现在,我明白了,但是当问题是由固定宽度的排水沟引起时呢?

我想我的问题是,是否有可能在不将网格分解到下一行的情况下让排水沟自身(及其列)塌陷?

这是我要修复的一个示例:http://codepen.io/corysimmons/pen/PZOPMm?editors=110

【问题讨论】:

  • 你有没有在元素上尝试过“box-sizing:border-box”?
  • 我认为您正在寻找display: flex;Here's a demo.

标签: css grid gutter


【解决方案1】:

当容器没有足够的空间容纳浮动的孩子时,他们会进入下一行,即预期行为。

您可以将容器设置为white-space:nowrap,如果您需要将子项设置为display:inline-block,则它们始终在一行中。

根据规范8.3.1 Collapsing margins

水平边距永远不会塌陷。

.container {
  white-space: nowrap;
}
div {
  display: inline-block;
  margin-right: 60px;
  background: tomato;
}
<div class="container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
  <div>11</div>
  <div>12</div>
  <div>13</div>
  <div>14</div>
  <div>15</div>
  <div>16</div>
  <div>17</div>
  <div>18</div>
  <div>19</div>
  <div>20</div>
  <div>21</div>
  <div>22</div>
  <div>23</div>
  <div>24</div>
</div>

但是,您可能会感兴趣一些解决方法。基本思想是制作一个均等分布的网格系统。

  1. 弹性盒方法:

.container {
  display: flex;
  justify-content: space-around;
}
div {
  background: tomato;
}
<div class="container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
  <div>11</div>
  <div>12</div>
  <div>13</div>
  <div>14</div>
  <div>15</div>
  <div>16</div>
  <div>17</div>
  <div>18</div>
  <div>19</div>
  <div>20</div>
  <div>21</div>
  <div>22</div>
  <div>23</div>
  <div>24</div>
</div>
  1. CSS 表格布局:

.container {
  display: table;
  width: 100%;
  table-layout: fixed;
}
div {
  display: table-cell;
  text-align: center;
  background: tomato;
}
<div class="container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
  <div>11</div>
  <div>12</div>
  <div>13</div>
  <div>14</div>
  <div>15</div>
  <div>16</div>
  <div>17</div>
  <div>18</div>
  <div>19</div>
  <div>20</div>
  <div>21</div>
  <div>22</div>
  <div>23</div>
  <div>24</div>
</div>

【讨论】:

  • 谢谢!很好的答案。 =)
【解决方案2】:

这是另一个可能有用的选项 - 使用媒体查询来指定不同设备宽度下的装订线宽度。

div {
  float: left;
  width: 4.16%;
  background: HotPink;
}
@media (min-width: 800px) {
  div {
    width: 3.16%;
    margin-right: 1%;
  }
}
@media (min-width: 1000px) {
  div {
    width: 2.16%;
    margin-right: 2%;
  }
}
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>
<div>24</div>

【讨论】:

    【解决方案3】:

    这是一个使用display:flex 布局的示例(运行“整页”来调整大小):

    #container {
      display: flex;
      justify-content: space-between;
    }
    #container > div {
      padding: 0 10px;
      background: tomato;
    }
    <div id="container">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>5</div>
      <div>6</div>
      <div>7</div>
      <div>8</div>
      <div>9</div>
      <div>10</div>
      <div>11</div>
      <div>12</div>
      <div>13</div>
      <div>14</div>
      <div>15</div>
      <div>16</div>
      <div>17</div>
      <div>18</div>
      <div>19</div>
      <div>20</div>
      <div>21</div>
      <div>22</div>
      <div>23</div>
      <div>24</div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2014-10-30
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      相关资源
      最近更新 更多