『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: hungheo

[UI界面] button card使用分享

[复制链接]

7

主题

120

帖子

1146

积分

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1026
HASS币
0
 楼主| 发表于 2024-8-23 14:20:24 | 显示全部楼层
学习中 发表于 2024-8-23 11:44
博主问一下这个template放在哪呢,创建一个模版吗,我是小白

19#楼有我的代码,下载下来打开看就知道是什么结构了
回复

使用道具 举报

5

主题

63

帖子

779

积分

高级会员

Rank: 4

积分
779
金钱
716
HASS币
10
发表于 2024-11-14 15:52:37 | 显示全部楼层
'input_boolean.xinxi_xiangqing   这个参数需要在哪里定义啊  大佬
回复

使用道具 举报

3

主题

31

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
金钱
174
HASS币
0
发表于 2024-11-14 16:33:49 | 显示全部楼层
大神,这美感,羡慕了~
回复

使用道具 举报

7

主题

120

帖子

1146

积分

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1026
HASS币
0
 楼主| 发表于 2024-11-15 10:28:43 | 显示全部楼层
441340677 发表于 2024-11-14 15:52
'input_boolean.xinxi_xiangqing   这个参数需要在哪里定义啊  大佬

这个是辅助元素里面的开关
回复

使用道具 举报

7

主题

120

帖子

1146

积分

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1026
HASS币
0
 楼主| 发表于 2024-11-15 13:26:03 | 显示全部楼层
本帖最后由 hungheo 于 2024-11-15 13:44 编辑

extra_styles使用:
这个属性很有意思,可以加任意的css元素,相对独立于原有的button_card的grid布局,我用的比较多的是伪元素。
11111.png

上图中,红色 绿色 的 ::before 就是extra_styles添加进去的,熟悉card_mod插件的基本都没问题
使用方法:
1、CSS:
extra_styles: |
      ha-card::before {
        content: " "; /* 内容为空 */
        height: 56px; /* 与两行文字+padding高度 相同 */
        width: 100%; /* 与card相同 */
        bottom: 0;  /* 位置在最下 */
        box-shadow: var(--ha-card-box-shadow);  /* 主题 卡片阴影 */
        border-radius: var(--ha-card-border-radius);  /* 主题 卡片倒角 */
        background-color: var(--card-background-color); /* 主题 卡片背景 */
        overflow: visible;   /* 允许超出边界 */  
        position: absolute; /* 独立控制位置*/
        z-index: -1; /* 叠层位置*/
      }


2、可以用JavaScript template设置变量
extra_styles: |
      [[[
        if (entity.state === variables.current_hvac_modes) 
        return `
          ha-card::after {
            content: "${variables.title_name}";
            padding: 0px 0px 2px 20px;
            color: var(--card-background-color);
            position: absolute;    
            z-index: 2;
          }
        `;
      ]]]


分享下我制作的天气卡片:

