具有可变宽度内容的嵌套 clearfix
Nested clearfix with fluid width contents
考虑这个案例:
- 有一个内容宽度可变的布局,固定边栏向右浮动。所述布局的容器正在使用 clearfix 清除右侧的 float
- 在内容块内还有另一个块做同样的事情。第二个块扩展到侧边栏的高度,直到它用
:after { clear: both }
清除侧边栏的浮动
演示:
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 的额外要点,因为它会剪切绝对位于布局内的任何内容。
考虑这个案例:
- 有一个内容宽度可变的布局,固定边栏向右浮动。所述布局的容器正在使用 clearfix 清除右侧的 float
- 在内容块内还有另一个块做同样的事情。第二个块扩展到侧边栏的高度,直到它用
:after { clear: both }
清除侧边栏的浮动
演示: 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 的额外要点,因为它会剪切绝对位于布局内的任何内容。