找回密码
 立即注册

微信扫码登录

搜索
查看: 7255|回复: 114

[UI界面] card-mod使用分享

 火.. [复制链接]

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
发表于 2024-11-16 21:29:06 | 显示全部楼层 |阅读模式
本帖最后由 hungheo 于 2024-11-16 23:34 编辑

主要分为 标签的路径查找 和  全局主题配置
一、路径查找:
1、复制JS路径
F12选择要查找的标签,然后右键“复制JS路径”
游客,如果您要查看本帖隐藏内容请回复

2、JS路径转card-mod路径
     这个网页可以将JS路径直接转换成card-mod的路径:https://matt8707.github.io/card-mod-helper/
2.1、路径有#shadowRoot的情况
     插件作者说明了:标签中的#shadowRoot替换成了$符号,所以转换成了下图:
游客,如果您要查看本帖隐藏内容请回复

看网页结构,知道tile card的结构是从hui-tile-card开始的,遇到的所有$都要逐级加进去,最后,指向class="slider-track-background"的div标签,这个就是要修改的

编写card-mod
游客,如果您要查看本帖隐藏内容请回复

这样整个路径就搞定了!

这里只是简单的修改下背景颜色
效果如下图:
游客,如果您要查看本帖隐藏内容请回复

2.2、路径没有#shadowRoot的情况
这里相对简单些,用 > 符号连接上下div标签就可以,如果遇到不是div标签的用 # 符号连接
游客,如果您要查看本帖隐藏内容请回复

这简单修改下ha-card标签下,clas=“container”的div标签的属性
游客,如果您要查看本帖隐藏内容请回复

ps:
    关于修改CSS属性,具体可以问AI或者百度,也可以参照这篇帖子:https://bbs.hassbian.com/thread-24285-1-1.html

分享一个browser-mod card的card-mod这设置:
card_mod:
  style:
    .: |
      :host {
        --ha-card-border-width: 0; 
      }
      .div:focus {
        outline: none; 
      }
      ha-dialog > div.content > div.container {
        background: none !important; /*取消弹出窗口内容的背景,*/
      }
      ha-dialog {
        --vertical-align-dialog: center !important;  /*窗口 居中*/
      }
      @media (max-width: 450px), (max-height: 500px) {
        ha-dialog {
          --mdc-dialog-min-height: none !important;  /*手机界面 窗口 居中*/
        }
      }
    ha-dialog$: |
      .mdc-dialog__scrim{
          backdrop-filter: blur(20px) !important; /*背景模糊*/
        }
      div.mdc-dialog__surface { 
        background: none !important;  /*取消弹出窗口标题、下部按钮的背景,*/
      }
前后效果对比:

屏幕截图 2024-11-16 221931.png          屏幕截图 2024-11-16 222023.png










评分

参与人数 3金钱 +32 收起 理由
z741554038 + 10 早点看到就好 不用费这么多时间设置 T T.
flyice + 10 高手,这是高手!
隔壁的王叔叔 + 12 大佬,大佬,膜拜!

查看全部评分

回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2024-11-16 22:43:15 | 显示全部楼层
本帖最后由 hungheo 于 2024-11-16 23:08 编辑

二、全局主题配置
接着上面分享的browser-mod的card-mod设置,这只是一个tile卡片的设置,如果有很多个browser-mod而且样式都是一样的,就可以在主题文件中配置好,全局生效
card-mod插件作者关于主题文件中的配置说明:https://github.com/thomasloven/lovelace-card-mod/wiki/Card-mod-Themes#navigating-the-shadowdom

1、主题文件中的定义:
定义card-mod作用的主题名,theme命名要与主题名称相同,基本格式如下:
---
hungheo: #主题名称
  card-mod-theme: hungheo #card mod 作用的主题名称

#这两个保持一致

2、应用card-mod全局变量,变量格式为"card-mod-<thing>-yaml:"

名称中间的thing替换成想修改的区域标签名称

常用的有 root、view、more-info、card、row、glance、badge等等

其中:
#card-mod-root-yaml 对应的网页标签是:
<hui-root class="undefined">...</hui-root>

