Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Widget:ProductCard: Difference between revisions

From LCD wiki
Created page with "<noinclude> == 参数说明 == * boxid 对象id, 默认值: product-card, 当需要在同一个页面上显示多个卡片时,需要保证boxid唯一 * themeColor 主题颜色, 默认值: #36a5e8 * images 图片数据, 必填 ** title 名称, 必填 ** src 图片链接, 必填 * chipsTitle 标签数据标题, 选填 * chips 标签数据, 选填 ** name 名称, chips有值时必填 ** url 跳转链接, 选填 * kvDatasTitle K-V数据标题, 选填 * kvDatas K-V数据,..."
 
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 6: Line 6:
** title 名称, 必填
** title 名称, 必填
** src 图片链接, 必填
** src 图片链接, 必填
** url 点击事件时的跳转链接, 选填
* chipsTitle 标签数据标题, 选填
* chipsTitle 标签数据标题, 选填
* chips 标签数据, 选填
* chips 标签数据, 选填
** name 名称, chips有值时必填
** name 名称, chips有值时必填
** url 跳转链接, 选填
** url 点击事件时的跳转链接, 选填
* kvDatasTitle K-V数据标题, 选填
* kvDatasTitle K-V数据标题, 选填
* kvDatas  K-V数据, 选填
* kvDatas  K-V数据, 选填
** key 名称, 必填
** key 名称, 必填
** value 值, 必填
** value 值, 必填
** url 跳转链接, 选填
** url 点击事件时的跳转链接, 选填
* liDataTitle 列表数据标题, 选填
* liDataTitle 列表数据标题, 选填
* liDatas 列表数据, 选填
* liDatas 列表数据, 选填
** name 名称, 必填
** name 名称, 必填
** url 跳转链接, 必填
** url 点击事件时的跳转链接, 必填
== 用法 ==
== 用法 ==
<pre><nowiki>
<pre><nowiki>
Line 26: Line 27:
     {
     {
       title: "CM4核心板",
       title: "CM4核心板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-1.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
      url: "http://www.lcdwiki.com/"
     },
     },
   ]
   ]
Line 33: Line 35:
     {
     {
       name: "DIS",
       name: "DIS",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:DSI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
     },
     },
     { name: "CSI", url: "" },
     { name: "CSI", url: "" },
Line 46: Line 48:
       key: "接口",
       key: "接口",
       value: "CSI",
       value: "CSI",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:CSI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com/",
     },
     },
   ]  
   ]  
Line 53: Line 55:
     {
     {
       name: "Raspberry Pi开发板",
       name: "Raspberry Pi开发板",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:Raspberry_Pi%E5%BC%80%E5%8F%91%E6%9D%BF",
       url: "http://www.lcdwiki.com/",
     },
     },
   ]
   ]
Line 65: Line 67:
     {
     {
       title: "CM4核心板",
       title: "CM4核心板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-1.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
      url: "http://www.lcdwiki.com"
     },
     },
     {
     {
       title: "官方底板",
       title: "官方底板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-IO-Board-2.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
     },
     },
     {
     {
       title: "官方底板外",
       title: "官方底板外",
       src: "https://www.waveshare.net/w/thumb.php?f=CM4-IO-BOARD-CASE-A-2.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
     },
     },
   ]
   ]
Line 80: Line 83:
     {
     {
       name: "DIS",
       name: "DIS",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:DSI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com",
     },
     },
     { name: "CSI", url: "" },
     { name: "CSI", url: "" },
Line 88: Line 91:
     {
     {
       name: "PECI",
       name: "PECI",
       url: "https://www.waveshare.net/w/index.php?title=%E5%88%86%E7%B1%BB:PCIE%E6%8E%A5%E5%8F%A3&action=edit&redlink=1",
       url: "http://www.lcdwiki.com",
     },
     },
     {
     {
       name: "SPI",
       name: "SPI",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:SPI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com",
     },
     },
     { name: "UART", url: "" },
     { name: "UART", url: "" },
