bootstrap 网格_在10分钟内使用Salvattore和Bootstrap构建动态网格

bootstrap 网格

Salvattore自称为jQuery Masonry替代品,但有一个重要区别:它使用CSS配置而不是JavaScript。 这些网格可以在网上看到,也许最有名的是在Pinterest上

今天,我们将Salvattore与Twitter Bootstrap 3结合使用,以构建出令人赞叹的流动网格结构。

入门:您需要的

首先,你需要抓住Salvattore JavaScript库( 精缩 )。 接下来,您需要链接Twitter BootstrapCSS。 我们将直接从NetDNA的BootstrapCDN借用而不是下载和托管我们自己的副本。

<html> 
    <head> 
        <link rel="stylesheet" src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 
        <title>Salvattore + Bootstrap</title> 
    </head> 
    <body> 
    
    <!-- This is where the magic happens! --> 
    
    <script src="salvattore.js"></script> 
    
    </body> 
</html>

一旦完成,就可以开始配置Salvattore了!

接下来,您将在标题中使用外部样式表或<style type='text/css'>标记。 我们的大部分工作将在样式表中完成。

注意 :必须包含typerel属性,Salvattore才能正常工作。

快速启动网格入门

Twitter Bootstrap提供了强大, 灵活的网格结构 ,该结构专注于自底向上的媒体查询。 让我们看一看常见的列行。

<div class="row"> 
    <div class="col-xs-12 col-md-4"></div> 
    <div class="col-xs-6 col-sm-3 col-md-4"></div> 
    <div class="col-xs-6 col-sm-3 col-md-4"></div> 
    <div class="col-xs-12 col-sm-3 col-md-4"></div> 
    <div class="col-xs-6 col-md-4"></div> 
    <div class="col-xs-6 col-md-4"></div> 
</div>

您会在上面的标记中注意到col-[size]-[column number] 。 使用xssmmdlg可用大小,我们可以为不同的断点设置不同的列大小,而无需编写特定的媒体查询。 看一下这个示例该示例显示列如何在不同的屏幕宽度下移动。

引导面板

我们将使用Bootstrap的面板组件创建一个流动的网格。 创建面板的标记是这样构建的:

<div class="panel panel-primary"> 
    <div class="panel-heading">Panel heading without title</div> 
    <div class="panel-body">Panel content</div> 
</div>

将其与Salvattore Magic结合在一起

现在我们有了所需的Bootstrap零件,我们将把它们与Salvattore放在一起。 现在,我们将从六个空白面板开始; 稍后,我们将为每个面板提供一些动态内容。

为了使Salvattore正常工作,我们的网格容器需要一个data-columns属性。 这是我们当前的标记外观:

<div id="grid" data-columns> 
    <div class="panel panel-primary"> 
        <div class="panel-heading">Panel heading without title</div>
        <div class="panel-body"> Panel content </div> 
    </div> 
    
    <!-- repeat the panel as many times as you'd like --> 
    
</div>

接下来,我们将转到样式表,并通过伪元素添加以下标签:

@media screen and (min-width: 1px) and (max-width: 767px){
    #columns[data-columns]::before {
        content: '2 .col-xs-6';
    }
}
@media screen and (min-width:768px) and (max-width: 991px){
    #columns[data-columns]::before {
        content: '3 .col-sm-4';
    }
}
@media screen and (min-width:992px) and (max-width: 9999px){
    #columns[data-columns]::before {
        content: '4 .col-md-3';
    }
}

我们选择的断点直接映射到Bootstrap的媒体查询。 Salvattore使用::before伪元素和content属性定义所创建列的类,然后尝试将元素均匀地拆分为这些列。

使其动态

到目前为止,我们一直严格限制CSS内的内容,但是如果您想加倍努力,JavaScript可以提供一些帮助。

Salvattore通过提供附加功能使事情更进一步。 通过这些功能以及与API的连接(我们使用Google的Book API通过Ernest Hemingway提取图书),我们可以构建一个动态网格。 这是我们将使用JavaScript:

function append(title, content) {
    // build/select our elements
    var grid = $('#columns')[0];
    var item = document.createElement('div');
    // build the html
    var h = '<div class="panel panel-primary">';
    h += '<div class="panel-heading">';
    h += title;
    h += '</div>';
    h += '<div class="panel-body">';
    h += content;
    h += '</div>';
    h += '</div>';
    salvattore['append_elements'](grid, [item])
    item.outerHTML = h;
}
$.getJSON("https://www.googleapis.com/books/v1/volumes?q=inauthor:Ernest+Hemingway&callback=?", function (data) {
    $(data.items).each(function (i, book) {
        append(book.volumeInfo.title, book.volumeInfo.description);
    });
});

注意:需要jQuery

首先,我们创建一个append函数,该函数获取标题和内容,并将其包装在面板标记中。 然后,我们使用salvattore['append_elements'](grid, [item])函数将该项添加到网格中。 最后,我们运行AJAX调用以提取动态数据。

为了使其正常工作,我们将希望删除网格固定器中的所有内容。

<div id="grid" data-columns></div>

Salvattore将为我们填写列。

我们的最终标记如下所示:

<!DOCTYPE html>

<html>
<head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
    <style type="text/css">
        @media screen and min-width 1px and max-width 767px {
            #columns[data-columns]::before {
                content: '2 .col-xs-6';
            }
        
        }
        
        @media screen and min-width768px and max-width 991px {
            #columns[data-columns]::before {
                content: '3 .col-sm-4';
            }
        
        }
        
        @media screen and min-width992px and max-width 9999px {
            #columns[data-columns]::before {
                content: '4 .col-md-3';
            }
        
        }       
    </style>

    <title></title>
</head>

<body>
    <div class="container">
        <h1 class="col-xs-12">Books by Ernest Hemingway</h1>

        <div data-columns="" id="columns">
            <div></div> 
            <div></div> 
            <div></div>          
        </div>
    </div>
    
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script src="salvattore.js"></script>
    <script>
        function append(title, content) {
            var grid = document.querySelector('#columns');
            var item = document.createElement('div');
            var h = '<div class="panel panel-primary">';
            h += '<div class="panel-heading">';
            h += title;
            h += '</div>';
            h += '<div class="panel-body">';
            h += content;
            h += '</div>';
            h += '</div>';
            salvattore['append_elements'](grid, [item]) item.outerHTML = h;
        }
        $.getJSON("https://www.googleapis.com/books/v1/volumes?q=inauthor:Ernest+Hemingway&callback=?", function (data) {
            $(data.items).each(function (i, book) {
                append(book.volumeInfo.title, book.volumeInfo.description);
            });
        });
    </script>
</body>
</html>

结论

对于不了解JavaScript的人, Salvattore可以非常轻松地创建动态的Masonry风格的网格。 用少量JavaScript来创建动态网格和动态内容是一件容易的事。 最后,Bootstrap提供了灵活的类命名结构,可以轻松地为任何断点构造网格。

翻译自: https://webdesign.tutsplus.com/tutorials/build-a-dynamic-grid-with-salvattore-and-bootstrap-in-10-minutes--cms-20410

bootstrap 网格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值