如何在md-toolbar中将元素定位到右侧?

46

我正在使用FAB速拨在工具栏中。但是我无法让它漂浮到工具栏的右侧。我尝试过使用float: right,但没有成功。还尝试了flex offset="55",但是当窗口大小调整时它不起作用。基本上,无论窗口大小如何,我都希望按钮位于蓝色工具栏容器的最右侧。

请参见下面的照片和代码:

toolbar

<md-toolbar layout-fill layout-padding layout="row" style="background-color: #3F51B5;color:white;text-align:text-center;">
    <div layout="row">
        <i class="fa fa-users fa-2x" flex></i>
        <h1 class="md-title" style="color:white">Org Chart</h1>                                 
    </div>  
    <div class="lock-size" flex offset="55">
        <md-fab-speed-dial md-direction="left" ng-class="md-fling">
            <md-fab-trigger>
                <md-button aria-label="menu" class="md-fab md-accent">
                    <md-tooltip>
                      Actions
                    </md-tooltip>
                    <md-icon md-svg-src="img/icons/ic_view_module_48px.svg"></md-icon>
                </md-button>
            </md-fab-trigger>
            <md-fab-actions>
                <md-button aria-label="view" class="md-fab md-raised md-mini" >
                    <md-tooltip>
                      View Chart
                    </md-tooltip>                               
                    <md-icon md-svg-src="" style="color:black" ng-show="cDP.read" ng-click="paneShowFn('read')"></md-icon>
                </md-button>
                <md-button aria-label="add" class="md-fab md-raised md-mini" >
                    <md-tooltip>
                      Add Chart
                    </md-tooltip>                               
                    <md-icon md-svg-src="img/icons/ic_add_48px.svg" style="color:black" ng-show="cDP.insert" ng-click="paneShowFn('insert')"></md-icon>
                </md-button>
                <md-button aria-label="Settings" class="md-fab md-raised md-mini" >
                    <md-tooltip>
                      Security Access
                    </md-tooltip>                               
                    <md-icon md-svg-src="img/icons/ic_add_48px.svg" style="color:black" ng-show="cDP.permission" ng-click="paneShowFn('permission')"></md-icon>
                </md-button>                                
                <md-button aria-label="edit" class="md-fab md-raised md-mini" style="color:black" ng-show="cDP.update" ng-click="paneShowFn('update')">
                    <md-tooltip>
                      Edit Chart
                    </md-tooltip>                               
                    <md-icon md-svg-src="img/icons/ic_edit_48px.svg" style="color:black"></md-icon>
                </md-button>                                
            </md-fab-actions>
        </md-fab-speed-dial>
    </div>  
</md-toolbar>

你考虑在你的菜单中添加md-position-mode="target-right target"吗? - Steven Scott
2个回答

72

或者你可以使用一个类来实现:

.fill-space {
  // This fills the remaining space, by using flexbox.
  // Every toolbar row uses a flexbox row layout.
  flex: 1 1 auto;
}
<md-toolbar color="primary">
  <span>Application Title</span>

  <!-- This fills the remaining space of the current row -->
  <span class="fill-space"></span>

  <span>Right Aligned Text</span>
</md-toolbar>

这个解决方案也是从规格书中提取的。


1
为什么您需要这样做,当 <span flex></span> 完美地运行并且是建议的做法呢? - camden_kid
3
在我的情况下,@camden_kid <span flex></span> 无效。可能是因为我使用的是新版本的 Angular Material v2 而不是 Angular Material v1.x! - Experimenter
4
@camden_kid 我认为可以保留这个问题。我正在寻找Material 2的答案,而谷歌搜索将我带到了这里。该解决方案是通用的,展示了它在一般情况下如何工作,因此对于更深入地理解所有情况下的问题都有好处。 - Experimenter
1
这个解决方案也是从规范中获取的。你能提供一个参考链接吗? - Alexander Abakumov
@AlexanderAbakumov 我猜测这个链接是你要找的。如果我错了,请纠正我。 - LosManos
任何发现此解决方案无效的人,可能是因为在CSS中//不是注释。 - DragonBobZ

66

这个解决方案适用于Angular Material v1.X,如果您需要通用/ Angular Material v2的解决方案,请查看@experimenter的答案。

如果您有一个md-toolbar,最简单的将内容向右对齐的方法如下:

    <md-toolbar>
        <div class="md-toolbar-tools">
            <h3>You text</h3>
            <span flex></span>
            <ANY>your right content</ANY>
        </div>
    </md-toolbar>
中的 flex 属性将覆盖内容之间的空间。这是文档中的官方方式。

在您的示例中,您只需要:

<md-toolbar>
    <div class="md-toolbar-tools">
        <div layout="row">
            <i class="fa fa-users fa-2x" flex></i>
            <h1 class="md-title" style="color:white">Org Chart</h1>
        </div>
        <span flex></span>
        <md-fab-speed-dial md-direction="left" ng-class="md-fling">
            <md-fab-trigger>
                <md-button aria-label="menu" class="md-fab md-accent">
                    <md-tooltip>
                        Actions
                    </md-tooltip>
                    <md-icon md-svg-src="img/icons/ic_view_module_48px.svg"></md-icon>
                </md-button>
            </md-fab-trigger>
            <md-fab-actions>
                <md-button aria-label="view" class="md-fab md-raised md-mini">
                    <md-tooltip>
                        View Chart
                    </md-tooltip>
                    <md-icon md-svg-src="" style="color:black" ng-show="cDP.read" ng-click="paneShowFn('read')"></md-icon>
                </md-button>
                <md-button aria-label="add" class="md-fab md-raised md-mini">
                    <md-tooltip>
                        Add Chart
                    </md-tooltip>
                    <md-icon md-svg-src="img/icons/ic_add_48px.svg" style="color:black" ng-show="cDP.insert" ng-click="paneShowFn('insert')"></md-icon>
                </md-button>
                <md-button aria-label="Settings" class="md-fab md-raised md-mini">
                    <md-tooltip>
                        Security Access
                    </md-tooltip>
                    <md-icon md-svg-src="img/icons/ic_add_48px.svg" style="color:black" ng-show="cDP.permission" ng-click="paneShowFn('permission')"></md-icon>
                </md-button>
                <md-button aria-label="edit" class="md-fab md-raised md-mini" style="color:black" ng-show="cDP.update" ng-click="paneShowFn('update')">
                    <md-tooltip>
                        Edit Chart
                    </md-tooltip>
                    <md-icon md-svg-src="img/icons/ic_edit_48px.svg" style="color:black"></md-icon>
                </md-button>
            </md-fab-actions>
        </md-fab-speed-dial>
    </div>
</md-toolbar>

没问题 :) 你可以将标题更改为类似于“如何在md-toolbar的右侧定位元素”的更通用的内容。但要用适当的英语 xD - Ivan Coronado
我尝试了你建议的解决方案,但它只是将组件移到了下一行。 - Himanshu Chaudhary
@HimanshuChaudhary 你在使用 Angular Material v1 吗?我认为这个解决方案不适用于 Angular 2 版本。 - Ivan Coronado
我正在使用ng2,下面的答案解决了这个问题。 - Himanshu Chaudhary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接