Двойная полоса прокрутки с уменьшающейся панелью инструментов

Я работаю над фотогалереей в AngularJS, используя Angular Material (запустите фрагмент в полноэкранном режиме, чтобы увидеть мою проблему).

var app = angular.module('app', ['ngMaterial']);
app.controller('TitleController', function($scope) {
  $scope.title = 'Gallery';
});
app.controller('GalleryCtrl', function($scope, $http, $q, $mdMedia, $mdDialog) {

  //https://material.angularjs.org/latest/demo/virtualRepeat
  $scope.Images = [],

    //add more images
    $scope.LoadMore = function() {
      for (i = 0; i < 25; i++) {
        var randomWidth = Math.round(Math.random() * (800 - 400) + 400);
        var randomHeight = Math.round(Math.random() * (800 - 400) + 400);

        $scope.Images.push({
          src: "http://placehold.it/" + randomWidth + "x" + randomHeight + "/",
          id: Math.round(Math.random() * 10000)
        });
      };
    }

  $scope.ShowDetails = function(ev, number) {
    var useFullScreen = ($mdMedia('sm') || $mdMedia('xs')) && $scope.customFullscreen;

    $mdDialog.show({
      controller: DialogController,
      templateUrl: 'Home/GetInfo?id=' + number,
      parent: angular.element(document.body),
      targetEvent: ev,
      clickOutsideToClose: true,
      fullscreen: useFullScreen
    })


    $scope.$watch(function() {
      return $mdMedia('xs') || $mdMedia('sm');
    }, function(wantsFullScreen) {
      $scope.customFullscreen = (wantsFullScreen === true);
    });

  };

  function DialogController($scope, $mdDialog) {
    $scope.hide = function() {
      $mdDialog.hide();
    };

    $scope.cancel = function() {
      $mdDialog.cancel();
    };

    $scope.answer = function(answer) {
      $mdDialog.hide(answer);
    };
  }

  //initial loading 
  $scope.LoadMore();
});
body {
  background: #eeeeee;
}
html {
  background: #eeeeee;
}
.gridListdemoBasicUsage md-grid-list {
  margin: 8px;
}
.gridListdemoBasicUsage .green {
  background: #b9f6ca;
}
.gridListdemoBasicUsage md-grid-tile {
  transition: all 400ms ease-out 50ms;
}
.responsiveImage {
  max-width: 100%;
  max-height: 100%;
}
md-content {
  background: #eeeeee;
  position: relative;
}
.fit {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}
.toolbardemoScrollShrink .face {
  width: 48px;
  margin: 16px;
  border-radius: 48px;
  border: 1px solid #ddd;
}
.md-toolbar-tools {
  background-color: #259b24;
}
.dialogdemoBasicUsage #popupContainer {
  position: relative;
}
.dialogdemoBasicUsage .footer {
  width: 100%;
  text-align: center;
  margin-left: 20px;
}
.dialogdemoBasicUsage .footer,
.dialogdemoBasicUsage .footer > code {
  font-size: 0.8em;
  margin-top: 50px;
}
.dialogdemoBasicUsage button {
  width: 200px;
}
.dialogdemoBasicUsage div#status {
  color: #c60008;
}
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/angular-material/1.0.7/angular-material.min.css" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular-animate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular-aria.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-material/1.0.7/angular-material.min.js"></script>

<body ng-app="app" ng-controller="GalleryCtrl as gc" ng-cloak="" id="popupContainer" class="gridListdemoBasicUsage dialogdemoBasicUsage">

  <md-toolbar md-scroll-shrink="" ng-if="true" ng-controller="TitleController">
    <div class="md-toolbar-tools">
      <h3><span>{{title}}</span></h3>
    </div>
  </md-toolbar>

  <md-content style="height:100vh" />
  <md-grid-list md-cols-xs="1" md-cols-sm="2" md-cols-md="4" md-cols-gt-md="6" md-row-height-gt-md="1:1" md-row-height="2:2" md-gutter="12px" md-gutter-gt-sm="8px">
    <md-grid-tile ng-click="ShowDetails($event, n.id)" ng-repeat="n in Images" class="green">
      <img class="responsiveImage" src="{{n.src}}">
      <md-grid-tile-footer>
        <h3>Photo number {{n.id}}</h3>
      </md-grid-tile-footer>
    </md-grid-tile>
  </md-grid-list>

  <section layout="row" layout-sm="column" layout-align="center center" layout-wrap="">
    <md-button class="md-raised md-primary" ng-click="LoadMore()">Primary</md-button>
  </section>
</body>

Перейдите в полноэкранный режим, прокрутите страницу вниз и нажмите кнопку, чтобы загрузить больше изображений. Проблема, с которой я столкнулся: я пытаюсь заставить панель инструментов в верхней части экрана исчезать при прокрутке вниз и снова появляться при прокрутке вверх. Однако появляются 2 полосы прокрутки, и только правая влияет на панель инструментов. Левая полоса прокрутки фактически прокручивается до конца страницы.

Моя желаемая ситуация: только 1 видимая полоса прокрутки для прокрутки всей галереи, которая также заставляет панель инструментов появляться и исчезать. Как мне это сделать?


person yesman    schedule 12.04.2016    source источник
comment
Ошибка в библиотеке. На данный момент вы должны исправить панель инструментов.   -  person nextt1    schedule 12.04.2016


Ответы (1)


попробуйте добавить overflow-y: hidden; к правилу CSS body.

person someone1    schedule 06.09.2016