diff --git a/core/modules/toolbar/css/toolbar.base.css b/core/modules/toolbar/css/toolbar.base.css
index e6cf95a56189b932779c26c8d17ea936bd8b94b3..58a2c2be828f3f19ee25f109532c64e806c09498 100644
--- a/core/modules/toolbar/css/toolbar.base.css
+++ b/core/modules/toolbar/css/toolbar.base.css
@@ -84,6 +84,10 @@ html.js .toolbar {
  */
 .js .toolbar .tray {
   display: none;
+  position: fixed;
+}
+/* Make vertical toolbar tray scroll with page for touch devices. */
+.touch .toolbar .tray {
   position: absolute;
 }
 .toolbar .tray {
@@ -115,6 +119,8 @@ html.js .toolbar {
 .toolbar .vertical > .lining:before {
   left: -100%; /* LTR */
   min-height: 100%;
+  overflow-x: hidden;
+  overflow-y: auto;
   position: absolute;
   width: 100%;
 }
@@ -141,7 +147,15 @@ html.js .toolbar {
 }
 .toolbar .vertical.active,
 .toolbar .vertical.active > .lining {
+  bottom: 0;
   left: 0; /* LTR */
+  top: 0;
+}
+/* Make vertical toolbar tray scroll with page for touch devices. */
+.touch .toolbar .vertical.active,
+.touch .toolbar .vertical.active > .lining {
+  bottom: auto;
+  top: auto;
 }
 .toolbar .horizontal .menu li ul {
   display: none;