2016-10-31 9 views
4

Ich habe ein Raster aus Karten aus dem eckigen Material. Das Problem ist: Die Karten haben eine feste Größe, und unmittelbar nach dem Einschlagen gibt es rechts ein Leerzeichen. Ich möchte es beseitigen, indem ich das md-content zentriere. Aber es hat die Breite der Reihe, also kann ich keine Zentrierung richtig machen. Wie kann ich es beheben (d. H. Die Breite von md-content der tatsächlichen Inhaltsbreite anpassen)? Vielen Dank.So zentrieren Sie `layout =" row "` div?

<md-content layout="row" layout-wrap> 
    <md-card ng-repeat="channel in $ctrl.channels" ui-sref="" md-ink-ripple> 
    <div layout-align="center" layout='row' style="width: 160px; height: 160px"> 
     <img ng-src="{{channel.logo_url}}" alt="{{channel.name}}" style="width: 100%;" /> 
    </div> 
    <footer style="padding: 2px;" layout-align="center"> 
     <h3>{{channel.name}}</h3> 
    </footer> 
    </md-card> 
</md-content> 
+0

versuchen 'display: inline-block' – vladdobra

+0

, die das Element macht, dass das Eigentum so groß wie sein Inhalt hat, für – vladdobra

+0

Referenz @vladdobra Versuchten diese , mit nur Inline-Containern wie "span" auch, kein Glück. – Georgy

Antwort

0

Versuchen Sie, die Marge des Inhalts setzen ihre Position

+0

Das würde nicht zentrieren, nur Offset. Löst das Problem nicht, mehr als das, verkleinern Sie den Inhaltsbereich. – Georgy

+0

Ja, ich verstehe. Ich habe das Problem nicht gut verstanden –

0

einstellen Wenn Sie layout-align="center" zum md-content hinzufügen wird es den Inhalt Zentrum - CodePen

Beachten Sie jedoch, dass, wenn die untere Reihe hat "less" cards sie sind auch zentriert, was vielleicht nicht das ist was du willst.

Markup

<div ng-controller="AppCtrl as ctrl" ng-cloak="" ng-app="MyApp"> 
    <md-content layout="row" layout-wrap layout-align="center"> 
    <md-card ng-repeat="channel in ctrl.channels" ui-sref="" md-ink-ripple> 
     <div layout-align="center" layout='row' style="width: 160px; height: 160px"> 
     <img ng-src="{{channel.logo_url}}" alt="{{channel.name}}" style="width: 100%;" /> 
     </div> 
     <footer style="padding: 2px;" layout-align="center"> 
     <h3>{{channel.name}}</h3> 
     </footer> 
    </md-card> 
    </md-content> 
</div> 

JS

angular.module('MyApp',['ngMaterial']) 

.controller('AppCtrl', function() { 
    this.channels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 
}); 
+0

"Beachten Sie jedoch, dass, wenn die untere Reihe" weniger "Karten hat, sie auch zentriert sind, was möglicherweise nicht das ist, was Sie wollen." - Ja, leider. Es sieht so aus, als wäre das Problem mit dem Layout-Wrap, genauer gesagt mit dem Zustand nach dem Umbruch, weil der Container inhaltlich breit ist, vor dem Umbruch, danach - es ist 100%. Diese Antwort: http://StackOverflow.com/A/34816625/4753661 könnte hier nützlich sein, obwohl das Raster nicht gut in der letzten Zeile zentriert ist :( – Georgy

+0

@Georgy Wenn Ihre divs eine feste Breite haben, können Sie möchte Grid-Liste verwenden - https://material.angularjs.org/latest/demo/gridList –

+0

Ist es nicht für die Responsive-Kacheln? Sie spezifizieren Colspan, Rowspan und Ratio, nicht Breite und Höhe, soweit ich verstehe. – Georgy

Verwandte Themen