Html 在div内使用ng repeat可调整外部div的位置
我正在使用AngularJS v1.4.3 我正在用JSON数据制作一个简单的过滤系统,其输出根据用户选择的类别而变化 我使用ng repeat在JSON对象中显示数组元素。每个对象都有一个attrs数组属性。但是,有些attrs数组有两个元素,有些有三个元素 以下是HTML代码的相关部分:Html 在div内使用ng repeat可调整外部div的位置,html,css,angularjs,alignment,Html,Css,Angularjs,Alignment,我正在使用AngularJS v1.4.3 我正在用JSON数据制作一个简单的过滤系统,其输出根据用户选择的类别而变化 我使用ng repeat在JSON对象中显示数组元素。每个对象都有一个attrs数组属性。但是,有些attrs数组有两个元素,有些有三个元素 以下是HTML代码的相关部分: <div class="cards"> <div ng-repeat="card in cards | filter:itemFilter" class="card_backgro
<div class="cards">
<div ng-repeat="card in cards | filter:itemFilter" class="card_background">
<div class="card_title">{{card.name | uppercase}}</div>
<div class="card_properties">
<div ng-repeat="attr in card.attrs">{{attr}}</div>
</div>
</div>
</div>
以下是一些示例JSON数据:
$scope.cards = [
{ name: 'Sniper', attrs: ['shooting', 'dribbling'] },
{ name: 'Finisher', attrs: ['shooting', 'physical'] },
{ name: 'Deadeye', attrs: ['shooting', 'passing'] },
{ name: 'Marksman', attrs: ['shooting', 'dribbling', 'physical'] },
{ name: 'Hawk', attrs: ['pace', 'shooting', 'physical'] },
...
如您所见,{{attr}}行是列出attr的行。而且,由于它在某些情况下进行两次div,在其他情况下进行三次div,因此根据卡的不同,对齐方式不一致:
处理此问题的有效方法是什么?添加垂直对齐:顶部;到您的.card_背景选择器
角度。模块“化学”[]
.controller'MainCtrl',函数$scope,$http{
//试图从单独的文件中获取json
//$http.get'cards.json'
//.Then函数结果{
//$scope.cards2=result.data;
// };
//共18个
$scope.cards=[{
名字:“狙击手”,
属性:[“投篮”、“运球”]
}, {
名称:'Finisher',
属性:['射击','身体']
}, {
名字:“死神”,
属性:[“射门”、“传球”]
}, {
姓名:'神枪手',
属性:[“投篮”、“运球”、“体能”]
}, {
名字:“鹰”,
属性:[“速度”、“射击”、“身体”]
}, {
姓名:'艺术家',
属性:[“传球”、“运球”]
}, {
姓名:'建筑师',
属性:[“传递”、“物理”]
}, {
名称:“发电站”,
属性:[“传球”、“防守”]
}, {
名称:“大师”,
属性:[“投篮”、“传球”、“运球”]
}, {
名称:“引擎”,
属性:[“配速”、“传球”、“运球”]
}, {
名称:“哨兵”,
属性:[“防御”、“物理”]
}, {
姓名:'监护人',
属性:[“运球”、“防守”]
}, {
名字:'角斗士',
属性:[“射击”、“防守”]
}, {
名称:'主干',
属性:[‘传球’、‘防守’、‘身体’]
}, {
名称:'锚',
属性:[“速度”、“防守”、“体能”]
}, {
姓名:'猎人',
属性:[“速度”,“射击”]
}, {
名称:'催化剂',
属性:[“配速”、“传球”]
}, {
名称:'影子',
属性:[“速度”,“防守”]
}];
$scope.options=[{
名称:'pace',
所选:false
}, {
名称:"射击",,
所选:false
}, {
名称:'通过',
所选:false
}, {
名称:“运球”,
所选:false
}, {
名称:'防守',
所选:false
}, {
名称:'物理',
所选:false
}];
$scope.itemFilter=函数项{
变量过滤器=$scope.options.filterfunction元素,idx,数组{
返回元素。已选择;
} || [];
var匹配=真;
filters.forEachfunction选项{
matched=matched&&item.attrs.indexOfoption.name>=0;
}
返回匹配;
};
};
@进口urlhttp://fonts.googleapis.com/css?family=Exo:200;
@进口urlhttp://fonts.googleapis.com/css?family=Exo:500;
@进口urlhttp://fonts.googleapis.com/css?family=Exo:300;
@进口urlhttp://fonts.googleapis.com/css?family=Exo:700;
身体{
背景图片:url'fifa_background_image.jpg';
背景色:黑色;
背景附件:固定;
颜色:白色;
字体系列:'Exo',无衬线;
字号:200;
}
.主标题{
保证金:自动;
宽度:50%;
填充:10px;
/*文本设置*/
字母间距:-1px;
颜色:ffcc00;
文本对齐:居中;
字体系列:'Exo',无衬线;
字号:500;
字体大小:300%;
}
.副标题{
颜色:DCDC;
文本对齐:居中;
}
.options\u容器{
保证金:自动;
填充物:5px;
}
.选择权{
显示:内联块;
/*文本设置*/
颜色:DCDC;
/*浅灰色*/
字体大小:300;
字体大小:200%;
填充:10px;
/*防止单击时突出显示div*/
-webkit用户选择:无;
}
.选项:悬停{
-webkit转换:0.3s;
颜色:白色;
}
/*给类别文本上色*/
:选中+跨距{
-webkit转换:0.1s;
颜色:ffcc00;
文本阴影:0px 0px 30px灰色;
}
.检查{
/*这个元素是隐藏的*/
宽度:0%;
可见性:隐藏;
}
.卡片{
显示:内联块;
}
.card_背景{
边界半径:5px;
边框:2件纯黑;
宽度:130px;
高度:150像素;
背景色:DBC282;
利润率:20px;
填充:20px;
显示:内联块;
/*文本设置*/
颜色:黑色;
垂直对齐:顶部;
}
.card_title{
字母间距:-1px;
字体大小:140%;
文本对齐:居中;
}
.card_属性{
文本转换:大写;
}
化学
磁卡
化学风格发现者
选择要筛选卡片的类别
{{option.name |大写}}
{{card.name |大写}}
{{attr}}
我使用的不是.card_背景中的display:inline block,而是float left。 请尝试以下代码段: 角度。模块“化学”[] .controller'MainCtrl',函数$scope,$http{ //试图从单独的文件中获取json //$http.get'cards.json' //.Then函数结果{ //$scope.cards2=result.data; // }; //共18个 $scope.cards=[{ 名字:“狙击手”, 属性:[“投篮”、“运球”] }, { 名称:'Finisher', 属性:['射击','身体'] }, { 名字:“死神”, 属性:[“射门”、“传球”] }, { 姓名:'神枪手', 属性:[“投篮”、“运球”、“体能”] }, { 名字:“鹰”, 属性:[“速度”、“射击”、“身体”] }, { 姓名:'艺术家', 属性:[“传球”、“运球”] }, { 姓名:'建筑师', 属性:[“传递”、“物理”] }, { 名称:“发电站”, 属性:[“传球”、“防守”] }, { 名称:“大师”, 属性:[“投篮”、“传球”、“运球”] }, { 名称:“引擎”, 属性:[“配速”、“传球”、“运球”] }, { 名称:“哨兵”, 属性:[“防御”、“物理”] }, { 姓名:'监护人', 属性:[“运球”、“防守”] }, { 名字:'角斗士', 属性:[“射击”、“防守”] }, { 名称:'主干', 属性:[‘传球’、‘防守’、‘身体’] }, { 名称:'锚', 属性:[“速度”、“防守”、“体能”] }, { 姓名:'猎人', 属性:[“速度”,“射击”] }, { 名称:'催化剂', 属性:[“配速”、“传球”] }, { 名称:'影子', 属性:[“速度”,“防守”] }]; $scope.options=[{ 名称:'pace', 所选:false }, { 名称:"射击",, 所选:false }, { 名称:'通过', 所选:false }, { 名称:“运球”, 所选:false }, { 名称:'防守', 所选:false }, { 名称:'物理', 所选:false }]; $scope.itemFilter=函数项{ 变量过滤器=$scope.options.filterfunction元素,idx,数组{ 返回元素。已选择; } || []; var匹配=真; filters.forEachfunction选项{ matched=matched&&item.attrs.indexOfoption.name>=0; } 返回匹配; }; }; @进口urlhttp://fonts.googleapis.com/css?family=Exo:200; @进口urlhttp://fonts.googleapis.com/css?family=Exo:500; @进口urlhttp://fonts.googleapis.com/css?family=Exo:300; @进口urlhttp://fonts.googleapis.com/css?family=Exo:700; 身体{ 背景图片:url'fifa_background_image.jpg'; 背景色:黑色; 背景附件:固定; 颜色:白色; 字体系列:'Exo',无衬线; 字号:200; } .主标题{ 保证金:自动; 宽度:50%; 填充:10px; /*文本设置*/ 字母间距:-1px; 颜色:ffcc00; 文本对齐:居中; 字体系列:'Exo',无衬线; 字号:500; 字体大小:300%; } .副标题{ 颜色:DCDC; 文本对齐:居中; } .options\u容器{ 保证金:自动; 填充物:5px; } .选择权{ 显示:内联块; /*文本设置*/ 颜色:DCDC; /*浅灰色*/ 字体大小:300; 字体大小:200%; 填充:10px; /*防止单击时突出显示div*/ -webkit用户选择:无; } .选项:悬停{ -webkit转换:0.3s; 颜色:白色; } /*给类别文本上色*/ :选中+跨距{ -webkit转换:0.1s; 颜色:ffcc00; 文本阴影:0px 0px 30px灰色; } .检查{ /*这个元素是隐藏的*/ 宽度:0%; 可见性:隐藏; } .卡片{ 显示:内联块; } .card_背景{ 边界半径:5px; 边框:2件纯黑; 宽度:130px; 高度:150像素; 背景色:DBC282; 利润率:20px; 填充:20px; /*显示:内联块*/ 浮动:左; /*文本设置*/ 颜色:黑色; } .card_title{ 字母间距:-1px; 字体大小:140%; 文本对齐:居中; } .card_属性{ 文本转换:大写; } 化学卡片 化学风格发现者 选择要筛选卡片的类别 {{option.name |大写}} {{card.name |大写}} {{attr}}
这就是CSS问题。只需添加垂直对齐规则:从顶部到.card_背景 工作演示:
$scope.cards = [
{ name: 'Sniper', attrs: ['shooting', 'dribbling'] },
{ name: 'Finisher', attrs: ['shooting', 'physical'] },
{ name: 'Deadeye', attrs: ['shooting', 'passing'] },
{ name: 'Marksman', attrs: ['shooting', 'dribbling', 'physical'] },
{ name: 'Hawk', attrs: ['pace', 'shooting', 'physical'] },
...