如何获得 2 或 3 种颜色模式与正方形的弹性响应网格(2,3 或 4 行)?手写笔/SASS

Posted

技术标签:

【中文标题】如何获得 2 或 3 种颜色模式与正方形的弹性响应网格(2,3 或 4 行)?手写笔/SASS【英文标题】:How to get 2 or 3 colours pattern with flex responsive grid of squares (2,3 or 4 in row)? Stylus / SASS 【发布时间】:2017-06-29 22:47:36 【问题描述】:

好标题不容易,要解释一下:

我有正方形的弹性网格。我宁愿只为他们坚持两种颜色。当我有 2 或 4 个排成一行(小屏幕或大屏幕)时,这不是问题,但它在我有 3 个正方形的中等尺寸屏幕上成为问题。

举个例子: c1 颜色 1,c2 颜色 2

小屏幕:

c1c2

c2c1

c1 c2 ...

大屏幕上的类似图案,但一行有 4 个:

c1 c2 c1 c2

c2 c1 c2 c1 ...

在中等屏幕上我需要这样:

c1 c2 c1

c2 c1 c2

c1 c2 c1 ...

如果可能的话,我希望通过 SASS/Stylus 自动使用 CSS(我使用的是 stylus,但它是受 SASS 启发的,所以 sass 解决方案可以工作。

如果有人可以建议如何用 4 种颜色处理它会很棒。

到目前为止,我不知道如何开始,因为它全部在一个带有 wrap 的 flex 行中,所以不知道如何确定它是奇数/偶数元素(不要尝试考虑 3 种颜色...)

【问题讨论】:

【参考方案1】:

我给你做了一个sasssouce。添加选择器、颜色和断点。趁热食用。

<colors>
  <color></color>
  <color></color>
  <color></color> 
  ...
</colors>
$c1 : #f50;
$c2 : #fc0; 
$sm : 480px;
$md : 768px;
$lg : 992px;
$parent: 'colors';
$child: 'color';

#$child 
  background-color: $c1;

#$child:nth-child(2n + 1) 
  background-color: $c2;

@media (min-width: $sm) and (max-width: $md) 
  #$child:nth-child(4n+2),
  #$child:nth-child(4n+3) 
    background-color: $c1
  
  #$child:nth-child(4n),
  #$child:nth-child(4n+1) 
    background-color: $c2
  

@media (min-width: $lg) 
  #$child:nth-child(8n+5),
  #$child:nth-child(8n+7) 
    background-color: $c1;
  
  #$child:nth-child(8n+6),
  #$child:nth-child(8n+8) 
    background-color: $c2;
  


/* 
 * rest is layout - might want to ignore it 
 * necessary for fiddle to function 
 */

#$parent 
  display: flex;
  flex-wrap: wrap;

#$child 
  min-height: 6rem;
  flex: 0 0 100%;
  display: block;

@media (min-width: $sm) and (max-width: $md) 
  #$child 
    flex: 0 0 50%;
  

@media (min-width: $md) 
  #$child 
    flex: 0 0 33.3333%;
  

@media (min-width: $lg) 
  #$child 
    flex: 0 0 25%;
  

【讨论】:

以上是关于如何获得 2 或 3 种颜色模式与正方形的弹性响应网格(2,3 或 4 行)?手写笔/SASS的主要内容,如果未能解决你的问题,请参考以下文章

十一. 图形图像与多媒体3.绘图模式

如何从卡片或类似文件中获取标题以与弹性框具有相同的高度?

设计模式:桥接模式

怎样在AI里将RGB模式转为CMYK模式?

二维码的种类都有哪些?

在基础R的散点图中转换图例的形状和颜色