Подтвердить что ты не робот

Angular для прикрепления боковой панели

Я пытаюсь привязать боковую панель соответствующим основному контенту. Я пробовал директиву здесь. Хотя я преуспеваю в топ-аффиксе, я работаю и придерживаюсь вершины при прокрутке вниз, но он не может прокручивать в случае, если содержимое боковых панелей больше. Я хочу исправить его сверху и переместить его прокручиваемым в соответствии с основным контентом. но если его содержимое больше, чем экран, оно также должно прокручиваться вниз и одновременно придерживаться дна.

<div class="background-white" sidebar-affix data-spy="affix" data-offset-top="80" data-offset-bottom="10">My sidebar content here</div>

.directive('sidebarAffix', function($window) {
    return {
        restrict: 'EA',
        link: function(scope, element, attrs) {
            var originOffsetTop = element[0].offsetTop;
            scope.condition     = function() {
                return $window.pageYOffset > originOffsetTop;
            };

            angular.element($window).bind('scroll', function() {
                scope.$apply(function() {
                    console.log($window.pageYOffset > originOffsetTop);
                    if (scope.condition()) {
                        angular.element(element).removeClass('affix-top');
                        angular.element(element).addClass('affix');
                    } else {
                        angular.element(element).addClass('affix-top');
                        angular.element(element).removeClass('affix');
                    }
                });
            });
        }
    };
})

Я хочу быть прокручиваемым, если боковая панель длиннее ожидаемой, но в этом случае она должна придерживаться нижней части.

4b9b3361

Ответ 1

Как насчет предоставления позиции вашего меню: исправлено; и сверху: XXpx, то он всегда будет оставаться в том же месте, даже если вы прокрутите свой контент вниз

.wrapper > div{
  display:inline-block;
}
.side-bar  {
  position:fixed;  
  top:10px;
}
.content {
  
}
<div class='wrapper'>
  <div class='side-bar'></div>
  <div class='content'></div>
</div> 

Ответ 2

Это может быть старый пост. Тем не менее, рассмотрели ли вы его отдельный просмотр и загрузили его на индексной странице. Вместо того, чтобы обрабатывать его с помощью css. Делая это, вы можете написать отдельный контроллер для доступа только к боковой панели, и, конечно, он будет исправлен, а также вы можете добавить другое представление, такое как верхний колонтитул, нижний колонтитул и определить отдельный контроллер для каждого из них и определить отдельный контейнер для загрузки основного содержимого. Это может быть не точный ответ, который вы попросили (директиву). Просто предложение.

Проводка образца html

<html lang="en" data-ng-app="SampleApp">
<head>
<body ng-controller="SampleController" >
    <!-- BEGIN HEADER -->
    <div data-ng-include="'header.html'" data-ng-controller="HeaderController" > </div>
    <!-- END HEADER -->

    <!-- BEGIN CONTAINER -->
    <div class="page-container" id="container">
        <!-- BEGIN SIDEBAR -->
        <div data-ng-include="sidebar.html'" data-ng-controller="SidebarController" > </div>
        <!-- END SIDEBAR -->
        <!-- BEGIN CONTENT -->
        <div >
            <div class="page-content">
                <!-- BEGIN ACTUAL CONTENT -->
                <div ui-view class="fade-in-up"> </div>
                <!-- END ACTUAL CONTENT -->
            </div>
        </div>
        <!-- END CONTENT -->
    </div>
    <!-- END CONTAINER -->
    <!-- BEGIN FOOTER -->
    <div data-ng-include="'footer.html'" data-ng-controller="FooterController" class="page-footer"> </div>
    <!-- END FOOTER -->
</body>
<!-- END BODY -->

Ответ 3

Установите максимальную высоту до 100% и увеличьте верхний край, чтобы найти подходящую позицию для установки места   max-height: 100%;   margin-top: 50%; добавление max-height в тело и край поля вверх, чтобы div надеется, что это исправить проблему.