我使用 Meteorjs 和 Bootstrap 3 创建了一个项目。
在此项目中,我可以将动态引导面板(或模式)添加到主页。
令我困扰的是这些面板(或模态)的位置是随机的,我希望它们能够被组织起来。例如:当计算机屏幕为中等时,我希望每列有 3 个面板(或模态框)。
您知道如何做到这一点吗?
代码是:
<template name="home">
{{> navigation}}
<div class="container-fluid lov">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
{{#each positions}}
{{> position}}
{{/each}}
</div>
</div>
</div>
</template>
这是该模板的 JavaScript:
Template.home.events ({
'dblclick .lov': function (e, tmpl) {
e.preventDefault();
e.stopPropagation();
if(e.target.className === 'container-fluid lov'){
var id = Positions.insert({ name:'Clique here to change the title', domaine:'ici tu ecris ton text en gros',footername:'le nom de pays et la ville si tu veux'});
Session.set('editing_table',id);
}
}
});
这是集合:
Positions = new Meteor.Collection('positions');
这是位置模板的代码,允许我们创建面板:
<template name="position">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3">
<div class="panel panel-default" id="{{_id}}" style="position:absolute;left:{{left}};top:{{top}}; width:350px">
<div class="panel-heading">
{{#if hadanata3ou}}
<a class="close" data-dismiss="modal">x</a>{{/if}}
{{#if editing_tablename}}
<input class="input input-medium tablename" value="{{name}}" type="text" />
{{else}}
<h6 class="tablename">{{name}}</h6>
{{/if}}
<!-- <h3 class="panel-title">Panel title</h3> -->
</div>
<div class="panel-body">
<div id="{{_id}}">
{{#if editing_field}}
<textarea class="input input-lg efield" name="efield" type="text">
{{domaine}}
</textarea>
{{else}}
<span>
{{domaine}}
</span>
{{/if}}
</div>
</div>
<div class="panel-footer">
{{#if editing_footer}}
<input class="input input-medium footer" value="{{footername}}" type="text" />
{{else}}
<p class="muted">{{footername}}</p>
{{/if}}
</div>
</div>
</div>
</div>
</template>
最佳答案
说实话,我不太了解 meteorjs
模板,但我可以向您展示如何 Bootstrap
网格系统用于根据 View 的大小渲染不同数量的面板。
Bootstrap 使用 4 种不同的尺寸:
- 大
lg
(桌面) - 中
md
(横向平板电脑) - 小
sm
(纵向平板电脑) - 特小号
xs
(手机)
并使用类 .visible-SIZE
和.hidden-SIZE
,您可以控制以什么尺寸显示/渲染哪些元素。例如:
<div class="container-fluid">
<div class="row visible-lg visible-md hidden-sm hidden-xs" >
<div class="col-lg-4 col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4><span class="hidden-lg visible-md">Panel One - Medium</span> <span class="hiddn-md visible-lg">Panel One - Large</span></h4>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4><span class="hidden-lg visible-md">Panel Two - Medium</span> <span class="hiddn-md visible-lg">Panel Two - Large</span></h4>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4><span class="hidden-lg visible-md">Panel Three - Medium</span> <span class="hiddn-md visible-lg">Panel Three - Large</span></h4>
</div>
</div>
</div>
</div>
<div class="row hidden-lg hidden-md visible-sm visible-xs">
<div class="col-sm-6 col-xs-6">
<div class="panel panel-default">
<div class="panel-heading">
<h4><span class="hidden-sm visible-xs">Panel One - Extra Small</span> <span class="hiddn-xs visible-sm">Panel One - Small</span></h4>
</div>
</div>
</div>
<div class="col-sm-6 col-xs-6">
<div class="panel panel-default">
<div class="panel-heading">
<h4><span class="hidden-sm visible-xs">Panel Two - Extra Small</span> <span class="hiddn-xs visible-sm">Panel Two - Small</span></h4>
</div>
</div>
</div>
</div>
</div>
此代码呈现一行 .panel panel-default
<div>
元素。当 View 为md
时或lg
,它呈现 3 <div>
的,每个都有类 col-md-4
和col-lg-4
。您可以拥有的列总数为 12,并且一个类具有 col-*-4
占用这 12 个插槽中的 4 个。因此,3 * 4 是 12,即 1 个完整的行。与 col-sm-6
的 2 * 6 相同和col-xs-6
.
在您的 meterojs
中模板时,您需要决定如何使用这些类来呈现正确数量的列。这并不是太难,但是花一些时间来尝试一下以获得您想要的布局。如果您想查看有效的测试布局,请检查此链接:
并尝试调整浏览器窗口的大小。
希望能为您提供一些关于Bootstrap
的见解的网格布局,以及如何根据浏览器的大小呈现不同的列。
关于javascript - 为什么 Meteorjs 上引导面板的位置是随机的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27948848/