Ant Design Vue 走马灯实现单页多张图片轮播

最近的项目有个需求是,这种单页多图一次滚动一张图片的轮播效果,项目组件库是antd、vue3

 

然而用了antd的走马灯是这样子的

 我们可以看到官网给的api是没有这种功能,百度上也多是在css上动刀,那样也就毕竟繁琐了,我们是什么?我们是程序猿啊,程序猿就该有程序猿的样子,怎么能写繁琐的东西呢,那还怎么为公司项目提高效率!!!

奈何内容太多看得我眼花缭乱,最后通过我看字面意思一个个尝试,功夫不负有心人,就是它啦去吧皮卡丘

:slides-to-show="5"//单页展示5张图片 :slides-to-scroll="1" //每次滚动1张图
<template>
  <div class="layoutFootBottoms" id="Footer">
      <a-carousel arrows :dots="false" :autoplay="false"  :slides-to-show="6" :slides-to-scroll="1">
        <template #prevArrow>
          <div class="custom-slick-arrow" style="left: 10px; z-index: 1">
            <img src="../assets/img/recommend_left.png" alt="">
          </div>
        </template>
        <template #nextArrow>
          <div class="custom-slick-arrow" style="right: 20px">
            <img src="../assets/img/recommend_right.png" alt="">
          </div>
        </template>
          <div v-for="(item,index) in layoutHeaderRs" :key="item.key">
              <div @click="clickModal(item.titleText)"  class="layoutfootTogethers" style="align-items: center;witdh:288px;padding:60px">
                  <div class="layoutHeaderRs_footIamgs">
                    <img  :src="item.url" alt=""  />
                  </div>
                  <h2 class="layoutfootTextCor">{{item.titleText }}</h2>
              </div>
          </div>
      </a-carousel>

      <div class="common-layout-footer-text">
        Copyright2023   华宝都鼎(上海)融资租赁有限公司   版权所有
      </div>
            
       <div class="addappliactionModal">
          <a-modal
              v-model:visible="visible"
              title="添加至我的平台"
              centered
              :confirm-loading="confirmLoading"
              @ok="handleOk"
            >
                  <div class="addappliactionF" >
                    <a-checkbox
                      v-model:checked="checkAll"
                      :indeterminate="indeterminate"
                      @change="onCheckAllChange"
                      style="width:14%"
                    >
                    全部
                    </a-checkbox>
                    <a-checkbox-group v-model:value="checkedList" :options="plainOptions" style="width: 70%;margin-left:1rem">
                        <a-row>
                          <template v-for="option in plainOptions">
                            <a-col :span="8">
                              <a-checkbox :value="option">{{ option }}</a-checkbox>
                            </a-col>
                          </template>
                        </a-row>
                    </a-checkbox-group>
                  </div>
          </a-modal>
       </div>
  </div>
</template>
<script >
import {ref, defineComponent, reactive, toRefs, watch } from 'vue';
import getAssetURL from "@/utils/publicuse.js";
const  plainOptions = ['大单租赁', '投资核心系统', 'CRM','数据中心','智慧报告','小微租赁'];
const  layoutHeaderRs= [ { key: "1",url: getAssetURL("financeLeasing.png"), titleText:"大单租赁"},
        {key: "2", url: getAssetURL("investCoresystem.png"), titleText:"投资核心系统"},
        { key: "3",url: getAssetURL("crmSystem.png"),titleText:"CRM"},
        {key: "4",url: getAssetURL("dataCenter.png"),titleText:"数据中心" },
        {key: "5",url: getAssetURL("wisdomReports.png"),titleText:"智慧报告"},
        {key: "6",url: getAssetURL("add_application.svg"),titleText:"我的应用" },
       ]
