当前位置: 首页 > news >正文

vue 走马灯 纵向滚动

背景:

走马灯纵向滚动,使用element的走马灯组件可能会出现显示不全的情况。如下图:

解决效果:

布局自适应

核心代码:

        <el-carousel
          style="width: 100%; height: 100%"
          :autoplay="true"
          :interval="5000"
          :direction="'vertical'"
          :motion-blur="true"
          :height="'42vh'"
        >
          <el-carousel-item
            v-for="(item, index) of state.shipList"
            :key="index"
          >
            <div class="contents">
              <div class="ship-img-box">
                <el-image
                  v-if="item.photo"
                  class="carousel-image"
                  :src="BASEUrl + '/file/' + item.photo"
                  :preview-src-list="[BASEUrl + '/file/' + item.photo]"
                  :initial-index="index"
                  :preview-teleported="true"
                  alt=""
                />
                <div class="umpty_box" v-else>暂无渡船照片</div>
              </div>
              <div class="ship-people-content">
                <div class="ship-name-status">
                  <p>
                    {{ item.cname || "--" }}
                  </p>
                  <p :style="{ color: item.color }">
                    {{ item.text }}
                  </p>
                </div>
                <div class="info-box">
                  <div class="row-box">
                    <p>
                      <span>船长/宽:</span>
                      <span
                        >{{ item.length || "--" }}m/{{
                          item.width || "--"
                        }}m</span
                      >
                    </p>
                    <p>
                      <span>总吨位:</span>
                      <span>{{ item.grossTonnage || "--" }}吨</span>
                    </p>
                  </div>
                  <div
                    class="row-box"
                    v-for="(aitem, aindex) of item.crewInfoList"
                    :key="aindex"
                  >
                    <p>
                      <span>船员:</span>
                      <span>{{ aitem.name || "--" }}</span>
                    </p>
                    <p>
                      <span>电话:</span>
                      <span>{{ aitem.photo || "--" }}</span>
                    </p>
                  </div>
                </div>
              </div>
              <div class="num-text-box">
                <p>准载客</p>
                <p>
                  {{ item.carryPassengersNum || "--" }}
                </p>
              </div>
            </div>
          </el-carousel-item>
        </el-carousel>

核心样式:

.contents {
  width: 100%;
  height: 98%;
  // background-color: pink;
  display: flex;
}
<style lang="scss" scoped>
:deep(.el-carousel__container) {
  height: 100% !important;
}
:deep(.el-carousel__item){
  box-sizing: border-box;
}
</style>

拖动窗口,字体、布局自适应,使用了vite.config.js的配置:

代码:

css: {
            preprocessorOptions: {
                scss: {
                    additionalData: `@import '/src/assets/css/global.scss';`,
                },
            },
            postcss: {
                plugins: [
                    postcssPxToViewport8Plugin({
                        unitToConvert: 'px',
                        viewportWidth: file => {
                            let num = 1920;
                            if (file.indexOf('m_') !== -1) {
                                num = 375;
                            }
                            return num;
                        },
                        unitPrecision: 5, // 单位转换后保留的精度
                        propList: ['*'], // 能转化为vw的属性列表
                        viewportUnit: 'vw', // 希望使用的视口单位
                        fontViewportUnit: 'vw', // 字体使用的视口单位
                        selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。
                        minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
                        mediaQuery: true, // 媒体查询里的单位是否需要转换单位
                        replace: true, //  是否直接更换属性值,而不添加备用属性
                        exclude: [/node_modules\/ant-design-vue/], // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
                        include: [], // 如果设置了include,那将只有匹配到的文件才会被转换
                        landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
                        landscapeUnit: 'vw', // 横屏时使用的单位
                        landscapeWidth: 1024, // 横屏时使用的视口宽度
                    }),
                ],
            },
        },

 

相关文章:

  • redis 延迟双删
  • 如何理解神经网络中的BatchNorm实现了类似于正则化的效果?
  • 为 Kubernetes 提供智能的 LLM 推理路由:Gateway API Inference Extension 深度解析
  • 【特权FPGA】之按键消抖
  • 自动驾驶时间同步
  • vue3 开发电子地图功能
  • Daz3D角色UE5材质优化
  • 解锁塔能科技,开启工厂绿色转型与可持续发展双引擎
  • 基于 OpenHarmony 5.0 的星闪轻量型设备应用开发-Ch1 开发环境搭建
  • 0201概述-机器学习-人工智能
  • go-zero自动生成repository文件和测试用例
  • 无人机击落技术难点与要点分析!
  • 探索 OpenHarmony 开源硬件的学习路径:从入门到实战的全攻略
  • 14. git clone
  • MySQL 架构设计:数据库的“城市规划指南“
  • ubuntu18.04安装miniforge3
  • 基于Python的网络爬虫技术研究
  • OpenBayes 一周速览|1分钟生成完整音乐,DiffRhythm人声伴奏一键搞定; Stable Virtual Camera重塑3D视频创作
  • 按键消抖(用状态机实现)
  • Elasticsearch 学习规划
  • 没有平台没有网站怎么做外贸/郑州网站seo服务
  • 长沙城乡住房建设厅网站/优化网站打开速度
  • 怎么用node做动态网站/一级造价工程师
  • 广东网站设计品牌设计/网站整站优化公司
  • 网站发展/网站友情链接检测
  • 有几个网站如何做外贸/南昌网站建设