Line 114: Line 117:
       key: "接口",
       key: "接口",
       value: "CSI",
       value: "CSI",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:CSI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com",
     },
     },
   ]  
   ]  
Line 121: Line 124:
     {
     {
       name: "Raspberry Pi开发板",
       name: "Raspberry Pi开发板",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:Raspberry_Pi%E5%BC%80%E5%8F%91%E6%9D%BF",
       url: "http://www.lcdwiki.com",
     },
     },
     {
     {
       name: "Pioneer600",
       name: "Pioneer600",
       url: "https://www.waveshare.net/wiki/Pioneer600",
       url: "http://www.lcdwiki.com",
     },
     },
   ]
   ]
Line 143: Line 146:
     {
     {
       title: "CM4核心板",
       title: "CM4核心板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-1.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
     },
     },
     {
     {
       title: "官方底板",
       title: "官方底板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-IO-Board-2.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
     },
     },
     {
     {
       title: "官方底板外",
       title: "官方底板外",
       src: "https://www.waveshare.net/w/thumb.php?f=CM4-IO-BOARD-CASE-A-2.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
     },
     },
   ]
   ]
Line 161: Line 164:
     {
     {
       title: "CM4核心板",
       title: "CM4核心板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-1.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
     },
     },
   ]
   ]
Line 182: Line 185:
       key: "接口",
       key: "接口",
       value: "CSI",
       value: "CSI",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:CSI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com",
     },
     },
   ]  
   ]  
Line 189: Line 192:
     {
     {
       name: "Raspberry Pi开发板",
       name: "Raspberry Pi开发板",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:Raspberry_Pi%E5%BC%80%E5%8F%91%E6%9D%BF",
       url: "http://www.lcdwiki.com",
     },
     },
     {
     {
       name: "Pioneer600",
       name: "Pioneer600",
       url: "https://www.waveshare.net/wiki/Pioneer600",
       url: "http://www.lcdwiki.com",
     },
     },
   ]
   ]
Line 203: Line 206:
     {
     {
       title: "CM4核心板",
       title: "CM4核心板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-1.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
      url: "http://www.lcdwiki.com"
     },
     },
     {
     {
       title: "官方底板",
       title: "官方底板",
       src: "https://www.waveshare.net/w/thumb.php?f=Compute-Module-4-IO-Board-2.jpg&width=360",
       src: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
     },
     },
   ]
   ]
Line 214: Line 218:
     {
     {
       name: "DIS",
       name: "DIS",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:DSI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com",
     },
     },
     { name: "CSI", url: "" },
     { name: "CSI", url: "" },
Line 222: Line 226:
     {
     {
       name: "PECI",
       name: "PECI",
       url: "https://www.waveshare.net/w/index.php?title=%E5%88%86%E7%B1%BB:PCIE%E6%8E%A5%E5%8F%A3&action=edit&redlink=1",
       url: "http://www.lcdwiki.com",
     },
     },
     {
     {
       name: "SPI",
       name: "SPI",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:SPI%E6%8E%A5%E5%8F%A3",
       url: "http://www.lcdwiki.com",
     },
     },
     { name: "UART", url: "" },
     { name: "UART", url: "" },
