zoukankan      html  css  js  c++  java
  • Vue使用Element-ui走马灯功能动态改变图片和容器大小

      在Vue项目开发中,发现使用Element的走马灯功能实例中

    <template>
      <div class="block">
        <span class="demonstration">默认 Hover 指示器触发</span>
        <el-carousel height="150px">
          <el-carousel-item v-for="item in 4" :key="item">
            <h3 class="small">{{ item }}</h3>
          </el-carousel-item>
        </el-carousel>
      </div>
      <div class="block">
        <span class="demonstration">Click 指示器触发</span>
        <el-carousel trigger="click" height="150px">
          <el-carousel-item v-for="item in 4" :key="item">
            <h3 class="small">{{ item }}</h3>
          </el-carousel-item>
        </el-carousel>
      </div>
    </template>
    
    <style>
      .el-carousel__item h3 {
        color: #475669;
        font-size: 14px;
        opacity: 0.75;
        line-height: 150px;
        margin: 0;
      }
    
      .el-carousel__item:nth-child(2n) {
         background-color: #99a9bf;
      }
      
      .el-carousel__item:nth-child(2n+1) {
         background-color: #d3dce6;
      }
    img{
    width:100%;
    }
    </style>

      由于img的宽度设置了100%,所以高度会根据图片来自动调整,但当浏览器的大小发生改变,会出现图片下面出现空白现象,如果固定img的高度,那么图片就可以会随浏览器的变化发生变形。

      

       图片下面出现空白现象

        图片就可以会随浏览器的变化发生变形

      这个时候可以通过动态设置父级容器的高度来解决这个问题,代码如下

    <template>
        <div id="banner">
          <!--动态将图片轮播图的容器高度设置成与图片一致-->
          <el-carousel :height="bannerHeight + 'px'" >
            <!--遍历图片地址,动态生成轮播图-->
            <el-carousel-item v-for="item in img_list" :key="item">
              <img :src="item" alt="">
            </el-carousel-item>
          </el-carousel>
        </div>
    </template>
    
    <script>
        export default {
            name: "Banner",
            data(){
              return{
                // 图片地址数组
                img_list:[
                  "/static/image/111.png",
                  "/static/image/222.png",
                  "/static/image/333.png",
                  "/static/image/444.png",
                ],
                // 图片父容器高度
                bannerHeight :1000,
                // 浏览器宽度
                screenWidth :0,
              }
            },
            methods:{
              setSize:function () {
                // 通过浏览器宽度(图片宽度)计算高度
                this.bannerHeight = 400 / 1920 * this.screenWidth;
              },
            },
          mounted() {
              // 首次加载时,需要调用一次
              this.screenWidth =  window.innerWidth;
              this.setSize();
              // 窗口大小发生改变时,调用一次
              window.onresize = () =>{
              this.screenWidth =  window.innerWidth;
              this.setSize();
            }
          }
        }
    </script>
    
    <style scoped>
      .el-carousel__item h3 {
        color: #475669;
        font-size: 14px;
        opacity: 0.75;
        line-height: 300px;
        margin: 0;
      }
    
      .el-carousel__item:nth-child(2n) {
         background-color: #99a9bf;
      }
    
      .el-carousel__item:nth-child(2n+1) {
         background-color: #d3dce6;
      }
      img{
        /*设置图片宽度和浏览器宽度一致*/
         100%;
        height: inherit;
      }
    </style>
    

      

  • 相关阅读:
    014、BOM与DOM对象的应用
    013、BOM对象的应用
    001.JS特效
    开发技巧
    AndroidStudio中使用SVN
    AndroidStudio碰到的各种问题
    Activity的生命周期和启动模式
    03.Java多线程并发库API使用2
    php的memcache和memcached扩展区别
    js:关于IE6/7下new Date(值)输出为NaN的解决方案
  • 原文地址:https://www.cnblogs.com/mark--ping/p/11510660.html
Copyright © 2011-2022 走看看