#card-mod-view-yaml 对应的网页标签是:
<hui-view class="undefined">...</hui-view> 

#card-mod-more-info-yaml  对应的网页标签是:
<ha-dialog class="undefined">...</ha-dialog>

#card-mod-card-yaml 对应的网页标签是:
<ha-card class="名称">...</ha-card>

3、根据自己需求修改下主题文件:
注意:1、如果加入了card-mod全局配置的,切换主题时,需要重载一下主题才能生效
2、全局设置会把ha自带的样式也修改掉


分享下我自己用的


---
hungheo:
  ha-card-box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.16)
  ha-card-border-width: 0
  ha-card-border-radius: "12px"
  ha-dialog-border-radius: "0px" #弹出窗口 背景板倒角
  mdc-select-fill-color: "rgba(255, 255, 255, 0.2)" #选择框背景色
  dialog-backdrop-filter: blur(20px)
  card-mod-theme: hungheo
  card-mod-root: |  
    .header {
      display: none;
    }
    #view {
      padding: 0 !important;
      height: 100vh !important;
    }
  card-mod-view-yaml: |
    "*:first-child$": |
      #columns .column > * {
        padding-left: 5px;
        padding-right: 5px;
        padding-bottom: 5px;
      }
  card-mod-more-info-yaml: | 
    .: |
      ha-dialog > div:focus {
        outline: none;
      }
      ha-dialog {
        --vertical-align-dialog: center !important; 
      }
      ha-dialog > div.content > div.container {
        background: none !important;
      }
      @media (max-width: 450px), (max-height: 500px) {
        ha-dialog {
          --mdc-dialog-min-height: none !important; 
        }
      }
    ha-dialog$: |
      div.mdc-dialog__surface { 
        background: none !important; 
      }     
  modes:
    light:
      custom-background-color: "#f5f4f1"
      custom-card-background-color: "#fffefb" 
      custom-icon-color: "#3b3c3d"
      #main
      primary-background-color: "var(--custom-background-color)"

      text-color: "#1d1c1c"
      primary-text-color: "var(--text-color)"
      text-primary-color: "var(--text-color)"
      sidebar-text-color: "var(--text-color)"
      #card
      state-icon-color: "var(--custom-icon-color)"
      state-inactive-color: "var(--custom-icon-color)"
      state-active-color: "#71c4ef"
      card-background-color: "var(--custom-card-background-color)"
      ha-card-background: "var(--custom-card-background-color)"
      #header
      app-header-background-color: "var(--custom-background-color)"
      
      #sidebar
      sidebar-icon-color: "var(--custom-icon-color)"
      sidebar-background-color: "var(--custom-background-color)"
    dark:
      ha-card-background: "rgba(255, 255, 255, 0.2)" #卡片背景色
      mush-rgb-disabled: "255,255,255"
      rgb-primary-text-color: "255,255,255"

效果:
浏览器界面:

屏幕截图 2024-11-16 230128.png

手机APP界面:

微信图片_20241116230719.jpg       微信图片_20241116230726.jpg














回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2024-11-18 15:27:41 | 显示全部楼层
DDDear 发表于 2024-11-18 13:53
大佬你好,请问tile card的name和状态可以修改颜色吗?可以的话,能否帮忙给个示例代码 ...
type: tile
entity: sensor.sun_next_dawn
card_mod:
  style:
    ha-tile-info$: |
      .primary {
          color: blue !important; /*标题文字颜色*/
        }
      .secondary{
        color: red !important;/*状态文字颜色*/
      }
回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2024-11-18 15:30:15 | 显示全部楼层
DDDear 发表于 2024-11-18 13:53
大佬你好,请问tile card的name和状态可以修改颜色吗?可以的话,能否帮忙给个示例代码 ...
type: tile
entity: sensor.sun_next_dawn
card_mod:
  style:
    ha-tile-info$: |
      .primary {
          color: blue !important;
        }
      .secondary{
        color: red !important;
      }
