Element UI 走马灯高度自适应

本文介绍了如何在Element UI的走马灯组件中实现高度自适应,避免固定高度设置。通过监听窗口宽度变化,计算图片高度与网站宽度的百分比,设置走马灯高度为宽度的0.22倍,从而达到高度动态调整的效果。提供了一个简洁的VUE实现方法。
部署运行你感兴趣的模型镜像

Element UI走马灯中,通过属性height来设置高度,但是设置就是死的,不能自适应。要自适应需要监控窗口宽度的变化。

网上别人分享的太复杂了,这儿有简单的方法实现高度自适应。

首先,确定图片的最大高度

我的图片最大高度为270px,屏幕宽度超过container的宽度,这个值就不能再变化了。

首先计算图片高度和网站宽度的百分比,例如,内容区域最大宽度为1180px,图片高度为270px,270/1180约0.22

那么,只要宽度被改变,高度就变化为宽度的0.22倍即可

data中声明hdgd属性,作为高度变量

VUE添加mounted事件:

mounted() {
        let that = this;
        window.onresize = function windowResize() {
          // 通过捕获系统的onresize事件触发我们需要执行的事件
          var w = window.innerWidth
          var h = 270
          if (w > 1180) {
            h = 270
          } else {
            h = 0.22 * w
          }
          that.hdgd = h + 'px'
          console.log(that.hdgd)
        }
      }

 

完整代码:

图片和vue以及element自行引入

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- import CSS -->
    <link rel="stylesheet" href="lib/element-ui.css">
    <link rel="stylesheet" type="text/css" href="lib/css/index.css" />
  </head>
  <body>
    <div id="app">
      <header>Header</header>
      <el-container>
        <el-main>
          <el-row :gutter="10">
            <el-col :md="24">
              <el-carousel :type="cancard" indicator-position="outside" :height="hdgd">
                <el-carousel-item v-for="item in img" :key="item">
                  <img :src="'img/'+item+'.jpeg'" width="100%">
                </el-carousel-item>
              </el-carousel>
            </el-col>
            
          </el-row>
        </el-main>

      </el-container>
    </div>
  </body>
  <!-- import Vue before Element -->
  <script src="lib/vue.min.js"></script>
  <!-- import JavaScript -->
  <script src="lib/element-ui.js"></script>
  <script src="lib/template.js"></script>
  <script>
    var vue = new Vue({
      el: '#app',
      data: {
        show: true,
        hdgd: '270px',
        img: ['lb01', 'lb02', 'lb03']
      },
      computed: {
        cancard: () => {
          return ""
        }
      },
      methods: {},
      mounted() {
        let that = this;
        window.onresize = function windowResize() {
          // 通过捕获系统的onresize事件触发我们需要执行的事件
          var w = window.innerWidth
          var h = 270
          if (w > 1180) {
            h = 270
          } else {
            h = 0.22 * w
          }
          that.hdgd = h + 'px'
          console.log(that.hdgd)
        }
      }
    });
  </script>
</html>

来源:https://www.lovestu.com/elementuizmdzst.html

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### Element UI 走马灯组件自适应大小实现方法 #### 动态调整走马灯高度 为了使Element UI走马灯能够根据窗口宽度动态改变其高度,可以在`mounted()`生命周期钩子内注册一个处理函数用于响应浏览器窗口尺寸变化。每当检测到屏幕分辨率发生变动时,重新计算并更新走马灯容器的高度值[^3]。 ```javascript // Vue实例配置中的mounted部分 mounted() { const self = this; window.onresize = function () { let newHeight = calculateNewHeightBasedOnWindowWidth(); self.$refs.carousel.style.height = `${newHeight}px`; }; } ``` #### 图片加载完成后的回调机制 针对内部展示的内容如图片等资源,可以利用HTML原生特性——当图像完全载入后触发特定行为。这有助于确保即使初次渲染期间某些媒体尚未准备好也能及时作出相应调整[^2]。 ```html <el-carousel> <el-carousel-item v-for="(item, index) in items" :key="index"> <img :src="item.src" alt="" @load="handleImageLoaded"/> </el-carousel-item> </el-carousel> <script> export default { methods: { handleImageLoaded(event){ // 获取当前轮播项的实际高度,并应用给父级元素 const imgEl = event.target; const parentCarouselItem = imgEl.closest('.el-carousel__item'); parentCarouselItem.style.height = `${imgEl.naturalHeight}px`; } } }; </script> ``` #### 初始化设定默认比例关系 考虑到不同设备上的初始显示效果差异较大,建议预先定义好一套基于视窗宽高比的基础样式规则作为兜底方案。这样即便是在首次访问页面之前未有任何交互操作的情况下也能够呈现出较为合理的布局形态[^1]。 ```css .el-carousel__container { height: auto !important; /* 取消固定高度 */ } @media only screen and (min-width: 1180px) { .el-carousel__container { min-height: 270px!important ;/* 对于较宽屏保持最小限度内的稳定视觉呈现*/ } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值