export default defineComponent({
  setup() {
    const modalText = ref("Content of the modal");
    const visible = ref(false);
    const confirmLoading = ref(false);
    const state = reactive({
      indeterminate: true,
      checkAll: false,
      checkedList: ['大单租赁', '投资核心系统', 'CRM','数据中心','智慧报告','小微租赁'],
    });

    const clickModal =(application)=>{
      console.log(application);
      if(application=='我的应用'){
        visible.value = true;
      }
    }
    const onCheckAllChange = e => {
      Object.assign(state, {
        checkedList: e.target.checked ? plainOptions : [],
        indeterminate: false,
      });
    };
    const handleOk = () => {
        modalText.value = "The modal will be closed after two seconds";
        confirmLoading.value = true;
        setTimeout(() => {
          visible.value = false;
          confirmLoading.value = false;
        }, 2000);
      };
    watch(() => state.checkedList, val => {
      state.indeterminate = !!val.length && val.length < plainOptions.length;
      state.checkAll = val.length === plainOptions.length;
    });
    return {
      ...toRefs(state),
      visible,
      confirmLoading,
      handleOk,
      plainOptions,
      layoutHeaderRs,
      onCheckAllChange,
      clickModal
    };
  },
});
</script>

<style scoped lang="less">
:deep .slick-slide slick-active slick-cloned {
  width:0px;
}
.layoutHeaderRs_footIamgs {
  width: 10rem;
  height:10rem;
  margin-left: 1.2rem;
  margin-bottom: 1.5rem;
  cursor: pointer;
  img {
    width: 100%;
    height: 100%;
  }
  &:hover,
  &.active {
    border: 2px solid #27ba9b;
  }
}


.layoutFootBottoms{
  width: 100vw;
  position: fixed;
  bottom: 0;
  
}
/* For demo */
.ant-carousel :deep(.slick-slide) {
  text-align: center;
  background: #fdfdfd;
  overflow: hidden;
}

.ant-carousel :deep(.slick-arrow.custom-slick-arrow) img {
  width: 2.5rem;
  height:  2.5rem;
  font-size:  3.5rem;
  // color: #fff;
  // background-color: rgba(31, 45, 61, 0.11);
  // opacity: 1;  
  // z-index: 1;
}
// .ant-carousel :deep(.custom-slick-arrow:before) {
//   background: #EEEEEE;
//   box-shadow: 1px 0 3px 0 rgba(218,218,218,0.70);
//   display: none;
// }
.ant-carousel :deep(.custom-slick-arrow:hover) {
  // opacity: 0.5;
  // background: #EEEEEE;
  // box-shadow: 1px 0 3px 0 rgba(218,218,218,0.70);
}