Line 236: Line 240:
<html>
<html>
   <div
   <div
      id="<!--{$boxid|default:"product-card"}-->"
    id="<!--{$boxid|default:"product-card"}-->"
      class="v-application v-application--is-ltr theme--light"
    class="v-application v-application--is-ltr theme--light"
      style="display: none; float: right; max-width: 320px"
    style="display: none; float: right; max-width: 365px"
    >
  >
      <v-container :style="containsStyle">
    <v-container :style="containsStyle">
        <div id="product-card-imgs">
      <div id="product-card-imgs">
          <v-tabs
        <v-tabs
            v-model="tab"
          v-model="tab"
            grow
          show-arrows
            center-active
          grow
            dark
          center-active
            :background-color="themeColor"
          dark
          :background-color="themeColor"
        >
          <v-tab v-for="(tabName, index) in imageTabs" :key="index"
            >{{ tabName }}</v-tab
           >
           >
            <v-tab v-for="(tabName, index) in imageTabs" :key="index"
        </v-tabs>
               >{{ tabName }}</v-tab
        <v-tabs-items v-model="tab">
          <v-tab-item v-for="(img, index) in images" :key="index">
            <a v-if="img.url" :href="img.url" target="_blank">
              <v-img :src="img.src" :aspect-ratio="16/9" width="300"></v-img>
            </a>
            <v-img
              v-else
              :src="img.src"
               :aspect-ratio="16/9"
              width="300"
            ></v-img>
          </v-tab-item>
        </v-tabs-items>
      </div>
      <div id="product-card-chips" v-if="chips && chips.length > 0">
        <span v-if="chipsTitle" :style="titleStyle">{{chipsTitle}}</span>
        <div class="d-flex flex-wrap justify-start">
          <v-chip
            v-for="(chip, index) in chips"
            :key="index"
            class="ma-1"
            :color="themeColor"
            outlined
            small
          >
            <a v-if="chip.url" :href="chip.url" target="_blank"
              >{{chip.name}}</a
             >
             >
          </v-tabs>
             <span v-else>{{chip.name}}</span>
          <v-tabs-items v-model="tab">
           </v-chip>
             <v-tab-item v-for="(img, index) in images" :key="index">
              <v-img :src="img.src" :aspect-ratio="16/9" width="300"></v-img>
            </v-tab-item>
           </v-tabs-items>
         </div>
         </div>
        <div id="product-card-chips" v-if="chips && chips.length > 0">
      </div>
          <span v-if="chipsTitle" :style="titleStyle">{{chipsTitle}}</span>
      <div id="product-card-kvData" v-if="kvDatas && kvDatas.length > 0">
          <div class="d-flex flex-wrap justify-start">
        <span v-if="kvDatasTitle" :style="titleStyle"
            <v-chip
          >{{kvDatasTitle}}</span
              v-for="(chip, index) in chips"
        >
              :key="index"
        <div
              class="ma-1"
          v-for="(kvItem, index) in kvDatas"
              :color="themeColor"
          :key="index"
              outlined
          class="d-flex justify-start"
               small
        >
          <div :style="kvKeyStyle">{{kvItem.key}}</div>
          <div :style="kvValueStyle">
            <a v-if="kvItem.url" :href="kvItem.url" target="_blank"
               >{{kvItem.value}}</a
             >
             >
              <a v-if="chip.url" :href="chip.url" target="_blank"
            <span v-else>{{kvItem.value}}</span>
                >{{chip.name}}</a
              >
              <span v-else>{{chip.name}}</span>
            </v-chip>
           </div>
           </div>
         </div>
         </div>
        <div id="product-card-kvData" v-if="kvDatas && kvDatas.length > 0">
      </div>
          <span v-if="kvDatasTitle" :style="titleStyle"
      <div id="product-card-liData" v-if="liDatas && liDatas.length > 0">
            >{{kvDatasTitle}}</span
        <span v-if="liDataTitle" :style="titleStyle">{{liDataTitle}}</span>
          >
        <a
          <div
          style="display: block; padding: 2px; margin-left: 5px"
            v-for="(kvItem, index) in kvDatas"
          v-for="(liItem, index) in liDatas"
            :key="index"
          :key="index"
            class="d-flex justify-start"
          :href="liItem.url"
          >
          target="_blank"
            <div :style="kvKeyStyle">{{kvItem.key}}</div>
          >{{liItem.name}}</a
            <div :style="kvValueStyle">
        >
              <a v-if="kvItem.url" :href="kvItem.url" target="_blank"
      </div>
                >{{kvItem.value}}</a
    </v-container>
              >
  </div>
              <span v-else>{{kvItem.value}}</span>
  <script>
            </div>
     if (typeof BoxPool == "undefined") {
          </div>
      BoxPool = new Map();
        </div>
    }
        <div id="product-card-liData" v-if="liDatas && liDatas.length > 0">
   
          <span v-if="liDataTitle" :style="titleStyle">{{liDataTitle}}</span>
    BoxPool["<!--{$boxid|default:"product-card"}-->"] = setInterval(() => {
          <a
       if (typeof Vuetify !== 'undefined' && typeof Vue !== 'undefined') {
            style="display: block; padding: 2px; margin-left: 5px"
        clearInterval(BoxPool["<!--{$boxid|default:"product-card"}-->"]);
            v-for="(liItem, index) in liDatas"
            :key="index"
            :href="liItem.url"
            target="_blank"
            >{{liItem.name}}</a
          >
        </div>
      </v-container>
    </div>
     <script>
       window.addEventListener('load', function () {
         let appDom = document.getElementById("<!--{$boxid|default:"product-card"}-->");
         let appDom = document.getElementById("<!--{$boxid|default:"product-card"}-->");
        if (window.innerWidth < 960){
          appDom.style.float = "none";
          appDom.style.width = "100%";
        }
         appDom.style.display = "block";
         appDom.style.display = "block";
         let app = new Vue({
         window.addEventListener("resize", () => {
          let appDom = document.getElementById("<!--{$boxid|default:"product-card"}-->");
          if (window.innerWidth < 960) {
            appDom.style.float = "none";
            appDom.style.width = "100%";
          } else {
            appDom.style.float = "right";
            appDom.style.width = "365px";
          }
        });
        new Vue({
           el: "#<!--{$boxid|default:"product-card"}-->",
           el: "#<!--{$boxid|default:"product-card"}-->",
           vuetify: new Vuetify(),
           vuetify: new Vuetify(),
Line 351: Line 384:
           },
           },
         });
         });
       })
       }
    </script>
    }, 50)
  </script>
