diff --git a/components/index.js b/components/index.js
index e69195d65..c4a39dcf3 100644
--- a/components/index.js
+++ b/components/index.js
@@ -9,3 +9,5 @@ export { default as Radio } from './radio'
export { default as Grid } from './grid'
export { default as Rate } from './rate'
+
+export { default as ToolTip } from './tooltip'
diff --git a/components/pagination/index.js b/components/pagination/index.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/components/pagination/pagination.vue b/components/pagination/pagination.vue
new file mode 100644
index 000000000..e69de29bb
diff --git a/components/pagination/style/index.js b/components/pagination/style/index.js
new file mode 100644
index 000000000..cf31ed80f
--- /dev/null
+++ b/components/pagination/style/index.js
@@ -0,0 +1,2 @@
+import '../../style/index.less'
+import './index.less'
diff --git a/components/pagination/style/index.less b/components/pagination/style/index.less
new file mode 100644
index 000000000..5b8e0ddab
--- /dev/null
+++ b/components/pagination/style/index.less
@@ -0,0 +1,333 @@
+@import "../../style/themes/default";
+@import "../../style/mixins/index";
+@import "../../input/style/mixin";
+
+@pagination-prefix-cls: ~"@{ant-prefix}-pagination";
+
+.@{pagination-prefix-cls} {
+ font-size: @font-size-base;
+
+ &:after {
+ content: " ";
+ display: block;
+ height: 0;
+ clear: both;
+ overflow: hidden;
+ visibility: hidden;
+ }
+
+ &-total-text {
+ display: inline-block;
+ vertical-align: middle;
+ height: 28px;
+ line-height: 28px;
+ margin-right: 8px;
+ }
+
+ &-item {
+ cursor: pointer;
+ border-radius: @border-radius-base;
+ user-select: none;
+ min-width: 28px;
+ height: 28px;
+ line-height: 28px;
+ text-align: center;
+ list-style: none;
+ display: inline-block;
+ vertical-align: middle;
+ border: @border-width-base @border-style-base @border-color-base;
+ background-color: @component-background;
+ margin-right: 8px;
+ font-family: Arial;
+ outline: 0;
+
+ a {
+ text-decoration: none;
+ color: @text-color;
+ transition: none;
+ margin: 0 6px;
+ }
+
+ &:focus,
+ &:hover {
+ transition: all .3s;
+ border-color: @primary-color;
+ a {
+ color: @primary-color;
+ }
+ }
+
+ &-active {
+ background-color: @primary-color;
+ border-color: @primary-color;
+
+ &:focus,
+ &:hover {
+ background-color: @primary-5;
+ border-color: @primary-5;
+ }
+
+ a,
+ &:focus a,
+ &:hover a {
+ color: #fff;
+ }
+ }
+ }
+
+ &-jump-prev,
+ &-jump-next {
+ outline: 0;
+
+ &:after {
+ content: "•••";
+ display: block;
+ letter-spacing: 2px;
+ color: @disabled-color;
+ text-align: center;
+ }
+
+ &:focus,
+ &:hover {
+ &:after {
+ color: @primary-color;
+ .iconfont-size-under-12px(8px);
+ letter-spacing: -1px;
+ font-family: "anticon";
+ }
+ }
+ }
+
+ &-jump-prev {
+ &:focus,
+ &:hover {
+ &:after {
+ content: "\e620\e620";
+ }
+ }
+ }
+
+ &-jump-next {
+ &:focus,
+ &:hover {
+ &:after {
+ content: "\e61f\e61f";
+ }
+ }
+ }
+
+ &-prev,
+ &-jump-prev,
+ &-jump-next {
+ margin-right: 8px;
+ }
+ &-prev,
+ &-next,
+ &-jump-prev,
+ &-jump-next {
+ font-family: Arial;
+ cursor: pointer;
+ color: @text-color;
+ border-radius: @border-radius-base;
+ list-style: none;
+ min-width: 28px;
+ height: 28px;
+ line-height: 28px;
+ text-align: center;
+ transition: all .3s;
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+ &-prev,
+ &-next {
+ outline: 0;
+
+ a {
+ color: @text-color;
+ user-select: none;
+ }
+
+ &:hover a {
+ color: @primary-color;
+ }
+
+ .@{pagination-prefix-cls}-item-link {
+ border: @border-width-base @border-style-base @border-color-base;
+ background-color: @component-background;
+ border-radius: @border-radius-base;
+ outline: none;
+ display: block;
+ transition: all .3s;
+
+ &:after {
+ .iconfont-size-under-12px(8px);
+ display: block;
+ height: 26px;
+ line-height: 26px;
+ font-family: "anticon";
+ text-align: center;
+ font-weight: 500;
+ }
+ }
+
+ &:focus .@{pagination-prefix-cls}-item-link,
+ &:hover .@{pagination-prefix-cls}-item-link {
+ border-color: @primary-color;
+ color: @primary-color;
+ }
+ }
+
+ &-prev {
+ .@{pagination-prefix-cls}-item-link:after {
+ content: "\e620";
+ display: block;
+ }
+ }
+
+ &-next {
+ .@{pagination-prefix-cls}-item-link:after {
+ content: "\e61f";
+ display: block;
+ }
+ }
+
+ &-disabled {
+ &,
+ &:hover,
+ &:focus {
+ cursor: not-allowed;
+ a,
+ .@{pagination-prefix-cls}-item-link {
+ border-color: @border-color-base;
+ color: @disabled-color;
+ cursor: not-allowed;
+ }
+ }
+ }
+
+ &-slash {
+ margin: 0 10px 0 5px;
+ }
+
+ &-options {
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 16px;
+
+ &-size-changer {
+ display: inline-block;
+ margin-right: 8px;
+ }
+
+ &-quick-jumper {
+ display: inline-block;
+ height: @input-height-base;
+ line-height: @input-height-base;
+
+ input {
+ .input;
+ margin: 0 8px;
+ width: 50px;
+ }
+ }
+ }
+
+ &-simple &-prev,
+ &-simple &-next {
+ height: 24px;
+ line-height: 24px;
+ vertical-align: top;
+ .@{pagination-prefix-cls}-item-link {
+ border: 0;
+ height: 24px;
+ &:after {
+ line-height: 24px;
+ }
+ }
+ }
+
+ &-simple &-simple-pager {
+ display: inline-block;
+ margin-right: 8px;
+ height: 24px;
+
+ input {
+ margin-right: 8px;
+ box-sizing: border-box;
+ background-color: @component-background;
+ border-radius: @border-radius-base;
+ border: @border-width-base @border-style-base @border-color-base;
+ outline: none;
+ padding: 0 6px;
+ height: 100%;
+ text-align: center;
+ transition: border-color .3s;
+
+ &:hover {
+ border-color: @primary-color;
+ }
+ }
+ }
+}
+
+.@{pagination-prefix-cls} {
+ &.mini &-total-text,
+ &.mini &-simple-pager {
+ height: 20px;
+ line-height: 20px;
+ }
+
+ &.mini &-item {
+ border: 0;
+ margin: 0;
+ min-width: 20px;
+ height: 20px;
+ line-height: 20px;
+ }
+
+ &.mini &-prev,
+ &.mini &-next {
+ margin: 0;
+ min-width: 20px;
+ height: 20px;
+ line-height: 20px;
+ }
+
+ &.mini &-prev &-item-link,
+ &.mini &-next &-item-link {
+ border: 0;
+ &:after {
+ height: 20px;
+ line-height: 20px;
+ }
+ }
+
+ &.mini &-jump-prev,
+ &.mini &-jump-next {
+ height: 20px;
+ line-height: 20px;
+ }
+
+ &.mini &-options {
+ margin-left: 8px;
+ &-quick-jumper {
+ height: 20px;
+ line-height: 20px;
+
+ input {
+ .input-sm;
+ width: 44px;
+ }
+ }
+ }
+}
+
+@media only screen and (max-width: 1024px) {
+ .@{pagination-prefix-cls}-item {
+ &-after-jump-prev,
+ &-before-jump-next {
+ display: none;
+ }
+ }
+}
diff --git a/components/tooltip/index.js b/components/tooltip/index.js
new file mode 100644
index 000000000..4b5f7d8bc
--- /dev/null
+++ b/components/tooltip/index.js
@@ -0,0 +1,3 @@
+import ToolTip from './tooltip.vue'
+export default ToolTip
+
diff --git a/components/tooltip/style/index.js b/components/tooltip/style/index.js
new file mode 100644
index 000000000..cf31ed80f
--- /dev/null
+++ b/components/tooltip/style/index.js
@@ -0,0 +1,2 @@
+import '../../style/index.less'
+import './index.less'
diff --git a/components/tooltip/style/index.less b/components/tooltip/style/index.less
new file mode 100644
index 000000000..a5377f0d3
--- /dev/null
+++ b/components/tooltip/style/index.less
@@ -0,0 +1,207 @@
+@import "../../style/themes/default";
+@import "../../style/mixins/index";
+
+@tooltip-prefix-cls: ~"@{ant-prefix}-tooltip";
+
+// Base class
+.@{tooltip-prefix-cls} {
+ position: absolute;
+ z-index: @zindex-tooltip;
+ display: block;
+ visibility: visible;
+ font-size: @font-size-base;
+ line-height: @line-height-base;
+
+ &-hidden {
+ display: none;
+ }
+
+ &-placement-top,
+ &-placement-topLeft,
+ &-placement-topRight {
+ padding-bottom: @tooltip-distance;
+ }
+ &-placement-right,
+ &-placement-rightTop,
+ &-placement-rightBottom {
+ padding-left: @tooltip-distance;
+ }
+ &-placement-bottom,
+ &-placement-bottomLeft,
+ &-placement-bottomRight {
+ padding-top: @tooltip-distance;
+ }
+ &-placement-left,
+ &-placement-leftTop,
+ &-placement-leftBottom {
+ padding-right: @tooltip-distance;
+ }
+}
+
+// Wrapper for the tooltip content
+.@{tooltip-prefix-cls}-inner {
+ max-width: @tooltip-max-width;
+ padding: 8px 10px;
+ color: @tooltip-color;
+ text-align: left;
+ text-decoration: none;
+ background-color: @tooltip-bg;
+ border-radius: @border-radius-base;
+ box-shadow: @box-shadow-base;
+ min-height: 34px;
+}
+
+// Arrows
+.@{tooltip-prefix-cls}-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.@{tooltip-prefix-cls} {
+ &-placement-top &-arrow,
+ &-placement-topLeft &-arrow,
+ &-placement-topRight &-arrow {
+ bottom: @tooltip-distance - @tooltip-arrow-width;
+ border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
+ border-top-color: @tooltip-arrow-color;
+ }
+
+ &-placement-top &-arrow {
+ left: 50%;
+ margin-left: -@tooltip-arrow-width;
+ }
+
+ &-placement-topLeft &-arrow {
+ left: 16px;
+ }
+
+ &-placement-topRight &-arrow {
+ right: 16px;
+ }
+
+ &-placement-right &-arrow,
+ &-placement-rightTop &-arrow,
+ &-placement-rightBottom &-arrow {
+ left: @tooltip-distance - @tooltip-arrow-width;
+ border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
+ border-right-color: @tooltip-arrow-color;
+ }
+
+ &-placement-right &-arrow {
+ top: 50%;
+ margin-top: -@tooltip-arrow-width;
+ }
+
+ &-placement-rightTop &-arrow {
+ top: 8px;
+ }
+
+ &-placement-rightBottom &-arrow {
+ bottom: 8px;
+ }
+
+ &-placement-left &-arrow,
+ &-placement-leftTop &-arrow,
+ &-placement-leftBottom &-arrow {
+ right: @tooltip-distance - @tooltip-arrow-width;
+ border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
+ border-left-color: @tooltip-arrow-color;
+ }
+
+ &-placement-left &-arrow {
+ top: 50%;
+ margin-top: -@tooltip-arrow-width;
+ }
+
+ &-placement-leftTop &-arrow {
+ top: 8px;
+ }
+
+ &-placement-leftBottom &-arrow {
+ bottom: 8px;
+ }
+
+ &-placement-bottom &-arrow,
+ &-placement-bottomLeft &-arrow,
+ &-placement-bottomRight &-arrow {
+ top: @tooltip-distance - @tooltip-arrow-width;
+ border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
+ border-bottom-color: @tooltip-arrow-color;
+ }
+
+ &-placement-bottom &-arrow {
+ left: 50%;
+ margin-left: -@tooltip-arrow-width;
+ }
+
+ &-placement-bottomLeft &-arrow {
+ left: 16px;
+ }
+
+ &-placement-bottomRight &-arrow {
+ right: 16px;
+ }
+}
+
+
+/**
+modified part ,remove these if needed
+ */
+
+.vc-fade-enter-active, .vc-fade-leave-active {
+ transition: all 3s;
+}
+.vc-fade-enter, .vc-fade-leave-to /* .fade-leave-active in below version 2.1.8 */ {
+ opacity: 0;
+}
+
+.box {
+ background: red;
+ width: 100px;
+ height: 100px;
+}
+.fade-enter {
+ opacity: 0;
+ animation-duration: 0.3s;
+ animation-fill-mode: both;
+ animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2);
+ animation-play-state: paused;
+}
+
+.fade-leave {
+ animation-duration: 0.3s;
+ animation-fill-mode: both;
+ animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2);
+ animation-play-state: paused;
+}
+
+.fade-enter.fade-enter-active {
+ animation-name: rcDialogFadeIn;
+ animation-play-state: running;
+}
+
+.fade-leave.fade-leave-active {
+ animation-name: rcDialogFadeOut;
+ animation-play-state: running;
+}
+
+@keyframes rcDialogFadeIn {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes rcDialogFadeOut {
+ 0% {
+ opacity: 1;
+ }
+ 100% {
+ opacity: 0;
+ }
+}
diff --git a/components/tooltip/tooltip.vue b/components/tooltip/tooltip.vue
new file mode 100644
index 000000000..2ca384638
--- /dev/null
+++ b/components/tooltip/tooltip.vue
@@ -0,0 +1,179 @@
+
diff --git a/examples/index.js b/examples/index.js
index fee4bf6c9..4048dc6cc 100644
--- a/examples/index.js
+++ b/examples/index.js
@@ -1,6 +1,5 @@
import './index.less'
import Vue from 'vue'
-import VueMarkdown from 'vue-markdown'
import VueRouter from 'vue-router'
import routes from './routes'
Vue.use(VueRouter)
@@ -9,7 +8,6 @@ const router = new VueRouter({
mode: 'history',
routes,
})
-Vue.component('vue-markdown', VueMarkdown)
new Vue({
el: '#app',
router,
diff --git a/examples/rate.vue b/examples/rate.vue
index d09d36a37..fa48d073d 100644
--- a/examples/rate.vue
+++ b/examples/rate.vue
@@ -27,7 +27,7 @@
{{hoverValueAH}}stars
自定义
-
+
+
+
diff --git a/utils/ant-transition.vue b/utils/ant-transition.vue
new file mode 100644
index 000000000..e87ff117c
--- /dev/null
+++ b/utils/ant-transition.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+