button_card_templates:
  weather: 
    show_icon: false
    show_state: false
    show_name: true
    show_entity_picture: true
    show_label: true
    label: '[[[ return `${entity.attributes.temperature}°C` ]]]'
    name: |
      [[[ 
        if (entity.state == "sunny" ) return "晴"; 
        else if(entity.state == "clear-night") return "晴";
        else if(entity.state == "partlycloudy") return "多云"; 
        else if(entity.state == "cloudy") return "阴"; 
        else if(entity.state == "rainy") return "雨";  
        else if(entity.state == "pouring") return "暴雨"; 
        else if(entity.state == "fog") return "雾"; 
        else if(entity.state == "hail") return "/冰雹"; 
        else if(entity.state == "lightning") return "雷暴"; 
        else if(entity.state == "lightningrain") return "雷阵雨"; 
        else if(entity.state == "snow") return "雪"; 
        else if(entity.state == "snowrainy") return "雨夹雪"; 
        else if(entity.state == "windy") return "风"; 
        else return "配置错误";
      ]]]
    entity_picture: |
      [[[
        if (entity.state == "sunny" ) return  "/local/weather_icon/clear-day.png"; //白天晴
        else if(entity.state == "clear-night")return "/local/weather_icon/clear-night.png";  //晚上晴
        else if(entity.state == "partlycloudy") return Number(states["sensor.sun_solar_elevation"].state) > 0 ? "/local/weather_icon/partlycloudy-day.png"  : "/local/weather_icon/partlycloudy-night.png"; 
        else if(entity.state == "cloudy") return "/local/weather_icon/cloudy.png"; //阴
        else if(entity.state == "rainy") return "/local/weather_icon/rainy.png";  //雨
        else if(entity.state == "pouring") return "/local/weather_icon/pouring.png"; //大雨
        else if(entity.state == "fog") return "/local/weather_icon/fog.png"; //雾
        else if(entity.state == "hail") return "/local/weather_icon/hail.png"; //冰雹
        else if(entity.state == "lightning") return "/local/weather_icon/lightning.png"; //雷暴
        else if(entity.state == "lightningrain") return "/local/weather_icon/lightning-rain.png"; //雷阵雨
        else if(entity.state == "snowy") return "/local/weather_icon/snowy.png"; //雪
        else if(entity.state == "snowrainy") return "/local/weather_icon/.svg"; //雨夹雪
        else if(entity.state == "windy") return "/local/weather_icon/wind.svg"; //风
      ]]]
    styles:
      grid:
        - grid-template-areas: |
            "x i"
            "n i"
            "l i"
        - grid-template-rows: min-content 30px 26px
        - grid-template-columns: min-content 1fr
      card:
        - width: 175px
        - padding: 0px
        - border-radius: 0px
        - background: none
        - box-shadow: none
        
        - z-index: 1
        - overflow: visible  
      img_cell:
        - z-index: 1
        - padding-bottom: 25px
      entity_picture:
        - width: 80px
      name:
        - font-size: 14px
        - font-weight: bold
        - justify-self: start
        - padding: 10px 0px 0px 10px
      label:
        - font-size: 12px
        - justify-self: start
        - padding: 0px 0px 10px 10px
    extra_styles: |
      ha-card::before {
        content: " "; /* 内容为空 */
        height: 56px; /* 与两行文字+padding高度 相同 */
        width: 100%; /* 与card相同 */
        bottom: 0;  /* 位置在最下 */
        box-shadow: var(--ha-card-box-shadow);  /* 主题 卡片阴影 */
        border-radius: var(--ha-card-border-radius);  /* 主题 卡片倒角 */
        background-color: var(--card-background-color); /* 主题 卡片背景 */
        overflow: visible;   /* 允许超出边界 */  
        position: absolute; /* 独立控制位置*/
        z-index: -1; /* 叠层位置*/
      }
      #img-cell::before {
        content: " ";
        height: 56px; /* 与两行文字+padding高度 相同 */
        width: 80px; /* 与entity_picture相同 */
        bottom: 10px; /* 与entity_picture相同 */
        background: radial-gradient(70% 40% at 50% 50%, rgba(var(--rgb-primary-text-color), 0.15) 0%, transparent 70%);
        position: absolute;   /* 独立控制位置*/
        z-index: -1; /* 叠层位置*/
      }

使用:
- type: custom:button-card
  entity: weather.forecast_wo_de_jia
  template: weather

效果:

屏幕截图 2024-11-15 114201.png     屏幕截图 2024-11-15 114124.png




回复

使用道具 举报

10

主题

102

帖子

1415

积分

金牌会员

Rank: 6Rank: 6

积分
1415
金钱
1313
HASS币
0
发表于 2024-11-20 19:19:48 | 显示全部楼层
太牛了,谢谢分享
回复

使用道具 举报

0

主题

3

帖子

62

积分

注册会员

Rank: 2

积分
62
金钱
59
HASS币
0
发表于 2024-12-5 00:13:58 | 显示全部楼层
大佬,能帮忙写一个apple tv的精美卡片吗,我的实体是media_player.ke_ting
我研究了半天实在研究不出来
回复

使用道具 举报

7

主题

120

帖子

1146

积分

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1026
HASS币
0
 楼主| 发表于 2024-12-5 08:58:10 | 显示全部楼层
ngone 发表于 2024-12-5 00:13
大佬,能帮忙写一个apple tv的精美卡片吗,我的实体是media_player.ke_ting
我研究了半天实在研究不出来:di ...

这个不好搞呀,创意比代码难多了,你把想做的卡片样子发我,我试试
回复

使用道具 举报

0

主题

3

帖子

62

积分

注册会员

Rank: 2

积分
62
金钱
59
HASS币
0
发表于 2024-12-5 13:41:27 | 显示全部楼层
本帖最后由 ngone 于 2024-12-5 13:42 编辑
hungheo 发表于 2024-12-5 08:58
这个不好搞呀,创意比代码难多了,你把想做的卡片样子发我,我试试

好的大佬,我希望做成这样的 效果图.png
卡片是保持系统默认透明度的
回复

使用道具 举报

7

主题

120

帖子

1146

积分

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1026
HASS币
0
 楼主| 发表于 2024-12-5 13:47:23 | 显示全部楼层
ngone 发表于 2024-12-5 13:41
好的大佬,我希望做成这样的
卡片是保持系统默认透明度的

要实现这些光是一个media_player.ke_ting不够呀,你私信我加个微信
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-30 01:02 , Processed in 0.122477 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表