如何让按钮在 angular-ui- 网格单元格中居中?
How do I center a button in an angular-ui-grid cell?
我定义一列如下:
{
name: 'button',
displayName: '',
cellClass: 'ui-grid-vcenter',
enableColumnMenu: false,
enableFiltering: false,
enableSorting: false,
cellTemplate: '<div><button ng-click="grid.appScope.rowButtonHandler(row.entity.id)">clicky</button></div>'
}
导致:
<div class="ui-grid-cell ng-scope ui-grid-coluiGrid-010 ui-grid-vcenter" ui-grid-cell="" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name">
<div class="ng-scope">
<button ng-click="grid.appScope.rowButtonHandler(row.entity.id)"></button>
</div>
</div>
我想将此按钮垂直和水平居中。在水平方向上有效,但在垂直方向上,我似乎无法正确设置 CSS。这是我的通用镜头:
.ui-grid-vcenter div {
text-align: center;
vertical-align: middle !important;
background-color: yellow !important;
}
在这种AngularJS网格中,一个单元格中的内容如何居中?
使用相对位置:
.ui-grid-vcenter div {
background-color: yellow !important;
text-align:center;
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
使用 css flex 会更容易 (https://css-tricks.com/snippets/css/a-guide-to-flexbox/):
假设那是你的 cellTemplate (myCellTemplateForEditAndDelBtns.html
):
<div id="editBtns" class="flexParent">
<span class="flexChildren">
<button><i class="fa fa-pencil-square-o "></i></button>
<button><i class="fa fa-times gridDelBtn"></i></button>
</span>
</div>
您在 columDefs 中将其添加到您的单元格中:
$scope.myGrid.columnDefs = [
...
{ name: 'edit',
enableCellEdit: false,
enableFiltering: false,
enableSorting: false,
cellTemplate: 'location-to/myCellTemplateForEditAndDelBtns.html',
width: '5%'
}
];
并且最终使用CSS Flex:
#editBtns {
height: 100%;
}
.flexParent {
display: flex;
justify-content: center;
}
.flexChildren {
align-self: center;
}
我定义一列如下:
{
name: 'button',
displayName: '',
cellClass: 'ui-grid-vcenter',
enableColumnMenu: false,
enableFiltering: false,
enableSorting: false,
cellTemplate: '<div><button ng-click="grid.appScope.rowButtonHandler(row.entity.id)">clicky</button></div>'
}
导致:
<div class="ui-grid-cell ng-scope ui-grid-coluiGrid-010 ui-grid-vcenter" ui-grid-cell="" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name">
<div class="ng-scope">
<button ng-click="grid.appScope.rowButtonHandler(row.entity.id)"></button>
</div>
</div>
我想将此按钮垂直和水平居中。在水平方向上有效,但在垂直方向上,我似乎无法正确设置 CSS。这是我的通用镜头:
.ui-grid-vcenter div {
text-align: center;
vertical-align: middle !important;
background-color: yellow !important;
}
在这种AngularJS网格中,一个单元格中的内容如何居中?
使用相对位置:
.ui-grid-vcenter div {
background-color: yellow !important;
text-align:center;
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
使用 css flex 会更容易 (https://css-tricks.com/snippets/css/a-guide-to-flexbox/):
假设那是你的 cellTemplate (myCellTemplateForEditAndDelBtns.html
):
<div id="editBtns" class="flexParent">
<span class="flexChildren">
<button><i class="fa fa-pencil-square-o "></i></button>
<button><i class="fa fa-times gridDelBtn"></i></button>
</span>
</div>
您在 columDefs 中将其添加到您的单元格中:
$scope.myGrid.columnDefs = [
...
{ name: 'edit',
enableCellEdit: false,
enableFiltering: false,
enableSorting: false,
cellTemplate: 'location-to/myCellTemplateForEditAndDelBtns.html',
width: '5%'
}
];
并且最终使用CSS Flex:
#editBtns {
height: 100%;
}
.flexParent {
display: flex;
justify-content: center;
}
.flexChildren {
align-self: center;
}