我从第3季开始就一直在使用基金会,所以我没想到会出现这样的问题。
在这种特殊情况下,我需要一个固定宽度的左列(大3),然后是剩余的流体/响应内容列(大9)。
<div class="row">
<div class="large-3 columns" id="sidebar" style="width: 300px">
sidebar
</div>
<div class="large-9 columns" id="content">
content
</div>
</div>
问题是,缩小时,内容列会在侧边栏下方包裹/强制下降(甚至在超过下一个屏幕宽度阈值之前)。我在#sidebar
中尝试了“固定”和“粘性”类,但它们似乎不会影响此行为。
如果存在(基础?)解决方案,我不想开始破解CSS。
答案 0 :(得分:7)
就像@ naota的做法一样,我从Zurb得到的回应是破解了CSS。设置一个绝对定位的固定宽度侧边栏,然后用左边填充创建一个新的div:300px;
类似的东西:
<div class="row">
<div id="sidebar" style="position: absolute; width: 300px;">
</div>
<div class="large-12 columns" id="content" style="padding-left: 300px">
</div>
</div>
它的效果非常好......对于黑客来说。
答案 1 :(得分:4)
这是我使用SASS创建固定列宽的方法。
@mixin fixed($width, $direction) {
position: absolute;
width: rem-calc($width) + $column-gutter;
top: 0;
@if $direction == left {
left: 0;
} @else {
right: 0;
}
}
@mixin fluid($width, $direction) {
@if $direction == left {
padding-right: rem-calc($width) + ($column-gutter * 1.5);
} @else {
padding-left: rem-calc($width) + ($column-gutter * 1.5);
}
}
要插入固定的300px右列,请将@include fixed(300, right);
添加到右列类,将@include fluid(300, left);
添加到左列类。 请勿与默认的small-# column
类混用。
如果您要设置永久类,与small-3 column
,large-6 column
等类似,只需添加以下代码即可。现在,您可以将large-fluid-300-left
用于左侧流体列,将large-fixed-300-right
用于右侧固定列。
// Fixed 300px
.row { position: relative; }
@media #{$small-up} {
.small-fixed-300-left.column { @include fixed(300, left); }
.small-fixed-300-right.column { @include fixed(300, right); }
.small-fluid-300-left.column { @include fluid(300, left); }
.small-fluid-300-right.column { @include fluid(300, right); }
}
@media #{$medium-up} {
.medium-fixed-300-left.column { @include fixed(300, left); }
.medium-fixed-300-right.column { @include fixed(300, right); }
.medium-fluid-300-left.column { @include fluid(300, left); }
.medium-fluid-300-right.column { @include fluid(300, right); }
}
@media #{$large-up} {
.large-fixed-300-left.column { @include fixed(300, left); }
.large-fixed-300-right.column { @include fixed(300, right); }
.large-fluid-300-left.column { @include fluid(300, left); }
.large-fluid-300-right.column { @include fluid(300, right); }
}
如果您正在使用广告,则可能会遇到一个问题,一旦达到某个最小宽度,您就需要将列折叠到自己的行中。这是我用来设置最小列宽的方法。
@mixin min($width) {
width: $width + px;
float: left;
box-sizing: content-box;
+ .column {
float: left;
}
}
将@include min(300);
添加到列类。 必须在column
类之外使用。
以下代码允许您将类.small-min-300.column
等类添加到要折叠的列中,如果它们都被压缩到300px以下。
// Min 300px
@media #{$small-up} {
.small-min-300.column { @include min(300); }
}
@media #{$medium-up} {
.medium-min-300.column { @include min(300); }
}
@media #{$large-up} {
.large-min-300.column { @include min(300); }
}
我直接从我的SASS文件中提取了这个,并且在编写时没有测试过代码。如果某些事情无法按预期发挥作用,请告诉我。
答案 2 :(得分:3)
我遇到了类似的问题。下面的代码使用display:table
将您的代码分为两部分。
<强> CSS 强>:
<style type="text/css">
.wrapper_table{
display: table;
width:100%;
}
.wrapper_row{
display:table-row;
vertical-align:top;
}
.wrapper_cell{
display:table-cell;
vertical-align:top;
}
</style>
<强> HTML 强>:
<section class="wrapper_table">
<div class="wrapper_row">
<div class="wrapper_cell">
<!-- your side bar is here -->
<div class="columns" id="sidebar" style="width:300px;">
sidebar
</div>
</div>
<div class="wrapper_cell">
<div class="row">
<!-- your content is here -->
<div class="large-12 columns" id="content" >
content content content content content
content content content content content
</div>
</div>
</div>
</div>
</section>
希望这有帮助。
答案 3 :(得分:0)
如果有人最近发现这篇旧文章试图在Foundation中找到一种固定宽度的列的方法,那么我可以使用Foundation 6做到这一点。我使用的是Flex-Grid,这是一个很棒的选择名为.shrink
的类。缩小将使列仅宽于其内容,因此您可以在其中放置元素,例如导航项或图像,并且该列将保持该宽度,因为周围的其他列会占用剩余空间。这样我就可以做一个固定宽度的中间列:
<div class="row">
<div class="columns"></div>
<div class="shrink columns">
This will shrink to it's contents - set a width on something here!
</div>
<div class="columns"></div>
</div>
.shrink
类的官方基金会文档页面:
https://codepen.io/ZURBFoundation/pen/aWYVgd