#javascript #html #css #angularjs
#javascript #HTML #css #angularjs
Вопрос:
http://codepen.io/Feners4/pen/KggAwg
Я хочу, чтобы кубы меняли цвет при наведении курсора мыши с помощью Angular. Мне удалось заставить его работать на одной стороне куба, но я хочу, чтобы эффект изменил цвет всего куба.
Это мой HTML:
<header>
Angularity
</header>
<h1>hjskl</hi>
<body>
<div class="container" ng-controller="AppCtrl">
</div>
</header>
<div class="wrap">
<div ng-app="App" class="cube"change-background colorcode=¨#FE0883¨>
<div class="front">AAA</div>
<div class="back"></div>
<div class="top"></div>
<div class="bottom"></div>
<div class="left"></div>
<div class="right"></div>
</div>
</div>
</header>
<div class="wrap2">
<div class="cube2">
<div ng-app="App" class="front2" change-background colorcode=¨#FE0883¨>AAA</div>
<div class="back2"></div>
<div class="top2"></div>
<div class="bottom2"></div>
<div class="left2"></div>
<div class="right2"></div>
</div>
</div>
Мой JS:
angular.module('App', [])
.directive('changeBackground', ['$animate', function($animate) {
return {
restrict: 'EA',
scope: {
colorcode: '@?'
},
link: function($scope, element, attr) {
element.on('mouseenter', function() {
element.addClass('change-color');
element.css('background-color', $scope.colorcode);
});
element.on('mouseleave', function() {
element.removeClass('change-color');
element.css('background-color', '#fff');
});
}
};
}])
Как я могу заставить кубы менять цвет при наведении курсора мыши, чтобы работать, а когда мышь уходит, она меняется обратно?
Комментарии:
1. Почему бы не использовать CSS для: обработки наведения?
2. Я строго хочу использовать Angular для учебных целей.. @campino2k
3. Примечание: я думаю, вы в замешательстве
ng-app
. Это то, что определяет корневой элемент вашего приложения angular, и у вас должен быть только один, будет работать только первый. Обычно он помещается вbody
html
тег or .4. Я поместил его в свой
body
тег, но теперь при наведении курсора мыши изменение цвета не происходит.. @SpencerWieczorek5. @feners Это связано с недопустимым HTML, который необходимо исправить. Наряду с этим контроллер выдаст ошибку, если она не была определена. Смотрите Мой ответ ниже для получения более подробной информации.
Ответ №1:
Одна из основных проблем здесь заключается в том, как вы определили ng-app
, как я уже указывал в своем комментарии, это определяет корень приложения, которое будет использоваться Angular. Размещение его в таком определенном месте будет означать, что ни один из других элементов не подключен к Angular. Первое, что нужно сделать, это очистить ваш HTML-код, есть повторяющиеся закрывающие header
теги без отверстий, и нет закрытия body
. Поскольку вы никогда не определяли контроллер и он не используется, я удалил его (в противном случае он выдаст ошибку) После этого вы можете просто определить свой ng-app
на body
и это позволит использовать вашу директиву для любого элемента:
<html>
<header>
Angularity
</header>
<h1>hjskl</hi>
<body ng-app="App">
<div class="wrap">
<div class="cube"change-background colorcode=¨#FE0883¨>
<div class="front">AAA</div>
<div class="back"></div>
<div class="top"></div>
<div class="bottom"></div>
<div class="left"></div>
<div class="right"></div>
</div>
</div>
<div class="wrap2">
<div class="cube2">
<div class="front2" change-background colorcode=¨#FE0883¨>AAA</div>
<div class="back2" change-background ></div>
<div class="top2" change-background></div>
<div class="bottom2" change-background></div>
<div class="left2" change-background></div>
<div class="right2" change-background></div>
</div>
</div>
</body>
</html>
Комментарии:
1. Спасибо за ваше объяснение по этому поводу. Это было очень полезно! Это сработало.. Спасибо!