使用网格CSS的3列网格(从上到下) [英] 3 columns grid (top to bottom) using grid CSS
问题描述
好吧,这是一种情况,假设我有一个项目数未知的列表,可能是10或100,我想将它们分3列,从上到下而不是从左到右.>
现在我可以使用columns: 3;
和column-gap: 10px;
做到这一点,一切都很好.
我的问题是,如何在不知道项目数量的情况下使用display: grid;
获得相同的结果?
我知道,如果您有固定数量的项目,则可以使用CSS Grid实现此目的,但是动态项目可以吗?当然不用JS.
ul {
list-style: none;
columns: 3;
column-gap: 10px;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
</ul>
我认为在没有预先知道要显示的项目数的情况下是不可能的,对于您而言,您可以这样做:
ul {
display: grid;
grid-auto-flow: column;
grid-template-rows: repeat(8, 1fr);
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
</ul>
但是行数必须事先定义.
Ok, here's the situation, let's say I have a list with unknown number of items, it could be 10 or a 100, and I want to lay them out in 3 columns going top to bottom not left to right.
Right now I can achieve this using columns: 3;
and column-gap: 10px;
That's all fine and everything.
My question is, how to achieve the same results using display: grid;
without knowing the number of items?
I know you can achieve this with CSS Grid if you have a fixed number of items, but is it possible with dynamic items? without using JS of course.
ul {
list-style: none;
columns: 3;
column-gap: 10px;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
</ul>
I don't think this is possible without previously know the number of items that you want to display, for your case you could do this:
ul {
display: grid;
grid-auto-flow: column;
grid-template-rows: repeat(8, 1fr);
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
</ul>
But the number of rows have to be defined previously.
这篇关于使用网格CSS的3列网格(从上到下)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!