回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2024-12-29 10:37:51 | 显示全部楼层
jupiter_lin 发表于 2024-12-29 10:31
111youmei有详细的教程啊

和css是一样的,找找css的教程就可以,或者直接问AI
回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2025-1-12 16:50:43 | 显示全部楼层
本帖最后由 hungheo 于 2025-1-12 17:12 编辑
klhd 发表于 2025-1-12 11:29
大佬,我想隐藏系统自带的空调卡片里面的一些元素,
card_mod:
  style:


正确的代码是这样的:
type: thermostat
entity: climate.qdhkl_ac_0103_air_conditioner
card_mod:
  style:
    ha-state-control-climate-temperature $: |
      /* 隐藏顶部状态(开关状态) */
      [class="label"] {
        display: none !important;
      }

      /* 隐藏底部温度(包括字体和图标) */
      [class="label secondary"] {
        font-size: 0px !important;
        display: unset !important;
      }
      [class="label secondary"] ha-svg-icon {
        display: none !important; /* 隐藏底部温度旁边的图标 */
      }
      [class="label secondary"]::after {
        content: ''; /* 清空底部温度显示内容 */
        font-size: 0px; /* 确保内容不占空间 */
      }
    .: |
      ha-card>ha-icon-button {
        display:none !important
      }

也可以简写成这样:
card_mod:
  style:
    ha-state-control-climate-temperature $: |
      .label {
        display: none !important;
      }
      .label secondary {
        font-size: 0px !important;
        display: unset !important;
      }
      .ha-svg-icon {
        display: none !important; 
      }
    .: |
      ha-icon-button {
        display: none !important;
      }



回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2025-1-14 22:25:40 | 显示全部楼层
flamestsui 发表于 2025-1-14 19:07
我发现,第一次是正常居中,关了再次打开就不对了

我这里是正常呀,我是把这个当成全局设置,放在主题文件里面的

browser mod的版本为:2.3.1
回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2025-1-14 23:08:06 | 显示全部楼层
flamestsui 发表于 2025-1-14 19:07
我发现,第一次是正常居中,关了再次打开就不对了

发现问题了

打开控制台是不是有这样的错误提示:Uncaught (in promise) TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'.

这个很无解,看下是不是短时间连续打开关闭就会出现这样的,如果是打开关闭再间隔几秒打开就不会出现

每个弹出窗口单独设置的话,就会这样,但放在主题文件里虽然有错误提示,但不会出现这种情况
回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2025-6-18 13:18:44 | 显示全部楼层
maske2808 发表于 2025-6-18 11:26
高手,你这个弹出窗口的卡片叫什么

browser_mod
回复

使用道具 举报

10

主题

239

回帖

2282

积分

金牌会员

积分
2282
金钱
2028
HASS币
20
 楼主| 发表于 2025-6-20 15:37:20 | 显示全部楼层
本帖最后由 hungheo 于 2025-6-20 15:39 编辑
maske2808 发表于 2025-6-19 20:00
高手,像这样my-slider-v2$#slider-media_player-mi10_audio_airplay-volume>div>div"最后两级都是>div的, ...

看看div标签里面有没有class属性,有的话用: .***{}
***就是class里面的值,如果没有尝试下#div


题外话:
my-silder-v2这个插件可以用自身的styles来配置属性呀,不需要card_mod
给你一个示例:
type: custom:my-slider-v2
entity: light.649e3186d9cd_light
mode: brightness
styles:
  card:
    - height: 56px
    - border: 0px
    - box-shadow: none
    - background: var(--pop-card-background)
  container:
    - width: 100%
    - height: 100%
    - position: relative
    - overflow: hidden
    - border-radius: 28px
  track:
    - width: 100%
    - height: 100%
    - position: relative
    - background: var(--pop-caed-background)
  progress:
    - height: 100%
    - background: var(--accent-color)
    - position: absolute
    - width: 10.00%
  thumb:
    - height: 46px
    - background: var(--accent-color)
    - position: absolute
    - right: "-5px"
    - width: 3px
    - border-radius: 5px
    - border: 5px solid white


回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-7-16 13:36 , Processed in 0.304026 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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