【问题标题】:Visible grid lines with CSS带有 CSS 的可见网格线
【发布时间】:2013-11-15 00:09:05
【问题描述】:

我正在开发一个响应式网站。该网站在背景中有可见的网格线,您可以将其与此进行比较:http://fearonhay.com/(背景中的灰色线条非常柔和)。但是有一个区别,这让我更难找出解决它的最佳方法:网站是响应式的(% 宽度)。

我做了一个非常粗略的草稿,它应该是什么样子。其实不止三列,还有四列:

我创建了一个快速小提琴(在 Chrome 中查看)来测试它是否按我的意图工作:http://jsfiddle.net/T76MK/

.lines {
    background-image: -webkit-linear-gradient(0, black 1px, transparent 1px);
    background-size: 25% 100%; 
}
.grid {
    margin-left: -30px; /* Gutter */    
}
.grid__item {
    box-sizing: border-box;
    display: inline-block;
    padding-left: 30px; /* Gutter */
    vertical-align: top;    
}
.one-quarter { width: 25%; }
.red { background: red; }

如您所见,我对线条使用了线性渐变,但第二条和第四条线偏离了几个像素。它们没有在排水沟内正确居中。第三行看起来不错。任何想法如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: html css grid


    【解决方案1】:

    您的代码有很多问题...

    我会这样做:
    http://jsfiddle.net/T76MK/7/

    问题:你为什么在这里使用双下划线?不好....grid__item

    另外,如果您需要那些排水沟(您永远不应该使用负边距),您可能需要查看您网站/页面的其余部分的其他代码问题。

    【讨论】:

    • 谢谢,您的代码仅在所有列具有相同高度时才有效,但并非一直如此。所以我不得不用背景渐变来伪造线条,或者我需要为此使用图像并使用背景大小将其拉伸到全高和全宽。我不确定,哪一个效果更好。我的代码中的“__”基于 BEM 方法 (csswizardry.com/2013/01/…),这对我来说非常有用。 Bootstrap 还对网格使用负边距,为什么你认为我不应该使用它们来摆脱那些 :last-item 类?
    • 我认为你需要更新你的 HTML 和 CSS,伙计。 :) 你在上面的建议并不是去做你想做的事情的好方法——根本就不是。我用一个干净的解决方案更新了我的答案。让我知道这是否适合你...
    • 每种方法都有其缺点。您更新的代码可能大部分时间都有效,但前提是您的“.grid_items”具有相同的宽度(在我们的例子中为“四分之一”)并且只填充一行。如果您在代码中添加更多“grid_items”,您将不会看到所有这些,因为“height: 100%”。无论如何感谢您的帮助!
    • 嗯?只需添加/更改 CSS 类?与您的方法没有什么不同,您需要另一个图像或更改background-gradient hack 太大声笑。如果您要动态添加列,请使用 jQuery 根据列数分配集合类。这将是几行代码。为此使用图像和背景渐变是非常糟糕的做法。你真的应该看看 CSS 框架,比如 Zurb Foundation 或 Bootstrap。它会解决你的很多问题。我所做的代码遵循相同的结构。避免图像和 CSS3 hack。不需要,当你可以用更少的代码用简单的 CSS 做到这一点时。
    • 如果这个答案“回答”了您的问题,请不要忘记接受。 :) 干杯和快乐的编码......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    相关资源
    最近更新 更多