diff --git a/src/views/layout/components/Sidebar/SidebarItem.vue b/src/views/layout/components/Sidebar/SidebarItem.vue
index adf2222a3029641c4b400f616813b6c29daaa5fe..1b5a7743049a9304fb8045a8426c01e08c71ca79 100644
--- a/src/views/layout/components/Sidebar/SidebarItem.vue
+++ b/src/views/layout/components/Sidebar/SidebarItem.vue
@@ -12,7 +12,7 @@
         </el-menu-item>
       </app-link>
     </template>
-    <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)">
+    <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" :id="item.meta.title">
       <template slot="title">
         <item
           v-if="item.meta"
diff --git a/src/views/layout/components/Sidebar/index.vue b/src/views/layout/components/Sidebar/index.vue
index 85ec993a074390893a41f27ac8cb9ddea942e4c1..f57ebf1711135d04aec368bca4634f062c50fef0 100644
--- a/src/views/layout/components/Sidebar/index.vue
+++ b/src/views/layout/components/Sidebar/index.vue
@@ -71,6 +71,15 @@ export default {
           const routes = this.getMergedRoutes()
           this.$store.dispatch('GenerateRoutes', { roles: this.roles, _routesWithSettings: routes })
         }
+        let isRequesting = true
+        const step = () => {
+          document.querySelector('#settings').scrollIntoView({ block: 'start', behavior: 'smooth' })
+          if (isRequesting) requestAnimationFrame(step)
+        }
+        requestAnimationFrame(step)
+        setTimeout(() => {
+          isRequesting = false
+        }, 300) // this equals to the hide-timeout of the el-submenu
       }
     }
   }