【问题标题】:How to make element break out of grid and touch edge of browser如何使元素脱离网格并触摸浏览器的边缘
【发布时间】:2016-09-23 21:00:10
【问题描述】:

请参考下图。我设置了一个网格(使用 Bourbon Neat)。第一个粉红色元素通常超过 5 列,但绿色元素需要从第 6 列开始,但结束时会突破网格并接触浏览器的边缘。我很确定如果不使用 javascript,这是不可能的,但希望我能被证明是错误的!

有什么想法可以做到这一点吗?

编辑:这需要与外部容器上的 max-width 一起使用!

示例 HTML:

<div class="container">
 <div class="pink"></div>
 <div class="green"></div>
</div>

波旁威士忌:

.container{
  @include outer-container();
}
.pink{
  @include span-columns(5);
}
.green{
  @include span-columns(7);
  // What to do here???
}

【问题讨论】:

标签: css bourbon neat


【解决方案1】:

我有一个解决方案。这不是最漂亮的,但我确实认为它通常尊重 Neat 系统。在 CodePen 上:https://codepen.io/alexbea/pen/LRxXpO

粉红色和绿色(在我的示例中为紫色和青色)最终被包裹在各自的容器中,这些容器负责对齐网格。第二列通过使用等于填充的负右边距来突破。在这种情况下,使用vw 填充可以实现简单的一致性。您可能需要根据您的情况调整该值。

HTML

<div class="container">
 <div class="first"><div class="pink"></div></div>
 <div class="second"><div class="green"></div></div>
</div>

SCSS

.container {
  @include outer-container(100%);
  @include pad(2vw);
}

.first { @include span-columns(5); }
.second { @include span-columns(7); }

.pink,
.green { height: 100px; }

.pink { background-color: pink;}
.green {
  background-color: green;
  margin-right: -2vw;
}

【讨论】:

  • 感谢您的意见!这有效,但在外部容器有最大宽度时无效。这是我面临的真正问题。
  • 很公平。这不是您在帖子中提到的因素。正如 Sohaib Mohammed 所提到的,如果您提供问题代码的工作演示,您将获得更好的答案。一种解决方案是使用 vw 填充而不是百分比。您可以按照我更新的答案中所示执行此操作。
  • 嘿,如果我使用 margin-right: -12.06vw;我得到了我想要的-谢谢!我试图创建一个小提琴,但不知道如何导入波旁威士忌。 codepen.io/anon/pen/XjrvZE
  • 不错。小心使用这样的“幻数”(-12.06vw)。如果您可以在 Neat 或一致的变量中使用某些东西,则样式将不那么脆弱。在一个真实的项目中,我会将我的2vw 放入一个 Sass 变量中。 Codepen.io 允许您在 CSS 面板的设置中导入 Bourbon、Neat 和其他库以供将来使用。
【解决方案2】:

在这种情况下,我看不出使用网格的理由,因为您实际上只是在使用它来获得第一列的特定大小。您可以设置一个超过某个最小尺寸的断点,以使您的布局不网格化,然后您可以简单地使用绝对定位移动第二个“列”。

如果您打算将第二列的溢出部分用于纯粹的设计目的并且它不包含任何内容,您可以使用第二列伪元素 :before 或 :after 进行绝对定位。

【讨论】:

  • 但是没有网格,粉红色(和绿色)如何定位,使其与页面的其余部分(使用网格)对齐?
  • 您可以将网格用于粉红色元素,然后将绿色元素完全偏移粉红色的宽度 + 列间距。是这个意思吗?
猜你喜欢
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 2015-11-16
  • 1970-01-01
相关资源
最近更新 更多