// .ant-carousel :deep(.slick-slide h3) {
//   color: #fff;
// }
.layoutfootTextCor{
  font-family: MicrosoftYaHei-Bold;
  font-size: 12px;
  color: #232323;
  text-align: center;
  font-weight: 700;
  position: absolute;
  margin-top: 12rem;
}
// .layoutfootTextCor1{
//   font-family: MicrosoftYaHei-Bold;
//   font-size: 12px;
//   color: #fff;
//   text-align: center;
//   font-weight: 700;
//   position: absolute;
//   margin-top: 12rem;
// }
:deep .layoutfootTogethers{
  display: flex;
  justify-content: center;
  height: 16.5rem;
  cursor: pointer;
  background-image: linear-gradient(225deg, #FFFFFF 0%, #F7F7F7 100%);
  border: 1px solid #ECECEC;
  // background-image: linear-gradient(227deg, #EF3856 0%, #B30031 100%);
  // box-shadow: 0 0 6px 0 #6C081C;
}
// :deep .layoutHeaderRs_footIamgs1{
//   height:23rem;
//   img {
//     width: 100%;
//     height: 100%;
//   }
//   display: flex;
//   justify-content: center;
//   position: absolute;
//   background-image: linear-gradient(227deg, #EF3856 0%, #B30031 100%);
//   box-shadow: 0 0 6px 0 #6C081C;
// }

.common-layout-footer-text{
  height: 4.4rem;
  line-height: 4.4rem;
  background: #ffffff;
}
:deep  .ant-checkbox-group-item {
  margin-right: .8rem;
  margin-bottom: 2.8rem;
}

/deep/ .addappliactionModal  :deep(.ant-modal-content) {
    position: relative;
    background-clip: padding-box;
    box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
    pointer-events: auto;
    background: #F4F4F5 ;
    border: 5px solid rgba(0,0,0,0.26) ;
    border-radius: 10p ;
}
.addappliactionF{
  display:flex;
  padding:20px;
  background: #FFFFFF;
  border: 1px solid #C8C8C8;
  border-radius: 12px;
}
</style>
最后来个效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/33118.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

测试Hyperledger Fabric环境

首先进入fabric-samples目录中的first-networked 子目录 cd fabric-samples/first-network 在first-network目录下有一个自动化脚本byfn.sh,可以使用-help参数查看相应的可 用命令&#xff0c;在命令提示符中输入如下命令&#xff1a; ./byfn.sh --help命令执行成功后&#…

力扣 106. 从中序与后序遍历序列构造二叉树

题目来源&#xff1a;https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/ C题解&#xff1a;中序遍历是左中右&#xff0c;后序遍历是左右中&#xff0c;所以拿到两个遍历数组&#xff0c;我们可以从后序遍历获取中间节点…

西安石油大学期末考试C++真题解析

1、一、类型、返回值类型 二、参数表、函数重载 2、一、实例化 二、实例化的类型或类类是对象的蓝图&#xff0c;对象是类的实例化 3、const 4、一个 两个 5、一、公有继承 二、私有继承、保护继承 6、抽象类、实例化对象 7、函数模板、类模板 8、try、catch、throw 9、…

SpringBoot初始化接口CommandLineRunner

CommandLineRunner的使用 接口定义使用执行顺序使用 Order 注解实现Orderd接口排序总结 接口定义 Spring官方给出的接口定义 package org.springframework.boot;FunctionalInterface public interface CommandLineRunner {void run(String... args) throws Exception; }在 Sp…

Facebook如何与品牌合作,提升用户体验?

Facebook是全球最大的社交媒体平台之一&#xff0c;每天有数亿用户在上面发布内容、互动交流。对于品牌来说&#xff0c;与Facebook合作可以帮助它们扩大影响力、吸引更多潜在客户。 但是&#xff0c;与Facebook合作不仅仅是在平台上发布广告&#xff0c;还需要更深入的合作来…

如何在 Spring Boot 中使用反向代理

如何在 Spring Boot 中使用反向代理 介绍 在分布式系统中&#xff0c;反向代理是一项非常重要的技术。通过反向代理&#xff0c;可以将客户端的请求转发到后端的多台服务器上&#xff0c;实现负载均衡和故障转移等功能。本文将介绍如何在 Spring Boot 应用中使用反向代理。 环…

Flink DataStream之创建执行环境

新建project&#xff1a; pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

iMazing 2.16官方下载使用起来安全吗?

鉴于苹果设备的封闭性与安全性&#xff0c;我们大部分情况下都需要搭配iTunes进行设备的管理。但作为一款全方位的iOS设备管理软件&#xff0c;iMazing竟然可以突破iTunes的限制&#xff0c;与设备直接连接&#xff0c;进行备份、管理等操作。 因此&#xff0c;很多人都会有疑…

OpenStack(T版)——块存储(Cinder)服务介绍与安装

文章目录 OpenStack(T版)——块存储(Cinder)服务介绍与安装安装和配置(controller)准备(1)创建数据库(2)加载admin user的环境变量(3)创建Identity服务凭据(4)创建Cinder 块存储服务组件的API endpoint 安装和配置Cinder块存储服务组件(1)安装软件包(2)编辑/etc/cinder/cinder.…

【Java可执行命令】(三)API文档生成工具javadoc: 深入解析Java API文档生成工具javadoc ~

Java可执行命令详解之javadoc 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.1.1 可选参数&#xff1a;-d < directory>3.1.2 可选参数&#xff1a;-sourcepath < pathlist>3.1.3 可选参数&#xff1a;-classpath < pathlist>3.1.4 可选参数&#xff1…

工业RFID在自动化控制中的解决方案

在工业自动化控制领域中&#xff0c;利用RFID技术可以对物品、设备和工具的进行追踪&#xff0c;可以有效提高生产效率和管理水平。下面我们就一起来了解一下&#xff0c;RFID在工业自动化控制中的解决方案是什么样的。 工业RFID在自动化控制中的解决方案 在工业生产过程中&a…

使用 Jetpack Compose 构建 LinearProgressIndicator

欢迎阅读这篇关于如何使用 Jetpack Compose 构建 LinearProgressIndicator&#xff08;线性进度指示器&#xff09;的博客。Jetpack Compose 是 Google 推出的一款现代化 UI 工具包&#xff0c;用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。 什么是 Line…

AQS之Semaphore详解

AQS之Semaphore详解 一、Semaphore类的继承关系1. AbstractQueuedSynchronizer:提供了一个同步器的框架。2. Sync&#xff1a;Semaphore的内部类&#xff0c;提供了锁的具体实现。3. FairSync&#xff1a;Sync的子类&#xff0c;实现公平锁。4. NonfairSync:Sync的子类&#xf…

ARHUD驾车导航技术概览

ARHUD(Augmented Reality Head Up Display)&#xff0c;即增强现实与抬头显示的结合&#xff0c;是一种将渲染元素投影在真实世界的技术&#xff0c;也是目前用户理解成本最低的展示方式。 HUD功能第一次应用是在二战中&#xff0c;被应用在枪械和战斗机上&#xff0c;80年代初…

React hooks文档笔记(三) 状态

状态 一、如何设计组件状态的步骤二、状态构造原则1. 组相关状态2. 避免矛盾/互斥状态3. 避免多余状态4. 不要把props放进state&#xff0c;除非你特别想要阻止更新 三、状态保存/重置1. 相同位置的相同组件保留状态2. 同一位置不同元素reset状态 一、如何设计组件状态的步骤 …

组装电脑U盘重装Win10系统教程图解

当您需要对组装电脑进行重新安装Win10操作系统时&#xff0c;使用U盘是一种方便而有效的方法&#xff0c;U盘重装系统不仅可以帮助您解决各种系统问题&#xff0c;还能提供一个干净、稳定的系统环境。无论您是初学者还是有一定经验的用户&#xff0c;本教程将提供清晰的组装电脑…

游戏革命2023:AIGC拯救游戏厂商

文明史即工具史&#xff0c;纵观人类社会的演化&#xff0c;每一次的加速迭代&#xff0c;都有赖于关键性的技术突破。 前有蒸汽机到电力普及的生产力大爆发&#xff0c;以及计算机、互联网的诞生打开新世界&#xff0c;如今AIGC将再次推动先进技术工具的变革。 随着ChatGPT的…

观察者模式(二十)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了迭代器模式(十九), 如果没有看过, 请观看上一章 一. 观察者模式 引用 菜鸟教程里面 观察者模式介绍: https://www.runoob.com/design-pattern/observer-pattern.html 当对象间存在一对多关系时&#xff0c;则使用观察…

CSS之定位

作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 1.定位模式&#xff1a;position 2.边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 相对定位 position: relative 特点&#xff1a; 不脱标&#xff0c;占用自己原来位置显示模式特点保持不变设…

OpenStack(4)--NameSpace实现不同项目(租户)重叠网段

openstack通过namespace将不同项目&#xff08;租户&#xff09;的网络隔离&#xff0c;每个项目的管理员都需要对项目网络进行规划建设&#xff0c;这就导致不同项目之间会重复使用到某些网段&#xff0c;例如192.168.X.X就是管理员习惯使用的网段。 上一次我们新建位于vxlan…
最新文章