Skip to content
目录

card

卡片组件(注意本身设计是为了大屏设计的,如果需要使用需要提前设置父容器布局(宽高))

使用方式

html
<script type="module" src="https://cdn.jsdelivr.net/npm/webzen-ui/src/component/wz-card/index.js"></script>


<div style="display:flex;width:100%;height:100px">
    <wz-card style="flex:1;margin:0px 10px" header-config='{
        cardTitleColor: " rgba(255, 255, 255, 1)",
        fontColor: "black"
    }' body-config='{
        cardBodyColor: "rgba(255, 255, 255, 1)",
    }'>
        <div slot="card_header_left">
            头部左边
        </div>
        <div slot="card_container">
            <div >测试数据</div>
        </div>
    </wz-card>
    <wz-card style="flex:1;margin:0px 10px" header-config='{
        cardTitleColor: " rgba(255, 255, 255, 1)",
        fontColor: "black"
    }' body-config='{
        cardBodyColor: "rgba(255, 255, 255, 1)",
    }'>
        <div slot="card_header_left">
            头部左边
        </div>
        <div slot="card_container">
            <div >测试数据</div>
        </div>
    </wz-card>
    <wz-card style="flex:1;margin:0px 10px" header-config='{
        cardTitleColor: " rgba(255, 255, 255, 1)",
        fontColor: "black"
    }' body-config='{
        cardBodyColor: "rgba(255, 255, 255, 1)",
    }'>
        <div slot="card_header_left">
            头部左边
        </div>
        <div slot="card_container">
            <div >测试数据</div>
        </div>
    </wz-card>
</div>

传参

wz-card 可以传入 两个参数 header-config 和 body-config,

header-config格式如下

js
interface headerConfigType {
  cardTitleTargetColor?: string
  cardTitleColor: string
  fontColor: string
}

如果 cardTitleTargetColor 不传入就是 纯色,不然就是多色

body-config格式如下

js
interface bodyConfigType {
  cardBodyColor?: string
}

如果 cardBodyColor 不传那么就是透明的

示例

html
<wz-card header-config='{
            cardTitleTargetColor: " rgba(44, 123, 76, 0)",
            cardTitleColor: " rgba(44, 123, 76, 0.81)",
            fontColor: "white"
        }' body-config='{
            cardBodyColor: "rgba(0, 0, 0, 0.5)",
        }'>
      <div slot="card_header_left">
          头部左边
      </div>
      
      <div slot="card_container">
          <div >2</div>
      </div>
</wz-card>

插槽

提供了三个插槽,用户在分别在 wz-card 标签内部添加 slot = card_header_left | card_header_right | card_container 就可以使用

伸缩框

拿到 wz-card 这个实例然后 执行 switchActive()就可以了

html
<script type="module" src="https://cdn.jsdelivr.net/npm/webzen-ui/src/component/wz-card/index.js"></script>

<div style="height: 100px;width:300px">
        <wz-card  class="wz-card" header-config='{
            cardTitleColor: " rgba(255, 255, 255, 1)",
            fontColor: "black"
        }' body-config='{
            cardBodyColor: "rgba(255, 255, 255, 1)",
        }'>
            <div slot="card_header_left">
                头部左边
            </div>
            <div slot="card_header_right">
                <i id="open" class="fa fa-arrows" style="color: rgb(75, 90, 75);" onclick=""></i>
            </div>
            <div slot="card_container">
                <div >测试数据</div>
                <div >测试数据</div>
                <div >测试数据</div>
                <div >测试数据</div>
            </div>
        </wz-card>
       
</div>

<script type="module">

    document.querySelectorAll("#open").forEach((e)=>{
        e.addEventListener("click",(el)=>{  
            e.parentElement.parentElement.switchActive()
        })
    })
</script>

基本大屏布局示例(pc | mobile)

目前最佳实践是 在 pc端用grid 然后移动端用 flex,适配可以看到@media

1
2
3
4
5
6
7
8
html
<style>
    .layout {
        width: 100%;
        height: 400px;
    }

    .card_container {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        grid-template-rows: 1fr 1fr 1fr;
        gap: 10px;
        width: 100%;
        height: 100%;
        margin: 0 auto;
    }

    .container_item {
        background: #00ffe4;
    }

    .container_item:nth-child(2) {
        background: #c51313;
        /* 横着排列 */
        grid-column: 2 / span 1;
        /* 竖着排列 */
        grid-row: 1 / span 2;
    }

    @media screen and (max-width:1000px) {
        .card_container {
            display: flex;
            /* width: 60%; */
            flex-direction: column;

        }
        .layout {
            margin: 0 auto;
            width: 100%;
            height: 400vh;
        }
        .container_item {
            flex: 1;

        }
    }
</style>

<div class="layout">
    <div class="card_container">
      <div class="container_item">1</div>
      <div class="container_item">2</div>
      <div class="container_item">3</div>
      <div class="container_item">4</div>
      <div class="container_item">5</div>
      <div class="container_item">6</div>
      <div class="container_item">7</div>
      <div class="container_item">8</div>
    </div>
</div>

现在我们就可以直接把大屏放进去

4
5
6
7
8
html
<style>
      .layout {
          width: 100%;
          height: 400px;
      }

      .card_container {
          display: grid;
          grid-template-columns: 1fr 1fr 1fr;
          grid-template-rows: 1fr 1fr 1fr;
          gap: 10px;
          width: 100%;
          height: 100%;
          margin: 0 auto;
      }

      .container_item_card {
         
      }

      .container_item_card:nth-child(2) {
          
          /* 横着排列 */
          grid-column: 2 / span 1;
          /* 竖着排列 */
          grid-row: 1 / span 2;
      }

      @media screen and (max-width:1000px) {
          .card_container {
              display: flex;
              /* width: 60%; */
              flex-direction: column;

          }
          .layout {
              margin: 0 auto;
              width: 100%;
              height: 400vh;
          }
          .container_item_card {
              /* flex: 1; */
              /* height:auto */
          }
          #card_container {
              height:100px
          }
      }
</style>

<div class="layout">
    <div class="card_container">
        <div class="container_item_card">
        <wz-card  header-config='{
                    cardTitleTargetColor: " rgba(44, 123, 76, 0)",
                    cardTitleColor: " rgba(44, 123, 76, 0.81)",
                    fontColor: "white"
                }' body-config='{
                    cardBodyColor: "rgba(0, 0, 0, 0.5)",
                }'>
              <div slot="card_header_left">
                  劳务管理
              </div>
               <div slot="card_header_right">
              <i id="open" class="fa fa-arrows" style="color: rgb(75, 90, 75);" onclick=""></i>
          </div>
              <div id="card_container" slot="card_container">
                  <div >2</div>
              </div>
        </wz-card>
        </div>
        <div class="container_item_card">
          <wz-card header-config='' body-config=''>
                <div slot="card_header_left">
                    ai管理
                </div>
                <div id="card_container" slot="card_container">
                    <div >2</div>
                </div>
          </wz-card>
        </div>
        <div class="container_item_card">
          <wz-card header-config='' body-config=''>
                <div slot="card_header_left">
                    视频管理
                </div>
                <div id="card_container" slot="card_container">
                    <div >2</div>
                </div>
          </wz-card>
        </div>
        <div class="container_item_card">4</div>
        <div class="container_item_card">5</div>
        <div class="container_item_card">6</div>
        <div class="container_item_card">7</div>
        <div class="container_item_card">8</div>
    </div>

</div>

MIT License.