Похожий на Pinterest отзывчивый макет сетки изображений для приложений AngularJS без зависимости от jQuery;
bower install ngFlowGrid#latest
<script src="path/angular.min.js"></script>
<script src="src/ngFlowGrid.js"></script>
var myApp = angular.module('myAppName', ['ngFlowGrid']);
<ul class="flowGrid" ng-flow-grid="homePageGrid" min-item-width="200">
<li class="flowGridItem" ng-repeat="item in items">
<a href=""><img ng-src="{{item.img}}"></a>
<h2>{{item.description}}</h2>
</li>
</ul>
* { box-sizing: border-box; }
.flowGrid:before, .flowGrid:after {
content: "";
display: table;
}
.flowGrid:after {
clear: both;
}
.flowGridItem { margin-bottom: 10px; }
.flowGridItem img { width: 100%; }
.flowGridColumn {
float: left;
padding-left: 10px;
}
.flowGridColumn:last-of-type {
padding-right: 10px;
}
app.controller('appCtrl', ['$scope', 'fgDelegate', function($scope, fgDelegate) {
$scope.updateGrid = function() {
var homePageGrid = fgDelegate.getFlow('homePageGrid');
// затем вы можете:
homePageGrid.minItemWidth += 20;
homePageGrid.refill(true);
}
}]);
Назначьте имя для своей сетки, чтобы можно было контролировать несколько сеток на одной странице.
Это значение влияет на количество колонок, чем меньше это число, тем больше колонок будет;# Сервис
Через сервис fgDelegate
вы можете получить объект потока и контролировать его в своем контроллере или директиве:
Опции:
container
: контейнерный элемент.name
: строка, имя новой сетки.itemSelector
: строка.minItemWidth
: число, это влияет на количество колонок в сетке;Этот метод вернет объект flowgrid, и вы сможете контролировать эту сетку с помощью этого объекта:
minItemWidth
: число.container
: элемент.autoCalculation
: логическое значение.columnsHeights
: массив.itemsHeights
: объект.items
: массив элементов.refill([forceRefill])
: рассчитывает колонки на основе значения minItemWidth
и помещает элементы в колонки; [forceRefill]
: логическое значение.itemsChanged()
: сообщает flow grid о добавлении или удалении элементов в вашем контроллере; перед вызовом этого метода убедитесь, что ngRepeat завершил отрисовку, поэтому следует вызывать его следующим образом: // Убедитесь, что ngRepeat завершил отрисовку
$scope.$watch('$last', function() {
fgDelegate.getFlow('demoGrid').itemsChanged();
});
empty()
: удалить все элементы внутри колонок.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )