diff --git a/components/badge/style/index.less b/components/badge/style/index.less
index e69de29bb2d..d638e0a15b1 100644
--- a/components/badge/style/index.less
+++ b/components/badge/style/index.less
@@ -0,0 +1,191 @@
+@import '../../style/themes/index';
+@import '../../style/mixins/index';
+
+@badge-prefix-cls: ~'@{ant-prefix}-badge';
+@number-prefix-cls: ~'@{ant-prefix}-scroll-number';
+
+.@{badge-prefix-cls} {
+ .reset-component;
+
+ position: relative;
+ display: inline-block;
+ color: unset;
+ line-height: 1;
+
+ &-count {
+ z-index: @zindex-badge;
+ min-width: @badge-height;
+ height: @badge-height;
+ padding: 0 6px;
+ color: @badge-text-color;
+ font-weight: @badge-font-weight;
+ font-size: @badge-font-size;
+ line-height: @badge-height;
+ white-space: nowrap;
+ text-align: center;
+ background: @highlight-color;
+ border-radius: @badge-height / 2;
+ box-shadow: 0 0 0 1px @shadow-color-inverse;
+ a,
+ a:hover {
+ color: @badge-text-color;
+ }
+ }
+
+ &-multiple-words {
+ padding: 0 8px;
+ }
+
+ &-dot {
+ z-index: @zindex-badge;
+ width: @badge-dot-size;
+ height: @badge-dot-size;
+ background: @highlight-color;
+ border-radius: 100%;
+ box-shadow: 0 0 0 1px @shadow-color-inverse;
+ }
+
+ &-count,
+ &-dot,
+ .@{number-prefix-cls}-custom-component {
+ position: absolute;
+ top: 0;
+ right: 0;
+ transform: translate(50%, -50%);
+ transform-origin: 100% 0%;
+ }
+
+ &-status {
+ line-height: inherit;
+ vertical-align: baseline;
+
+ &-dot {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: @badge-status-size;
+ height: @badge-status-size;
+ vertical-align: middle;
+ border-radius: 50%;
+ }
+ &-success {
+ background-color: @success-color;
+ }
+ &-processing {
+ position: relative;
+ background-color: @processing-color;
+ &::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 1px solid @processing-color;
+ border-radius: 50%;
+ animation: antStatusProcessing 1.2s infinite ease-in-out;
+ content: '';
+ }
+ }
+ &-default {
+ background-color: @normal-color;
+ }
+ &-error {
+ background-color: @error-color;
+ }
+ &-warning {
+ background-color: @warning-color;
+ }
+
+ // mixin to iterate over colors and create CSS class for each one
+ .make-color-classes(@i: length(@preset-colors)) when (@i > 0) {
+ .make-color-classes(@i - 1);
+ @color: extract(@preset-colors, @i);
+ @darkColor: '@{color}-6';
+ &-@{color} {
+ background: @@darkColor;
+ }
+ }
+ .make-color-classes();
+
+ &-text {
+ margin-left: 8px;
+ color: @text-color;
+ font-size: @font-size-base;
+ }
+ }
+
+ &-zoom-appear,
+ &-zoom-enter {
+ animation: antZoomBadgeIn 0.3s @ease-out-back;
+ animation-fill-mode: both;
+ }
+
+ &-zoom-leave {
+ animation: antZoomBadgeOut 0.3s @ease-in-back;
+ animation-fill-mode: both;
+ }
+
+ &-not-a-wrapper {
+ &:not(.@{badge-prefix-cls}-status) {
+ vertical-align: middle;
+ }
+
+ .@{ant-prefix}-scroll-number {
+ position: relative;
+ top: auto;
+ display: block;
+ }
+
+ .@{badge-prefix-cls}-count {
+ transform: none;
+ }
+ }
+}
+
+@keyframes antStatusProcessing {
+ 0% {
+ transform: scale(0.8);
+ opacity: 0.5;
+ }
+ 100% {
+ transform: scale(2.4);
+ opacity: 0;
+ }
+}
+
+.@{number-prefix-cls} {
+ overflow: hidden;
+ &-only {
+ display: inline-block;
+ height: @badge-height;
+ transition: all 0.3s @ease-in-out;
+ > p {
+ height: @badge-height;
+ margin: 0;
+ }
+ }
+
+ &-symbol {
+ vertical-align: top;
+ }
+}
+
+@keyframes antZoomBadgeIn {
+ 0% {
+ transform: scale(0) translate(50%, -50%);
+ opacity: 0;
+ }
+ 100% {
+ transform: scale(1) translate(50%, -50%);
+ }
+}
+
+@keyframes antZoomBadgeOut {
+ 0% {
+ transform: scale(1) translate(50%, -50%);
+ }
+ 100% {
+ transform: scale(0) translate(50%, -50%);
+ opacity: 0;
+ }
+}
diff --git a/components/layout/demo/side.ts b/components/layout/demo/side.ts
index 6baceac3e5e..05887d15ded 100644
--- a/components/layout/demo/side.ts
+++ b/components/layout/demo/side.ts
@@ -22,7 +22,7 @@ import { Component } from '@angular/core';
- File
+ File
diff --git a/components/menu/demo/horizontal.ts b/components/menu/demo/horizontal.ts
index 5211f027b81..285aaa5c7ee 100755
--- a/components/menu/demo/horizontal.ts
+++ b/components/menu/demo/horizontal.ts
@@ -4,7 +4,7 @@ import { Component } from '@angular/core';
selector: 'nz-demo-menu-horizontal',
template: `
- -
+
-
Navigation One
diff --git a/components/menu/demo/inline-collapsed.ts b/components/menu/demo/inline-collapsed.ts
index 1cec43aad5a..e002c478f0d 100644
--- a/components/menu/demo/inline-collapsed.ts
+++ b/components/menu/demo/inline-collapsed.ts
@@ -4,11 +4,11 @@ import { Component } from '@angular/core';
selector: 'nz-demo-menu-inline-collapsed',
template: `
-