2016-02-11 15 views
5

Utworzono blok boczny, który domyślnie jest static, ale po przewinięciu do pewnego punktu staje się fixed. W tym bloku korzystam z selekcji kątowej.Ustawienia wybranych kątów materiału na dziwnych blokach

CSS:

.pos-fixed { 
    position:fixed; 
    top: 60px; 
    width:16.5%!important; 
} 

#sidebar-right { 
    float:right; 
    width:23%; 
} 
#sidebar-right #widget { 
    width:100%; 
} 

HTML:

<div id="sidebar-right"> 
    <div id="widget" ng-class="{'pos-fixed': imageHidden}" class="panel md-padding"> 
     <div> 
     <md-input-container style="width:100%"> 
      <md-select ng-model="number1" placeholder="number 1"> 
      <md-option ng-repeat="number in ['one','two','three','four','five','six','seven']" value="{{number}}">{{number}}</md-option> 
      </md-select> 
     </md-input-container> 
     <br /> 
     <md-input-container style="margin-top: 0px;width:100%"> 
      <md-select ng-disabled="!number1" ng-model="number2" placeholder="numbe 2"> 
      <md-option ng-repeat="number in ['one','two','three','four','five','six','seven']" value="{{number}}">{{number}}</md-option> 
      </md-select> 
     </md-input-container> 
     </div> 
    </div 

JS (przewijanie szpiega):

app.directive('scroll', function($window) { 
    return function(scope, element, attrs) { 
    angular.element($window).bind('scroll', function() { 
     if (this.pageYOffset >= 320) { 
     scope.imageHidden = true; 
     } else { 
     scope.imageHidden = false; 
     } 
     scope.$apply(); 
    }); 
    }; 
}); 

Przed side-blok jest fixed, Materiał select działa dobrze, ale tak szybko, podczas przewijania i staje się fixed, wybierz zaczyna działać dziwnie.
GIF: http://recordit.co/i72EaaVxJf
Plunker: http://plnkr.co/edit/lfik78wR2FqPoSFSCNlz?p=preview

Jak mogę to naprawić?

+0

można proszę nieco bardziej jasne, co działa dziwnie? –

+0

proszę zdefiniować "działaj dziwnie" – peterpeterson

+0

* "działa dziwnie" * nie jest poprawnym opisem problemu. Demo działało dobrze dla mnie. Czy widzisz ten sam problem w wielu przeglądarkach? – charlietfl

Odpowiedz

1

Dodaj to do kontrolera zamiast dyrektywy scroll:

var body = document.querySelector('body'); 
angular.element($window).bind('scroll', function() { 
    if (body.style.position !== 'fixed') { 
    $scope.isFixed = window.scrollY > 330; 
    $scope.$applyAsync(); 
    } 
}); 
Powiązane problemy