将ng-href添加到angularjs中的按钮会更改按钮内文本的位置

时间:2016-09-22 13:47:47

标签: javascript html css angularjs

我开始学习Angularjs(使用angular-material),使用ng-href时遇到了一些问题。 我在我的网页顶部创建了一个工具栏,但只要我将“ng-href”属性添加到按钮,按钮中的文本就不再居中了:

Example Image

前2个按钮添加了ng-href标签。第三个没有。否则,它们完全一样。

angular.module('angular2',['ngRoute','ngMaterial','ngMessages'])
    .config(function ($mdThemingProvider,$routeProvider) {
        $mdThemingProvider.theme('default')
            .primaryPalette('blue')
            .accentPalette('blue');
        $routeProvider
            .when("/", {
                templateUrl : "main.html"
            })
            .when("/test1", {
                templateUrl : "test1.html"
            })
            .when("/test2", {
                templateUrl : "test2.html"
            })
    })
    .controller('mainCtrl',function ($scope, $http, $mdDialog) {

    })
    ;
.navButton{
    font-weight: bold;
    margin: 0px;
    height: inherit;
    width: 150px;
    border-radius: 0px;
    text-transform: none;
    border: solid;
}
<!DOCTYPE html>
<html lang="en" ng-app="angular2">
<head>
    <meta charset="UTF-8">
    <title>Angular 2</title>

    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic">
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <link rel="stylesheet" href="app.css">


    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>

    <script src="app.js"></script>
</head>

<body ng-controller="mainCtrl">
<div layout="column">
    <md-toolbar class="md-menu-toolbar" style="height: 64px">
        <div layout="row" style="height: inherit">
            <md-toolbar-filler flex="5" style="height: inherit" layout layout-align="center center">
                <md-icon class="material-icons md" style="font-size: 48px; height: 48px; width: 48px">mail_outline
                </md-icon>
            </md-toolbar-filler>
            <div flex layout="row" layout-align="start center" style="height: inherit">
                <md-button class="md-primary navButton" ng-href="#/">Main</md-button>
                <md-button class="md-primary navButton" ng-href="#/test1">Test 1</md-button>
                <md-button class="md-primary navButton">Test 2</md-button>
            </div>
        </div>
    </md-toolbar>
    <div ng-view></div>
</div>


</body>

</html>

在添加ng-href属性后,我无法将文本置于按钮中心。

2 个答案:

答案 0 :(得分:0)

我无法重复这一点。但是我使用了md-button指令,通常它可以正常工作。你的app.css中可能存在一些冲突的东西。

当md按钮看到href或ng-href时,它会创建一个<a>标记并将您的按钮内容放入<span>。所以你的

<md-button class="md-primary navButton" ng-href="#/test1">Test 1</md-button>

变为

<a class="md-primary navButton md-button md-ink-ripple" 
        ng-transclude="" ng-href="#/test1" href="#/test1">
    <span class="ng-scope">Test 1</span>
</a>

angular-material.css为<a>标记提供了text-align:center,因此请检查您的CSS,以便在<span><a>更改deflate_init时的属性1}}。

这是我与之合作的小提琴,但与你的完全不同:https://jsfiddle.net/phanxo14/

答案 1 :(得分:0)

我设法解决了这个问题: 而不是使用md按钮,anuglarjs后来转变为<a>标签,我复制了生成角度的<a>标签,并直接使用了该标签:

<a class="md-primary navButton md-button md-ink-ripple" ng-transclude="" ng-href="#/" style="text-align: center; height:inherit" href="#/" layout>
    <span class="ng-scope" flex style="text-align: center">Main</span>
</a>

然后我添加了&#34;布局&#34;属性为周围的<a>标记和&#34; flex&#34;属性为内部<span>。 我实际上不知道为什么会这样,但文本现在居中。

编辑:实际上只需添加layout即可获得更好,更简单的修复 和layout-align="center center"属性到按钮。