Javascript 如何允许用户设置网格图像布局中的列数?

Javascript 如何允许用户设置网格图像布局中的列数?,javascript,css,layout,jquery-masonry,grid-layout,Javascript,Css,Layout,Jquery Masonry,Grid Layout,我可以通过哪些方式实现此布局?我将有一个图像网格。每个图像的大小都相同。我想根据定义网格中列数的用户设置来上下缩放图像。用户设置将存储在HTML5本地存储器中 我已经看过了砖石结构,但我不知道这是否有点过分,因为所有的图像都是相同的大小,网格也会是统一的。砌石让我定义了柱的宽度,这可以让我在我需要的地方,但我喜欢的东西,让我直接定义柱的数量。我也考虑过在布局中使用Flexbox,但我不确定如何使用用户可选择的设置更改列数。我希望使用此解决方案在开发开销方面尽可能轻 这里有一些图片可以帮助我想象我

我可以通过哪些方式实现此布局?我将有一个图像网格。每个图像的大小都相同。我想根据定义网格中列数的用户设置来上下缩放图像。用户设置将存储在HTML5本地存储器中

我已经看过了砖石结构,但我不知道这是否有点过分,因为所有的图像都是相同的大小,网格也会是统一的。砌石让我定义了柱的宽度,这可以让我在我需要的地方,但我喜欢的东西,让我直接定义柱的数量。我也考虑过在布局中使用Flexbox,但我不确定如何使用用户可选择的设置更改列数。我希望使用此解决方案在开发开销方面尽可能轻

这里有一些图片可以帮助我想象我想要什么。在此,用户选择了5列布局

以下是4列和3列布局


如果已知选项的数量,则可以为每个场景创建容器样式

.five-col .col {
 float: left;
 width: 20%;  
}
并将您的html结构为

<ul class="five-col">
   <li class="col"> image </li>
   ...
</ul>
    图像 ...
为每个列布局创建一个新的容器样式,例如
.four col
.eight col
,然后在它们之间切换

这确实要求您提前知道允许他们选择的列数,但“n”解决方案可能允许用户创建一些愚蠢的内容,例如20多个列,因此提前检查选项有其优势


如果您对提供类似功能的框架感兴趣,请查看或。

如果您的选项数量已知,则可以为每个场景创建容器样式

.five-col .col {
 float: left;
 width: 20%;  
}
并将您的html结构为

<ul class="five-col">
   <li class="col"> image </li>
   ...
</ul>
    图像 ...
为每个列布局创建一个新的容器样式,例如
.four col
.eight col
,然后在它们之间切换

这确实要求您提前知道允许他们选择的列数,但“n”解决方案可能允许用户创建一些愚蠢的内容,例如20多个列,因此提前检查选项有其优势


如果您对提供类似功能的框架感兴趣,请查看或。

如果您的选项数量已知,则可以为每个场景创建容器样式

.five-col .col {
 float: left;
 width: 20%;  
}
并将您的html结构为

<ul class="five-col">
   <li class="col"> image </li>
   ...
</ul>
    图像 ...
为每个列布局创建一个新的容器样式,例如
.four col
.eight col
,然后在它们之间切换

这确实要求您提前知道允许他们选择的列数,但“n”解决方案可能允许用户创建一些愚蠢的内容,例如20多个列,因此提前检查选项有其优势


如果您对提供类似功能的框架感兴趣,请查看或。

如果您的选项数量已知,则可以为每个场景创建容器样式

.five-col .col {
 float: left;
 width: 20%;  
}
并将您的html结构为

<ul class="five-col">
   <li class="col"> image </li>
   ...
</ul>
    图像 ...
为每个列布局创建一个新的容器样式,例如
.four col
.eight col
,然后在它们之间切换

这确实要求您提前知道允许他们选择的列数,但“n”解决方案可能允许用户创建一些愚蠢的内容,例如20多个列,因此提前检查选项有其优势

如果您对提供类似功能的框架感兴趣,请查看或。

我会这样做:

*
{
     -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

body
{
    margin:0;
    padding: 0px;
}

.gallery
{
    padding: 15px;
    margin:0;
    list-style: none;
    overflow: hidden;
}

.gallery > li
{
    margin: 0px;
    padding: 2.5px 5px;
    float: left;
    text-align: center;
}

.gallery > li img
{
    max-width: 100%;
}

.gallery.items2 > li
{
    width: 50%;
}

.gallery.items3 > li
{
    width: 33.333%;
}

.gallery.items4 > li
{
    width: 25%;
}

.gallery.items5 > li
{
    width: 20%;
}

.gallery.items6 > li
{
    width: 16.666%;
}
一些jQuery(或JS)

此HTML:

<input type="range" min="2" id="grid-range" max="6" value="2" step="1" name="power" />

<ul id="gallery" class="gallery items2">
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
</ul>

下面是一个演示:

我可以这样做:

*
{
     -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

body
{
    margin:0;
    padding: 0px;
}

.gallery
{
    padding: 15px;
    margin:0;
    list-style: none;
    overflow: hidden;
}

.gallery > li
{
    margin: 0px;
    padding: 2.5px 5px;
    float: left;
    text-align: center;
}

.gallery > li img
{
    max-width: 100%;
}

.gallery.items2 > li
{
    width: 50%;
}

.gallery.items3 > li
{
    width: 33.333%;
}

.gallery.items4 > li
{
    width: 25%;
}

.gallery.items5 > li
{
    width: 20%;
}

.gallery.items6 > li
{
    width: 16.666%;
}
一些jQuery(或JS)

此HTML:

<input type="range" min="2" id="grid-range" max="6" value="2" step="1" name="power" />

<ul id="gallery" class="gallery items2">
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
</ul>

下面是一个演示:

我可以这样做:

*
{
     -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

body
{
    margin:0;
    padding: 0px;
}

.gallery
{
    padding: 15px;
    margin:0;
    list-style: none;
    overflow: hidden;
}

.gallery > li
{
    margin: 0px;
    padding: 2.5px 5px;
    float: left;
    text-align: center;
}

.gallery > li img
{
    max-width: 100%;
}

.gallery.items2 > li
{
    width: 50%;
}

.gallery.items3 > li
{
    width: 33.333%;
}

.gallery.items4 > li
{
    width: 25%;
}

.gallery.items5 > li
{
    width: 20%;
}

.gallery.items6 > li
{
    width: 16.666%;
}
一些jQuery(或JS)

此HTML:

<input type="range" min="2" id="grid-range" max="6" value="2" step="1" name="power" />

<ul id="gallery" class="gallery items2">
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
</ul>

下面是一个演示:

我可以这样做:

*
{
     -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

body
{
    margin:0;
    padding: 0px;
}

.gallery
{
    padding: 15px;
    margin:0;
    list-style: none;
    overflow: hidden;
}

.gallery > li
{
    margin: 0px;
    padding: 2.5px 5px;
    float: left;
    text-align: center;
}

.gallery > li img
{
    max-width: 100%;
}

.gallery.items2 > li
{
    width: 50%;
}

.gallery.items3 > li
{
    width: 33.333%;
}

.gallery.items4 > li
{
    width: 25%;
}

.gallery.items5 > li
{
    width: 20%;
}

.gallery.items6 > li
{
    width: 16.666%;
}
一些jQuery(或JS)

此HTML:

<input type="range" min="2" id="grid-range" max="6" value="2" step="1" name="power" />

<ul id="gallery" class="gallery items2">
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
    <li><img src="http://www.placehold.it/200x200" /></li>
</ul>

下面是一个演示: