mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-07 06:57:02 +08:00
Fixed #77, scroll support for <content> dir
This commit is contained in:
8
dist/css/ionic-ios7.css
vendored
8
dist/css/ionic-ios7.css
vendored
@ -365,10 +365,8 @@ body, .ionic-body {
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%; }
|
||||||
-webkit-overflow-scrolling: touch; }
|
|
||||||
|
|
||||||
.scroll-content {
|
.scroll-content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -378,6 +376,10 @@ body, .ionic-body {
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
|
|
||||||
|
.overflow-scroll {
|
||||||
|
overflow: auto;
|
||||||
|
-webkit-overflow-scrolling: touch; }
|
||||||
|
|
||||||
.has-header {
|
.has-header {
|
||||||
top: 44px; }
|
top: 44px; }
|
||||||
|
|
||||||
|
|||||||
7
dist/css/ionic-scoped.css
vendored
7
dist/css/ionic-scoped.css
vendored
@ -1789,10 +1789,8 @@
|
|||||||
transform: translateZ(0px); }
|
transform: translateZ(0px); }
|
||||||
.ionic .content {
|
.ionic .content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%; }
|
||||||
-webkit-overflow-scrolling: touch; }
|
|
||||||
.ionic .scroll-content {
|
.ionic .scroll-content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
@ -1800,6 +1798,9 @@
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
|
.ionic .overflow-scroll {
|
||||||
|
overflow: auto;
|
||||||
|
-webkit-overflow-scrolling: touch; }
|
||||||
.ionic .has-header {
|
.ionic .has-header {
|
||||||
top: 44px; }
|
top: 44px; }
|
||||||
.ionic .has-footer {
|
.ionic .has-footer {
|
||||||
|
|||||||
8
dist/css/ionic.css
vendored
8
dist/css/ionic.css
vendored
@ -2196,10 +2196,8 @@ body, .ionic-body {
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%; }
|
||||||
-webkit-overflow-scrolling: touch; }
|
|
||||||
|
|
||||||
.scroll-content {
|
.scroll-content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -2209,6 +2207,10 @@ body, .ionic-body {
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
|
|
||||||
|
.overflow-scroll {
|
||||||
|
overflow: auto;
|
||||||
|
-webkit-overflow-scrolling: touch; }
|
||||||
|
|
||||||
.has-header {
|
.has-header {
|
||||||
top: 44px; }
|
top: 44px; }
|
||||||
|
|
||||||
|
|||||||
43
dist/js/ionic-angular.js
vendored
43
dist/js/ionic-angular.js
vendored
@ -14,6 +14,7 @@ angular.module('ionic.service', [
|
|||||||
|
|
||||||
angular.module('ionic.ui', [
|
angular.module('ionic.ui', [
|
||||||
'ionic.ui.content',
|
'ionic.ui.content',
|
||||||
|
'ionic.ui.scroll',
|
||||||
'ionic.ui.tabs',
|
'ionic.ui.tabs',
|
||||||
'ionic.ui.nav',
|
'ionic.ui.nav',
|
||||||
'ionic.ui.sideMenu',
|
'ionic.ui.sideMenu',
|
||||||
@ -456,7 +457,7 @@ angular.module('ionic.ui.content', [])
|
|||||||
return {
|
return {
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
replace: true,
|
replace: true,
|
||||||
template: '<div class="content"></div>',
|
template: '<div class="scroll-content"><div class="scroll"></div></div>',
|
||||||
transclude: true,
|
transclude: true,
|
||||||
compile: function(element, attr, transclude) {
|
compile: function(element, attr, transclude) {
|
||||||
return function($scope, $element, $attr) {
|
return function($scope, $element, $attr) {
|
||||||
@ -475,7 +476,22 @@ angular.module('ionic.ui.content', [])
|
|||||||
if(attr.hasTabs) {
|
if(attr.hasTabs) {
|
||||||
c.addClass('has-tabs');
|
c.addClass('has-tabs');
|
||||||
}
|
}
|
||||||
$element.append(transclude($scope));
|
|
||||||
|
|
||||||
|
// If they want plain overflows scrolling, add that as a class
|
||||||
|
if(attr.overflowScroll === "true") {
|
||||||
|
c.addClass('overflow-scroll');
|
||||||
|
} else {
|
||||||
|
// Otherwise, supercharge this baby!
|
||||||
|
var sv = new ionic.views.Scroll({
|
||||||
|
el: $element[0].firstElementChild
|
||||||
|
});
|
||||||
|
// Let child scopes access this
|
||||||
|
$scope.scrollView = sv;
|
||||||
|
}
|
||||||
|
|
||||||
|
var clone = transclude($scope);
|
||||||
|
angular.element($element[0].firstElementChild).append(clone);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -919,29 +935,6 @@ angular.module('ionic.ui.nav', ['ionic.service.templateLoad', 'ionic.service.ges
|
|||||||
|
|
||||||
})();
|
})();
|
||||||
;
|
;
|
||||||
(function(ionic) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description
|
|
||||||
* The scroll directive lets you enable a content area for
|
|
||||||
* our custom momentum scrolling area. The benefit to a custom
|
|
||||||
* scroll area is configurability, and avoidance of the
|
|
||||||
* buggy -webkit-overflow-scrolling: touch.
|
|
||||||
*/
|
|
||||||
|
|
||||||
angular.module('ionic.ui.scroll', [])
|
|
||||||
|
|
||||||
.directive('scroll', function() {
|
|
||||||
return {
|
|
||||||
restrict: 'ECA',
|
|
||||||
replace: true,
|
|
||||||
transclude: true,
|
|
||||||
template: '<div class="scroll-content" ng-transclude></div>'
|
|
||||||
};
|
|
||||||
});
|
|
||||||
})(window.ionic);
|
|
||||||
;
|
|
||||||
(function() {
|
(function() {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|||||||
19
js/ext/angular/src/directive/ionicContent.js
vendored
19
js/ext/angular/src/directive/ionicContent.js
vendored
@ -18,7 +18,7 @@ angular.module('ionic.ui.content', [])
|
|||||||
return {
|
return {
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
replace: true,
|
replace: true,
|
||||||
template: '<div class="content"></div>',
|
template: '<div class="scroll-content"><div class="scroll"></div></div>',
|
||||||
transclude: true,
|
transclude: true,
|
||||||
compile: function(element, attr, transclude) {
|
compile: function(element, attr, transclude) {
|
||||||
return function($scope, $element, $attr) {
|
return function($scope, $element, $attr) {
|
||||||
@ -37,7 +37,22 @@ angular.module('ionic.ui.content', [])
|
|||||||
if(attr.hasTabs) {
|
if(attr.hasTabs) {
|
||||||
c.addClass('has-tabs');
|
c.addClass('has-tabs');
|
||||||
}
|
}
|
||||||
$element.append(transclude($scope));
|
|
||||||
|
|
||||||
|
// If they want plain overflows scrolling, add that as a class
|
||||||
|
if(attr.overflowScroll === "true") {
|
||||||
|
c.addClass('overflow-scroll');
|
||||||
|
} else {
|
||||||
|
// Otherwise, supercharge this baby!
|
||||||
|
var sv = new ionic.views.Scroll({
|
||||||
|
el: $element[0].firstElementChild
|
||||||
|
});
|
||||||
|
// Let child scopes access this
|
||||||
|
$scope.scrollView = sv;
|
||||||
|
}
|
||||||
|
|
||||||
|
var clone = transclude($scope);
|
||||||
|
angular.element($element[0].firstElementChild).append(clone);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
22
js/ext/angular/src/directive/ionicScroll.js
vendored
22
js/ext/angular/src/directive/ionicScroll.js
vendored
@ -1,22 +0,0 @@
|
|||||||
(function(ionic) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description
|
|
||||||
* The scroll directive lets you enable a content area for
|
|
||||||
* our custom momentum scrolling area. The benefit to a custom
|
|
||||||
* scroll area is configurability, and avoidance of the
|
|
||||||
* buggy -webkit-overflow-scrolling: touch.
|
|
||||||
*/
|
|
||||||
|
|
||||||
angular.module('ionic.ui.scroll', [])
|
|
||||||
|
|
||||||
.directive('scroll', function() {
|
|
||||||
return {
|
|
||||||
restrict: 'ECA',
|
|
||||||
replace: true,
|
|
||||||
transclude: true,
|
|
||||||
template: '<div class="scroll-content" ng-transclude></div>'
|
|
||||||
};
|
|
||||||
});
|
|
||||||
})(window.ionic);
|
|
||||||
1
js/ext/angular/src/ionicAngular.js
vendored
1
js/ext/angular/src/ionicAngular.js
vendored
@ -14,6 +14,7 @@ angular.module('ionic.service', [
|
|||||||
|
|
||||||
angular.module('ionic.ui', [
|
angular.module('ionic.ui', [
|
||||||
'ionic.ui.content',
|
'ionic.ui.content',
|
||||||
|
'ionic.ui.scroll',
|
||||||
'ionic.ui.tabs',
|
'ionic.ui.tabs',
|
||||||
'ionic.ui.nav',
|
'ionic.ui.nav',
|
||||||
'ionic.ui.sideMenu',
|
'ionic.ui.sideMenu',
|
||||||
|
|||||||
33
js/ext/angular/test/scroll.html
Normal file
33
js/ext/angular/test/scroll.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<html ng-app="scrollTest">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Side Menus</title>
|
||||||
|
|
||||||
|
<!-- Sets initial viewport load and disables zooming -->
|
||||||
|
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
|
<link href="/vendor/font-awesome/css/font-awesome.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="../../../../dist/css/ionic.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js"></script>
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular-touch.js"></script>
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular-animate.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<content has-header="true">
|
||||||
|
<div ng-controller="ScrollCtrl">
|
||||||
|
Realllllyyy long content
|
||||||
|
<div style="height: 2000px; background-color: red;"></div>
|
||||||
|
</div>
|
||||||
|
</content>
|
||||||
|
|
||||||
|
<script src="../../../../dist/js/ionic.js"></script>
|
||||||
|
<script src="../../../../dist/js/ionic-angular.js"></script>
|
||||||
|
<script>
|
||||||
|
angular.module('scrollTest', ['ionic'])
|
||||||
|
|
||||||
|
.controller('ScrollCtrl', function($scope) {
|
||||||
|
console.log($scope.scrollView);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
@ -61,10 +61,8 @@ body, .ionic-body {
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: auto;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-content {
|
.scroll-content {
|
||||||
@ -77,6 +75,11 @@ body, .ionic-body {
|
|||||||
}
|
}
|
||||||
// Pad top/bottom of content so it doesn't hide behind .bar-title and .bar-tab.
|
// Pad top/bottom of content so it doesn't hide behind .bar-title and .bar-tab.
|
||||||
// Note: For these to work, content must come after both bars in the markup
|
// Note: For these to work, content must come after both bars in the markup
|
||||||
|
|
||||||
|
.overflow-scroll {
|
||||||
|
overflow: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
.has-header {
|
.has-header {
|
||||||
top: $bar-height;
|
top: $bar-height;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user