From ae96c341f09f84809fc1e74a551f1e3785de8545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 18 Mar 2022 12:56:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20carousel-item=20?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=B5=8C=E5=A5=97=20v-for=20=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/docs/zh-CN/components/carousel.md | 39 ++ example/docs/zh-CN/guide/changelog.md | 1 + src/component/carousel/index.less | 548 +++++++++++----------- src/component/carousel/index.ts | 2 +- src/component/carousel/index.vue | 57 ++- src/component/carouselItem/index.vue | 5 +- src/component/tab/index.vue | 2 +- 7 files changed, 364 insertions(+), 290 deletions(-) diff --git a/example/docs/zh-CN/components/carousel.md b/example/docs/zh-CN/components/carousel.md index 59f7bdd1..d51a2d06 100644 --- a/example/docs/zh-CN/components/carousel.md +++ b/example/docs/zh-CN/components/carousel.md @@ -118,6 +118,45 @@ export default { ::: +::: title 动态遍历 +::: + +::: demo + + + + + +::: + + ::: title Carousel 属性 ::: diff --git a/example/docs/zh-CN/guide/changelog.md b/example/docs/zh-CN/guide/changelog.md index 13823231..42ff150c 100644 --- a/example/docs/zh-CN/guide/changelog.md +++ b/example/docs/zh-CN/guide/changelog.md @@ -23,6 +23,7 @@
  • [新增] page 分页组件 v-model 属性, 支持默认页设置。
  • [新增] date-picker 日期选择组件, 支持年月, 日期, 时间。
  • [新增] transfer 穿梭框组件 showSearch 开启搜索属性。
  • +
  • [修复] carousel-item 轮播项使用 v-for 无法渲染。
  • [修复] checkbox 复选框组件, 选中颜色丢失。
  • [修复] slider 滑块组件, 默认 step 值异常。
  • [升级] layer-vue 1.3.10 版本。
  • diff --git a/src/component/carousel/index.less b/src/component/carousel/index.less index 06e2a975..ab6a753a 100644 --- a/src/component/carousel/index.less +++ b/src/component/carousel/index.less @@ -1,278 +1,276 @@ @import "../../theme/variable.less"; - .layui-carousel { - position: relative; - left: 0; - top: 0; - background-color: #f8f8f8; - } - - .layui-carousel > [carousel-item] { - position: relative; - width: 100%; - height: 100%; - overflow: hidden; - } - - .layui-carousel > [carousel-item]:before { - position: absolute; - content: "\e63d"; - left: 50%; - top: 50%; - width: 100px; - line-height: 20px; - margin: -10px 0 0 -50px; - text-align: center; - color: @global-neutral-color-8; - font-family: layui-icon !important; - font-size: 30px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - .layui-carousel > [carousel-item] > * { - display: none; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: #f8f8f8; - transition-duration: 0.3s; - -webkit-transition-duration: 0.3s; - } - - .layui-carousel-updown > * { - -webkit-transition: 0.3s ease-in-out up; - transition: 0.3s ease-in-out up; - } - - .layui-carousel-arrow { - display: none\9; - opacity: 0; - position: absolute; - left: 10px; - top: 50%; - margin-top: -18px; - width: 36px; - height: 36px; - line-height: 36px; - text-align: center; - font-size: 20px; - border: 0; - border-radius: 50%; - background-color: rgba(0, 0, 0, 0.2); - color: #fff; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - cursor: pointer; - } - - .layui-carousel-arrow[lay-type="add"] { - left: auto !important; - right: 10px; - } - - .layui-carousel:hover .layui-carousel-arrow[lay-type="add"], - .layui-carousel[lay-arrow="always"] .layui-carousel-arrow[lay-type="add"] { - right: 20px; - } - - .layui-carousel[lay-arrow="always"] .layui-carousel-arrow { - opacity: 1; - left: 20px; - } - - .layui-carousel[lay-arrow="none"] .layui-carousel-arrow { - display: none; - } - - .layui-carousel-arrow:hover, - .layui-carousel-ind ul:hover { - background-color: rgba(0, 0, 0, 0.35); - } - - .layui-carousel:hover .layui-carousel-arrow { - display: block\9; - opacity: 1; - left: 20px; - } - - .layui-carousel-ind { - position: relative; - top: -35px; - width: 100%; - line-height: 0 !important; - text-align: center; - font-size: 0; - } - - .layui-carousel[lay-indicator="outside"] { - margin-bottom: 30px; - } - - .layui-carousel[lay-indicator="outside"] .layui-carousel-ind { - top: 10px; - } - - .layui-carousel[lay-indicator="outside"] .layui-carousel-ind ul { - background-color: rgba(0, 0, 0, 0.5); - } - - .layui-carousel[lay-indicator="none"] .layui-carousel-ind { - display: none; - } - - .layui-carousel-ind ul { - display: inline-block; - padding: 5px; - background-color: rgba(0, 0, 0, 0.2); - border-radius: 10px; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - } - - .layui-carousel-ind li { - display: inline-block; - width: 10px; - height: 10px; - margin: 0 3px; - font-size: 14px; - background-color: @global-neutral-color-3; - background-color: rgba(255, 255, 255, 0.5); - border-radius: 50%; - cursor: pointer; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - } - - .layui-carousel-ind li:hover { - background-color: rgba(255, 255, 255, 0.7); - } - - .layui-carousel-ind li.layui-this { - background-color: #fff; - } - - .layui-carousel > [carousel-item] > .layui-carousel-next, - .layui-carousel > [carousel-item] > .layui-carousel-prev, - .layui-carousel > [carousel-item] > .layui-this { - display: block; - } - - .layui-carousel > [carousel-item] > .layui-this { - left: 0; - } - - .layui-carousel > [carousel-item] > .layui-carousel-prev { - left: -100%; - } - - .layui-carousel > [carousel-item] > .layui-carousel-next { - left: 100%; - } - - .layui-carousel > [carousel-item] > .layui-carousel-next.layui-carousel-left, - .layui-carousel > [carousel-item] > .layui-carousel-prev.layui-carousel-right { - left: 0; - } - - .layui-carousel > [carousel-item] > .layui-this.layui-carousel-left { - left: -100%; - } - - .layui-carousel > [carousel-item] > .layui-this.layui-carousel-right { - left: 100%; - } - - .layui-carousel[lay-anim="updown"] .layui-carousel-arrow { - left: 50% !important; - top: 20px; - margin: 0 0 0 -18px; - } - - .layui-carousel[lay-anim="updown"] > [carousel-item] > *, - .layui-carousel[lay-anim="fade"] > [carousel-item] > * { - left: 0 !important; - } - - .layui-carousel[lay-anim="updown"] .layui-carousel-arrow[lay-type="add"] { - top: auto !important; - bottom: 20px; - } - - .layui-carousel[lay-anim="updown"] .layui-carousel-ind { - position: absolute; - top: 50%; - right: 20px; - width: auto; - height: auto; - } - - .layui-carousel[lay-anim="updown"] .layui-carousel-ind ul { - padding: 3px 5px; - } - - .layui-carousel[lay-anim="updown"] .layui-carousel-ind li { - display: block; - margin: 6px 0; - } - - .layui-carousel[lay-anim="updown"] > [carousel-item] > .layui-this { - top: 0; - } - - .layui-carousel[lay-anim="updown"] > [carousel-item] > .layui-carousel-prev { - top: -100%; - } - - .layui-carousel[lay-anim="updown"] > [carousel-item] > .layui-carousel-next { - top: 100%; - } - - .layui-carousel[lay-anim="updown"] - > [carousel-item] - > .layui-carousel-next.layui-carousel-left, - .layui-carousel[lay-anim="updown"] - > [carousel-item] - > .layui-carousel-prev.layui-carousel-right { - top: 0; - } - - .layui-carousel[lay-anim="updown"] - > [carousel-item] - > .layui-this.layui-carousel-left { - top: -100%; - } - - .layui-carousel[lay-anim="updown"] - > [carousel-item] - > .layui-this.layui-carousel-right { - top: 100%; - } - - .layui-carousel[lay-anim="fade"] > [carousel-item] > .layui-carousel-next, - .layui-carousel[lay-anim="fade"] > [carousel-item] > .layui-carousel-prev { - opacity: 0; - } - - .layui-carousel[lay-anim="fade"] - > [carousel-item] - > .layui-carousel-next.layui-carousel-left, - .layui-carousel[lay-anim="fade"] - > [carousel-item] - > .layui-carousel-prev.layui-carousel-right { - opacity: 1; - } - - .layui-carousel[lay-anim="fade"] - > [carousel-item] - > .layui-this.layui-carousel-left, - .layui-carousel[lay-anim="fade"] - > [carousel-item] - > .layui-this.layui-carousel-right { - opacity: 0; - } - \ No newline at end of file + position: relative; + left: 0; + top: 0; + background-color: #f8f8f8; +} + +.layui-carousel > [carousel-item] { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; +} + +.layui-carousel > [carousel-item]:before { + position: absolute; + content: "\e63d"; + left: 50%; + top: 50%; + width: 100px; + line-height: 20px; + margin: -10px 0 0 -50px; + text-align: center; + color: @global-neutral-color-8; + font-family: layui-icon !important; + font-size: 30px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.layui-carousel > [carousel-item] > * { + display: none; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #f8f8f8; + transition-duration: 0.3s; + -webkit-transition-duration: 0.3s; +} + +.layui-carousel-updown > * { + -webkit-transition: 0.3s ease-in-out up; + transition: 0.3s ease-in-out up; +} + +.layui-carousel-arrow { + display: none\9; + opacity: 0; + position: absolute; + left: 10px; + top: 50%; + margin-top: -18px; + width: 36px; + height: 36px; + line-height: 36px; + text-align: center; + font-size: 20px; + border: 0; + border-radius: 50%; + background-color: rgba(0, 0, 0, 0.2); + color: #fff; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + cursor: pointer; +} + +.layui-carousel-arrow[lay-type="add"] { + left: auto !important; + right: 10px; +} + +.layui-carousel:hover .layui-carousel-arrow[lay-type="add"], +.layui-carousel[lay-arrow="always"] .layui-carousel-arrow[lay-type="add"] { + right: 20px; +} + +.layui-carousel[lay-arrow="always"] .layui-carousel-arrow { + opacity: 1; + left: 20px; +} + +.layui-carousel[lay-arrow="none"] .layui-carousel-arrow { + display: none; +} + +.layui-carousel-arrow:hover, +.layui-carousel-ind ul:hover { + background-color: rgba(0, 0, 0, 0.35); +} + +.layui-carousel:hover .layui-carousel-arrow { + display: block\9; + opacity: 1; + left: 20px; +} + +.layui-carousel-ind { + position: relative; + top: -35px; + width: 100%; + line-height: 0 !important; + text-align: center; + font-size: 0; +} + +.layui-carousel[lay-indicator="outside"] { + margin-bottom: 30px; +} + +.layui-carousel[lay-indicator="outside"] .layui-carousel-ind { + top: 10px; +} + +.layui-carousel[lay-indicator="outside"] .layui-carousel-ind ul { + background-color: rgba(0, 0, 0, 0.5); +} + +.layui-carousel[lay-indicator="none"] .layui-carousel-ind { + display: none; +} + +.layui-carousel-ind ul { + display: inline-block; + padding: 5px; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 10px; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; +} + +.layui-carousel-ind li { + display: inline-block; + width: 10px; + height: 10px; + margin: 0 3px; + font-size: 14px; + background-color: @global-neutral-color-3; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 50%; + cursor: pointer; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; +} + +.layui-carousel-ind li:hover { + background-color: rgba(255, 255, 255, 0.7); +} + +.layui-carousel-ind li.layui-this { + background-color: #fff; +} + +.layui-carousel > [carousel-item] > .layui-carousel-next, +.layui-carousel > [carousel-item] > .layui-carousel-prev, +.layui-carousel > [carousel-item] > .layui-this { + display: block; +} + +.layui-carousel > [carousel-item] > .layui-this { + left: 0; +} + +.layui-carousel > [carousel-item] > .layui-carousel-prev { + left: -100%; +} + +.layui-carousel > [carousel-item] > .layui-carousel-next { + left: 100%; +} + +.layui-carousel > [carousel-item] > .layui-carousel-next.layui-carousel-left, +.layui-carousel > [carousel-item] > .layui-carousel-prev.layui-carousel-right { + left: 0; +} + +.layui-carousel > [carousel-item] > .layui-this.layui-carousel-left { + left: -100%; +} + +.layui-carousel > [carousel-item] > .layui-this.layui-carousel-right { + left: 100%; +} + +.layui-carousel[lay-anim="updown"] .layui-carousel-arrow { + left: 50% !important; + top: 20px; + margin: 0 0 0 -18px; +} + +.layui-carousel[lay-anim="updown"] > [carousel-item] > *, +.layui-carousel[lay-anim="fade"] > [carousel-item] > * { + left: 0 !important; +} + +.layui-carousel[lay-anim="updown"] .layui-carousel-arrow[lay-type="add"] { + top: auto !important; + bottom: 20px; +} + +.layui-carousel[lay-anim="updown"] .layui-carousel-ind { + position: absolute; + top: 50%; + right: 20px; + width: auto; + height: auto; +} + +.layui-carousel[lay-anim="updown"] .layui-carousel-ind ul { + padding: 3px 5px; +} + +.layui-carousel[lay-anim="updown"] .layui-carousel-ind li { + display: block; + margin: 6px 0; +} + +.layui-carousel[lay-anim="updown"] > [carousel-item] > .layui-this { + top: 0; +} + +.layui-carousel[lay-anim="updown"] > [carousel-item] > .layui-carousel-prev { + top: -100%; +} + +.layui-carousel[lay-anim="updown"] > [carousel-item] > .layui-carousel-next { + top: 100%; +} + +.layui-carousel[lay-anim="updown"] + > [carousel-item] + > .layui-carousel-next.layui-carousel-left, +.layui-carousel[lay-anim="updown"] + > [carousel-item] + > .layui-carousel-prev.layui-carousel-right { + top: 0; +} + +.layui-carousel[lay-anim="updown"] + > [carousel-item] + > .layui-this.layui-carousel-left { + top: -100%; +} + +.layui-carousel[lay-anim="updown"] + > [carousel-item] + > .layui-this.layui-carousel-right { + top: 100%; +} + +.layui-carousel[lay-anim="fade"] > [carousel-item] > .layui-carousel-next, +.layui-carousel[lay-anim="fade"] > [carousel-item] > .layui-carousel-prev { + opacity: 0; +} + +.layui-carousel[lay-anim="fade"] + > [carousel-item] + > .layui-carousel-next.layui-carousel-left, +.layui-carousel[lay-anim="fade"] + > [carousel-item] + > .layui-carousel-prev.layui-carousel-right { + opacity: 1; +} + +.layui-carousel[lay-anim="fade"] + > [carousel-item] + > .layui-this.layui-carousel-left, +.layui-carousel[lay-anim="fade"] + > [carousel-item] + > .layui-this.layui-carousel-right { + opacity: 0; +} diff --git a/src/component/carousel/index.ts b/src/component/carousel/index.ts index 5511c18f..389b5c17 100644 --- a/src/component/carousel/index.ts +++ b/src/component/carousel/index.ts @@ -5,4 +5,4 @@ Component.install = (app: App) => { app.component(Component.name, Component); }; -export default Component; +export default Component; \ No newline at end of file diff --git a/src/component/carousel/index.vue b/src/component/carousel/index.vue index a75352e3..ee80d0f5 100644 --- a/src/component/carousel/index.vue +++ b/src/component/carousel/index.vue @@ -6,7 +6,8 @@ export default {