</html>
</html>
</onlyinclude>
</onlyinclude>
</includeonly>
</includeonly>

Latest revision as of 17:42, 27 July 2024

参数说明

  • boxid 对象id, 默认值: product-card, 当需要在同一个页面上显示多个卡片时,需要保证boxid唯一
  • themeColor 主题颜色, 默认值: #36a5e8
  • images 图片数据, 必填
    • title 名称, 必填
    • src 图片链接, 必填
    • url 点击事件时的跳转链接, 选填
  • chipsTitle 标签数据标题, 选填
  • chips 标签数据, 选填
    • name 名称, chips有值时必填
    • url 点击事件时的跳转链接, 选填
  • kvDatasTitle K-V数据标题, 选填
  • kvDatas K-V数据, 选填
    • key 名称, 必填
    • value 值, 必填
    • url 点击事件时的跳转链接, 选填
  • liDataTitle 列表数据标题, 选填
  • liDatas 列表数据, 选填
    • name 名称, 必填
    • url 点击事件时的跳转链接, 必填

用法

{{#widget:ProductCard
| themeColor = #36a5e8
| images = [
    {
      title: "CM4核心板",
      src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
      url: "http://www.lcdwiki.com/"
    },
  ]
| chipsTitle = 板载接口
| chips = [
    {
      name: "DIS",
      url: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
    },
    { name: "CSI", url: "" },
  ]
| kvDatasTitle = 功能简介
| kvDatas = [
    {
      key: "特性",
      value: "1200万像素",
    },
    {
      key: "接口",
      value: "CSI",
      url: "http://www.lcdwiki.com/",
    },
  ] 
| liDataTitle = 相关产品
| liDatas = [
    {
      name: "Raspberry Pi开发板",
      url: "http://www.lcdwiki.com/",
    },
  ]
}}

效果展示

显示一个标题

这是一段示例文本。这段文本将环绕显示。你可以在这里添加更多内容, 注意{{#widget:ProductCard}}必须放在第一行位置, 你可以在这里添加更多内容, 你可以在这里添加更多内容, 你可以在这里添加更多内容, 你可以在这里添加更多内容, 接下是其它效果展示: