2016-04-01 14 views
5

Hier ist mein Code: Wie kann ich nur den SVG-Pfeil mit eckigen auf Element-Box klicken?Wie kann ich Bild in AngularJs drehen

<md-card class="header" style="margin: 0 0 4px 0;" ng-mousedown="toggleCollapse('source')"> 
    <md-card-content layout="row" layout-align="start center"> 
    <img src="../assets/icons/cd-icon-arrow.svg" class="buildrag-toggle"> 
    <h2 class="md-title no-top-margin no-bottom-margin" flex style="padding-left: 10px;">Data</h2> 
    <md-button class="md-icon-button header-button" ng-mousedown="addDataSource($event)"> 
     <md-icon>add_circle_outline</md-icon> 
    </md-button> 
    </md-card-content> 
</md-card> 

Here is my button

+0

Wenden Sie eine Klasse mit 'ng-class' an und tun Sie css' transform: rotate'? Funktioniert sogar mit Animationen – Aides

Antwort

11

Verwendung ng-Klasse eine Klasse zu wechseln, wenn die Schaltfläche geklickt wird. Verwenden Sie dann diese Klasse in CSS, um das Bild zu drehen.

<md-card class="header" style="margin: 0 0 4px 0;" ng-mousedown="toggleCollapse('source')"> 
    <md-card-content layout="row" layout-align="start center"> 
    <img src="../assets/icons/cd-icon-arrow.svg" ng-class="{'rotate': rotateImg}" class="buildrag-toggle"> 
    <h2 class="md-title no-top-margin no-bottom-margin" flex style="padding-left: 10px;">Data</h2> 
    <md-button class="md-icon-button header-button" ng-mousedown="addDataSource($event)" ng-click="rotateImg = !rotateImg"> 
     <md-icon>add_circle_outline</md-icon> 
    </md-button> 
    </md-card-content> 
</md-card> 


.rotate { 
    -ms-transform: rotate(90deg); /* IE 9 */ 
    -webkit-transform: rotate(90deg); /* Chrome, Safari, Opera */ 
    transform: rotate(90deg); 
} 
+1

Große und einfache Lösung mit eckigen Werkzeugen. Genau das, was ich brauchte. –

0

Wenn Ihre Taste Sie es in der Steuerung Griff geklickt und fügen Sie eine Klasse

Werfen Sie einen Blick auf this

Controller:

$scope.todoClicked = function(id) { 
console.log("clicked", id); 
if (!$scope.showMoreTab[id]) { 
    $scope.showMoreTab[id] = true; 
    angular.forEach($scope.todos, function(todo) { 
    if (id !== todo.id) { 
     $scope.showMoreTab[todo.id] = false; 
    } 
    }); 
} else { 
    $scope.showMoreTab[id] = false; 
    } 
} 

Ausblick:

<md-button class="md-icon-button md-toggle-icon" aria-label="More" ng-click="todoClicked(todo.id)" ng-class="{'toggled':showMoreTab[todo.id]}"> 
      <i class="material-icons"> 
      keyboard_arrow_down</i> 
     </md-button> 

CSS:

.md-toggle-icon.toggled { 
    -webkit-transform: rotate(180deg); 
    transform: rotate(180deg); 
} 

Ich benutze ein Symbol hier, aber Sie können es auch mit Svg versuchen.

<md-button class="md-icon-button md-toggle-icon" aria-label="More" ng-class="{'toggled':showMoreTab[todo.id]}" ng-click="todoClicked(todo.id)"> 
          <md-icon md-svg-src="/material-design-icons/navigation/svg/design/ic_expand_more_36px.svg"> 
          </md-icon> 
         </md-button>