Vue 父組件向子組件動態傳style樣式


父組件:

DOM部分

 <el-table-column prop="img" :label="label" width="180">
        <template slot-scope="scope">
          <div class="img-wrap">
            <img v-lazy="scope.row.album.picUrl" alt="" />
            <PlayIcon :style="out-style" :inner-size="size"></PlayIcon>
          </div>
        </template>
</el-table-column>

script部分:

import PlayIcon from '@/base/playIcon';  //引入子組件
export default {
  props: ['data'],
  components: { PlayIcon },
  data() {
    return {
      label: '',
      tableData: [],
      outStyle: { width: '24px', height: '24px' }, innerSize: { fontSize: '14px' }
    };
  },
  computed: {}
};

子組件:

<template>
  <div
    class="player-icon"
    :style="{
      width: outStyle.width,
      height: outStyle.height,
      lineHeight: outStyle.height
    }"
  >
    <span
      class="iconfont icon-yousanjiao"
      :style="{ fontSize: innerSize.fontSize }"
    ></span>
  </div>
</template>
<script>
export default {
 // 這種方式生效了
   props: ['outStyle', 'innerSize'],
 
 // 這種方式沒生效,不知道為什么
  // props: {
  //   outStyle: {
  //     type: Object,
  //     default: () => {
  //       return {
  //         width: '24px',
  //         height: '24px'
  //       };
  //     }
  //   },
  //   innerSize: {
  //     type: Object,
  //     default: () => {
  //       return {
  //         fontSize: '14px'
  //       };
  //     }
  //   }
  // },
  created() {},
  data() {
    return {};
  }
};
</script>
<style lang="scss">
.player-icon {
  @include abs-center();
  @include round(2.142857rem);
  border-radius: 50%;
  background-color: rgba($color: #fff, $alpha: 0.5);
  text-align: center;
  line-height: 24px;
  span {
    // display: inline-block;
    // margin: auto;
    // font-size: 1.428571rem;
    color: $theme-color;
  }
}
</style>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM