打开/关闭菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Widget:ProductCard:修订间差异

来自LCD wiki
无编辑摘要
无编辑摘要
 
(未显示同一用户的20个中间版本)
第1行: 第1行:
<noinclude>
<noinclude>
== 参数说明 ==
== 参数说明 ==
* boxid 对象id, 默认值: product-card, 当需要在同一个页面上显示多个卡片时,需要保证boxid唯一
* themeColor 主题颜色, 默认值: #36a5e8
* themeColor 主题颜色, 默认值: #36a5e8
* images 图片数据, 必填
* images 图片数据, 必填
** 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>
{{#widget:ProductCard
{{#widget:ProductCard
| themeColor = "#36a5e8"
| themeColor = #36a5e8
| images = [
| images = [
     {
     {
       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/"
    },
  ]
| 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/",
    },
  ]
}}
</nowiki></pre>
== 效果展示 ==
{{#widget:ProductCard
| boxid = demo1
| themeColor = #bc1d46
| images = [
    {
      title: "CM4核心板",
      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",
     },
     },
   ]
   ]
| chipsTitle = "板载接口"
| chipsTitle = 板载接口
| chips = [
| chips = [
     {
     {
       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: "" },
第48行: 第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: "" },
   ]
   ]
| kvDatasTitle = "功能简介"
| kvDatasTitle = 功能简介
| kvDatas = [
| kvDatas = [
     {
     {
第74行: 第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",
     },
     },
   ]  
   ]  
| liDataTitle = "相关产品"
| liDataTitle = 相关产品
| liDatas = [
| liDatas = [
     {
     {
       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",
     },
     },
   ]
   ]
}}
}}
</nowiki></pre>
{{StyledHeader
== 效果展示 ==
| text = 显示一个标题
}}
这是一段示例文本。这段文本将环绕显示。你可以在这里添加更多内容, 注意<nowiki>{{#widget:ProductCard}}</nowiki>必须放在第一行位置,
你可以在这里添加更多内容,
你可以在这里添加更多内容,
你可以在这里添加更多内容,
你可以在这里添加更多内容,
接下是其它效果展示:
{{#widget:ProductCard
{{#widget:ProductCard
| themeColor = "#36a5e8"
| boxid = demo2
| images = [
| images = [
     {
     {
       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",
     },
     },
   ]
   ]
| chipsTitle = "板载接口"
}}
| chips = [
{{#widget:ProductCard
| boxid = demo3
| themeColor = #5c855c
| images = [
     {
     {
       name: "DIS",
       title: "CM4核心板",
       url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:DSI%E6%8E%A5%E5%8F%A3",
       src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
     },
     },
    { name: "CSI", url: "" },
    { name: "HDMI", url: "" },
    { name: "USB2.0", url: "" },
    { name: "I2C", url: "" },
    {
      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",
    },
    {
      name: "SPI",
      url: "https://www.waveshare.net/wiki/%E5%88%86%E7%B1%BB:SPI%E6%8E%A5%E5%8F%A3",
    },
    { name: "UART", url: "" },
   ]
   ]
| kvDatasTitle = "功能简介"
| kvDatasTitle = 功能简介
| kvDatas = [
| kvDatas = [
     {
     {
第145行: 第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",
     },
     },
   ]  
   ]  
| liDataTitle = "相关产品"
| liDataTitle = 相关产品
| liDatas = [
| liDatas = [
     {
     {
       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",
     },
     },
  ]
}}
{{#widget:ProductCard
| boxid = demo4
| themeColor = #2c2c2c
| images = [
    {
      title: "CM4核心板",
      src: "http://www.lcdwiki.com/images/thumb/0/09/Main_MPI3508.jpg/200px-Main_MPI3508.jpg",
      url: "http://www.lcdwiki.com"
    },
    {
      title: "官方底板",
      src: "http://www.lcdwiki.com/images/thumb/2/28/MPI3508-20181115.jpg/300px-MPI3508-20181115.jpg",
    },
  ]
| chipsTitle = 板载接口
| chips = [
    {
      name: "DIS",
      url: "http://www.lcdwiki.com",
    },
    { name: "CSI", url: "" },
    { name: "HDMI", url: "" },
    { name: "USB2.0", url: "" },
    { name: "I2C", url: "" },
    {
      name: "PECI",
      url: "http://www.lcdwiki.com",
    },
    {
      name: "SPI",
      url: "http://www.lcdwiki.com",
    },
    { name: "UART", url: "" },
   ]
   ]
}}
}}
第165行: 第240行:
<html>
<html>
   <div
   <div
      id="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; 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 id="product-card-kvData" v-if="kvDatas && kvDatas.length > 0">
          <span v-if="kvDatasTitle" :style="titleStyle"
            >{{kvDatasTitle}}</span
          >
          <div
            v-for="(kvItem, index) in kvDatas"
            :key="index"
            class="d-flex justify-start"
          >
            <div :style="kvKeyStyle">{{kvItem.key}}</div>
            <div :style="kvValueStyle">
              <a v-if="kvItem.url" :href="kvItem.url" target="_blank"
                >{{kvItem.value}}</a
              >
              <span v-else>{{kvItem.value}}</span>
            </div>
           </div>
           </div>
         </div>
         </div>
        <div id="product-card-liData" v-if="liDatas && liDatas.length > 0">
      </div>
          <span v-if="liDataTitle" :style="titleStyle">{{liDataTitle}}</span>
      <div id="product-card-liData" v-if="liDatas && liDatas.length > 0">
          <a
        <span v-if="liDataTitle" :style="titleStyle">{{liDataTitle}}</span>
            style="display: block; padding: 2px; margin-left: 5px"
        <a
            v-for="(liItem, index) in liDatas"
          style="display: block; padding: 2px; margin-left: 5px"
            :key="index"
          v-for="(liItem, index) in liDatas"
            :href="liItem.url"
          :key="index"
            target="_blank"
          :href="liItem.url"
            >{{liItem.name}}</a
          target="_blank"
          >
          >{{liItem.name}}</a
        </div>
        >
      </v-container>
      </div>
    </div>
    </v-container>
 
  </div>
    <script>
  <script>
      function lightenColor(color, percent) {
    if (typeof BoxPool == "undefined") {
        const num = parseInt(color.replace("#", ""), 16),
      BoxPool = new Map();
          amt = Math.round(2.55 * percent),
    }
          R = (num >> 16) + amt,
   
          G = ((num >> 8) & 0x00ff) + amt,
    BoxPool["<!--{$boxid|default:"product-card"}-->"] = setInterval(() => {
          B = (num & 0x0000ff) + amt;
      if (typeof Vuetify !== 'undefined' && typeof Vue !== 'undefined') {
 
         clearInterval(BoxPool["<!--{$boxid|default:"product-card"}-->"]);
         return (
        let appDom = document.getElementById("<!--{$boxid|default:"product-card"}-->");
          "#" +
        if (window.innerWidth < 960){
          (
           appDom.style.float = "none";
            0x1000000 +
          appDom.style.width = "100%";
            (R < 255 ? (R < 1 ? 0 : R) : 255) * 0x10000 +
        }
            (G < 255 ? (G < 1 ? 0 : G) : 255) * 0x100 +
            (B < 255 ? (B < 1 ? 0 : B) : 255)
           )
            .toString(16)
            .slice(1)
            .toUpperCase()
        );
      }
 
      window.onload = function () {
        let appDom = document.getElementById("product-card");
         appDom.style.display = "block";
         appDom.style.display = "block";
         let app = new Vue({
         window.addEventListener("resize", () => {
           el: "#product-card",
          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"}-->",
           vuetify: new Vuetify(),
           vuetify: new Vuetify(),
           methods: {},
           methods: {},
第292行: 第374行:
           data: {
           data: {
             tab: null,
             tab: null,
             themeColor: <!--{$themeColor|default:"#36a5e8"}-->,
             themeColor: "<!--{$themeColor|default:"#36a5e8"}-->",
             images: <!--{$images}-->,
             images: <!--{$images}-->,
             chipsTitle: <!--{$chipsTitle|default:""}-->,
             chipsTitle: "<!--{$chipsTitle|default:""}-->",
             chips: <!--{$chips|default:[]}-->,
             chips: <!--{$chips|default:"[]"}-->,
             kvDatasTitle: <!--{$kvDatasTitle|default:""}-->,
             kvDatasTitle: "<!--{$kvDatasTitle|default:""}-->",
             kvDatas:<!--{$kvDatas|default:[]}-->,
             kvDatas:<!--{$kvDatas|default:"[]"}-->,
             liDataTitle:<!--{$liDataTitle|default:""}-->,
             liDataTitle:"<!--{$liDataTitle|default:""}-->",
             liDatas: <!--{$liDatas|default:[]}-->,
             liDatas: <!--{$liDatas|default:"[]"}-->,
           },
           },
         });
         });
       };
       }
     </script>
     }, 50)
  </script>
</html>
</html>
</onlyinclude>
</onlyinclude>
</includeonly>
</includeonly>

2024年7月27日 (六) 17:43的最新版本

参数说明

  • 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}}必须放在第一行位置, 你可以在这里添加更多内容, 你可以在这里添加更多内容, 你可以在这里添加更多内容, 你可以在这里添加更多内容, 接下是其它效果展示: