element-ui走马灯实现图片自适应

elementUI走马灯实现图片自适应(等比缩放,使得图片缩小不挤压,放大不拉伸变形)

解决方法的原理:监听屏幕视口大小如果'resize',发生改变了,就获取图片的高度height,然后渲染到页面

ElementUI 地址: https://element.eleme.io/#/zh-CN/component/carousel

代码:

<el-carousel :interval="5000" arrow="always" :height="bannerHeight+'px'" style="border: 1px solid red;">
            <el-carousel-item v-for="item in 4" :key="item">
                <el-row :gutter="12">
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" style="height:340px;margin-bottom: 20px;">
                            <img ref="bannerHeight" src="../image/banner1.png" alt="" @load="imgLoad" style="width: 100%">
                    </el-col>
                </el-row>
            </el-carousel-item>
        </el-carousel>

        <div id="test-div" style="border: 5px solid red;background-color: antiquewhite;">当前高度:{{bannerHeight}}</div>

方法解析:

1.窗口第一次打开的时候加载执行 imgLoad()方法,第一次加载时获取图片在窗口中的高度,然后渲染到页面中去。

2.接着通过addEventListenner()方法监听视口是否发生改变,如果发生改变,重新调用imgLoad()方法渲染数据到页面,这样图片高度就可以随视口改变发生改变,适应各种大小屏幕。

代码:

 var app = new Vue({
        el: '#app',
        data() {
            return {
                bannerHeight:"",
            }
        },
        mounted(){
            this.imgLoad();
            window.addEventListener('resize',() => {
                this.bannerHeight=this.$refs.bannerHeight[0].height;
                this.imgLoad();
            },false)
        },
        methods: {
            imgLoad(){
                this.$nextTick(()=>{
                    this.bannerHeight=this.$refs.bannerHeight[0].height;
                    console.log(this.$refs.bannerHeight[0].height);
                     // document.getElementsByClassName拿到的是数组并非某一个对象
                    var testH=document.getElementById("test-div");
                    testH.style.height= this.bannerHeight+"px";
                })
            }
        }

    })

效果展示:

小屏幕状态:

全屏状态:

完整代码:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- 引入ElementUI  CDN -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <title>ElementUI 走马灯自适应</title>
</head>
<style type="text/css">
  
</style>

<body>
    <div id="app">


        <el-carousel :interval="5000" arrow="always" :height="bannerHeight+'px'" style="border: 1px solid red;">
            <el-carousel-item v-for="item in 4" :key="item">
                <el-row :gutter="12">
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" style="height:340px;margin-bottom: 20px;">
                            <img ref="bannerHeight" src="../image/banner1.png" alt="" @load="imgLoad" style="width: 100%">
                    </el-col>
                </el-row>
            </el-carousel-item>
        </el-carousel>

        <div id="test-div" style="border: 5px solid red;background-color: antiquewhite;">当前高度:{{bannerHeight}}</div>

    </div>

</body>
<!-- 引入vue组件库 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<!-- 引入ElementUI组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
    //注册使用vue
    var Vue = window.Vue;
    var app = new Vue({
        el: '#app',
        data() {
            return {
                bannerHeight:"",
            }
        },
        mounted(){
            this.imgLoad();
            window.addEventListener('resize',() => {
                this.bannerHeight=this.$refs.bannerHeight[0].height;
                this.imgLoad();
            },false)
        },
        methods: {
            imgLoad(){
                this.$nextTick(()=>{
                    this.bannerHeight=this.$refs.bannerHeight[0].height;
                    console.log(this.$refs.bannerHeight[0].height);
                     // document.getElementsByClassName拿到的是数组并非某一个对象
                    var testH=document.getElementById("test-div");
                    testH.style.height= this.bannerHeight+"px";
                })
            }
        }

    })

</script>

</html>

 

 

  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Fiori Elements 是一套基于SAP Fiori设计原则和模式的开发工具集。它提供了一套通用的UI元素和模板,帮助开发人员更快地构建现代化、响应式的用户界面。 Fiori Elements 的主要特点包括: 1. 可重用的UI元素:Fiori Elements 提供了一系列可重用的UI元素,例如列表、详细信息页、主从关系的页面等。开发人员可以根据业务需求选择并组合这些元素,快速构建出符合用户期望的界面。 2. 自动化数据处理:Fiori Elements 可以自动处理与后台数据的交互,包括数据读取、更新、删除等操作。这样,开发人员就可以专注于界面的设计和逻辑,而无需花费太多精力在数据处理上。 3. 灵活的扩展性:Fiori Elements 具有高度的扩展性,开发人员可以根据实际需求对界面进行个性化定制。同时,它也支持与其他SAP技术和工具的集成,提供了更多的扩展和定制选项。 4. 敏捷开发:Fiori Elements 提供了一种敏捷的开发方式,开发人员可以在短时间内快速构建出功能完备、美观易用的用户界面。这样可以加快开发速度,降低开发成本。 总之,Fiori Elements 是一种能够帮助开发人员快速构建出符合SAP Fiori设计原则和模式的用户界面的工具集。它的特点包括可重用的UI元素、自动化数据处理、灵活的扩展性和敏捷开发等。通过使用Fiori Elements,开发人员可以提升开发效率,并提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值