Zurb Foundation - 删除中等屏幕的列

Posted

技术标签:

【中文标题】Zurb Foundation - 删除中等屏幕的列【英文标题】:Zurb Foundation - Remove column for medium screens 【发布时间】:2012-10-08 23:09:39 【问题描述】:

我在 Zurb Foundation 3 中有一个网站原型,到目前为止我有桌面版本,现在我正在调整它以负责平板电脑和手机。

我正在苦苦挣扎的是:我有一些列内容连续,我想删除一些用于中小分辨率的列。但我希望其他列延伸到页面宽度的其余部分。我该如何正确地做到这一点?

我正在使用

class="hide-for-medium-down"

隐藏元素,但是如何包装内容以便在隐藏某些元素时拉伸?

我找到了两种方法,但都不起作用: 1)我把它作为标准的行列,例如:

<div class="row">
    <div class="three columns">...</div>
    <div class="three columns">...</div>
    <div class="three columns hide-for-medium-down">...</div>
    <div class="three columns">...</div>
</div>

但在这种情况下,第三列将保持空白。

2) 我可以像这样使用块网格来制作它:

<ul class="block-grid four-up">
    <li>1</li>
    <li>2</li>
    <li class="hide-for-medium-down">3</li>
    <li>4</li>
</ul>

但这一次第 4 列只是向左移动到第 3 的位置,并且第四个空间将再次保持空白。

我得到的最接近的方法是使用 mobile-x-up 类来调整网格以减少移动设备的列 - 这样:

<ul class="block-grid four-up mobile-three-up">
    <li>1</li>
    <li>2</li>
    <li class="hide-for-medium-down">3</li>
    <li>4</li>
</ul>

不幸的是,这仅适用于手机,但我无法将其也用于中等分辨率的平板电脑,因为没有等效的。

所以总的来说,我的问题是:解决这个问题的最佳方法是什么?在保持网格的同时在较小的屏幕上隐藏元素的最佳方法是什么?是否有可能在中等屏幕上从网格中删除元素同时保持网格正常工作?

【问题讨论】:

这需要自定义 CSS。但是,您应该尽量少用这种技术。隐藏内容列会破坏响应式设计的许多好处。 netmagazine.com/features/… 【参考方案1】:

听起来您正在寻找 CSS 媒体查询。我建议您阅读以下页面。

http://www.w3.org/TR/css3-mediaqueries/

除了隐藏内容之外,为什么不调整它的大小以便您的移动用户也可以查看它,除非您认为这是一个糟糕的设计选择!

希望对你有帮助。

【讨论】:

Justin - 看看 Zurb 的 Foundation:foundation.zurb.com 这是一个高级响应式框架,广泛使用媒体查询。这个问题专门针对使用 Foundation 框架更改列集的大小,而不仅仅是关于如何使用一般媒体查询的问题。【参考方案2】:

我想出的最佳解决方案是在调整浏览器大小(或以特定大小加载)时使用 jQuery 对特定列进行一些更改。

类似下面的内容(直接从我的项目文件中取出 - 因此您必须根据您的特定目的进行编辑)。

$(document).ready(function() 
    check_column_size();  
);

$(window).resize(function() 
    check_column_size();
);

function check_column_size() 
    if( $(window).width() >= 768 && $(window).width() <= 800 ) 
        $('section#main').removeClass( 'eight' ).addClass( 'eleven' );
        $('section#sidebar').removeClass( 'hide-for-small' ).addClass( 'hide' );
     else 
        $('section#main').removeClass( 'eleven' ).addClass( 'eight' );
        $('section#sidebar').removeClass( 'hide' ).addClass( 'hide-for-small' );
    

需要添加/删除 hide-for-small 类的行,因为该类包含样式

display:inherit !important;

覆盖任何隐藏/删除元素的尝试。所以我需要删除该类,然后再将其重新添加,以便成功地将我的元素隐藏在“小”以上的分辨率。

似乎适用于我的情况,但我只在一小部分进行。如果您试图同时为页面上的许多不同元素实现这一点,您可能会遇到问题。

【讨论】:

【参考方案3】:

您可以使用重复的内容进行此操作:

<div class="row hide-for-medium-down">
    <div class="three columns">...</div>
    <div class="three columns">...</div>
    <div class="three columns">...</div>
    <div class="three columns">...</div>
</div>
<div class="row show-for-medium-down">
    <div class="four columns">...</div>
    <div class="four columns">...</div>
    <div class="four columns">...</div>
</div>

【讨论】:

【参考方案4】:

不确定您使用的是哪个版本,但在 Foundation 5 中,试试这个...

<div class="row">
    <div class="columns small-3">...</div>
    <div class="columns small-6 large-3">...</div>
    <div class="columns small-3 hide-for-medium-down">...</div>
    <div class="columns small-3">...</div>
</div>

或者这个……

<div class="row">
    <div class="columns small-3 large-4">...</div>
    <div class="columns small-6 large-4">...</div>
    <div class="columns small-3 hide-for-medium-down">...</div>
    <div class="columns small-3 large-4">...</div>
</div>

等等,这取决于您希望剩余列如何填充空间。

【讨论】:

【参考方案5】:

我最好的建议,升级您的框架...使用基础 5,此代码将实现您想要的:隐藏移动/平板电脑的列,并且列空间均匀。

<div class="row">
    <div class="small-4 large-3">...</div>
    <div class="small-4 large-3">...</div>
    <div class="large-3 show-for-large-up">...</div>
    <div class="small-4 large-3">...</div>
</div>

对于移动设备和平板设备,第三列将被隐藏,仅显示 3 列;在桌面上,将显示 25% 宽度的四列。

这是解决此要求的最佳方法,恕我直言

【讨论】:

以上是关于Zurb Foundation - 删除中等屏幕的列的主要内容,如果未能解决你的问题,请参考以下文章

使用 Zurb Foundation 复制导航标记

Zurb/Foundation 框架:如何将 top-bar-section 向左对齐而不是向右对齐

我们可以强制 ZURB Foundation 4 只使用 jQuery 而不是 Zepto 吗?

scss 来自Foundation(Zurb)的Flex Video Mixin的修改版本https://github.com/zurb/foundation/blob/master/scss/fou

Zurb Foundation 'Joyride':如何开始/以编程方式

SASS 和 Zurb Foundation - 令人困惑的安装说明