具有可变宽度内容的嵌套 clearfix

Nested clearfix with fluid width contents

考虑这个案例:

演示: https://jsfiddle.net/pv6e93px/1/

示例html:

<section class="layout">
  <aside>main sidebar!</aside>
  <div class="wrap">
    <article class="article">
      <header class="header">
        <span class="note">I break stuff!</span>
      </header>
      <div class="content">
        Main content!
      </div>
    </article>
  </div>
</section>

SCSS 示例:

@mixin clearfix() {
    &:before,
    &:after {
        content: "";
        display: table;
    }
    &:after {
        clear: both;
    }
}

.layout {
  @include clearfix();

  .wrap {
    margin-right: 200px;
    background: gray;
  }

  > aside {
    width: 200px;
    height: 700px;
    float: right;
    background: salmon;
  }
}

.article {
  .header {
    @include clearfix();
    background: green;

    .note {
      display: block;
      float: right;
      background: hotpink;
    }
  }

  .content {
    height: 200px;
    background: red;
  }
}

预计:

而是得到:

有谁知道如何在不限制内容宽度或使用其他布局模式(flexbox、绝对定位)的情况下解决这个问题。不使用 overflow: hidden 的额外要点,因为它会剪切绝对位于布局内的任何内容。

你可以尝试添加这个:

.wrap {
  ...
  overflow: hidden;
}

jsFiddle

或者,使用 calc():

.wrap {
  width: calc(100% - 200px);
  float: left;
}

jsFiddle