uniapp使用uni-ui怎么修改默認的css樣式比如多選框及樣式覆蓋小程序/安卓/ios兼容問題

修改 uni-ui 多選框 (uni-data-checkbox) 的默認樣式

在 uniapp 中使用 uni-ui 的 uni-data-checkbox 組件時,可以通過以下幾種方式修改其默認樣式:

方法一:使用深度選擇器

  • 格式一:在頁面的 style 部分使用深度選擇器 >>>/deep/ 來穿透組件作用域:

    /* 在普通 CSS 中 */
    >>> #rememberbox .uni-checkbox-input {border-color: #ff0000;background-color: #f8f8f8;
    }>>> #rememberbox .uni-checkbox-input.uni-checkbox-input-checked {background-color: #ff0000;border-color: #ff0000;
    }/* 在 SCSS 中 */
    /deep/ #rememberbox {.uni-checkbox-input {width: 20px;height: 20px;border-radius: 50%;}
    }
    
  • 格式二 :使用 ::v-deep(推薦):在 scoped 樣式中,Vue 推薦使用 ::v-deep 替代 >>> 或 /deep/:

    <style scoped>
    /* 使用 ::v-deep */
    ::v-deep #rememberbox .uni-checkbox-input {border-color: red !important;background: #f0f0f0;
    }/* 或者用 :deep()(Vue 3+ 推薦) */
    :deep(#rememberbox) .uni-checkbox-input {border-radius: 50%;
    }
    </style>
    

方法二:使用全局樣式

App.vue 或公共樣式文件中定義全局樣式:

.uni-data-checkbox .uni-checkbox-input {/* 你的樣式 */
}

方法三:使用自定義類名

給組件添加自定義類名,然后通過該類名修改樣式:

<uni-data-checkbox class="custom-checkbox" ...></uni-data-checkbox>
.custom-checkbox .uni-checkbox-input {/* 你的樣式 */
}

方法四:修改主題變量(如果支持)

查看 uni-ui 文檔,看是否支持通過 CSS 變量修改主題:

:root {--checkbox-color: #ff0000;--checkbox-border-color: #ff0000;
}

完整示例

<template><view><uni-data-checkbox id="rememberbox" multiple v-model="rememberVal" :localdata="rememberObj" @change="onRememberCheckboxChange"class="custom-checkbox"></uni-data-checkbox></view>
</template><style>
/* 方法一:深度選擇器 */
>>> #rememberbox .uni-checkbox-input {border-color: #ff0000;width: 20px;height: 20px;
}>>> #rememberbox .uni-checkbox-input.uni-checkbox-input-checked {background-color: #ff0000;border-color: #ff0000;
}/* 方法三:自定義類名 */
.custom-checkbox .uni-checkbox-wrapper {margin-right: 10px;
}.custom-checkbox .uni-checkbox-input {border-radius: 50%;
}
</style>

注意事項

  1. 不同版本的 uni-ui 可能有不同的類名結構,建議在瀏覽器開發者工具中查看實際生成的 DOM 結構和類名
  2. 如果樣式不生效,嘗試添加 !important 或檢查選擇器是否正確
  3. 多選框的樣式可能由多個類共同控制,需要檢查選中狀態、禁用狀態等不同情況下的樣式

如果以上方法都不適用,建議查閱 uni-ui 的官方文檔,查看是否有專門提供的樣式修改 API 或插槽(slot)來自定義樣式。



樣式覆蓋,小程序/安卓/ios兼容問題

uniapp 中修改 uni-ui 組件樣式時,不同平臺(H5、Android、iOS、各小程序)對 CSS 深度選擇器的支持情況不同。以下是各平臺的兼容性分析和解決方案:


1. 各平臺對深度選擇器的支持情況

方法H5微信小程序支付寶小程序Android/iOS (App)說明
>>> / /deep/????僅 H5 支持
::v-deep???? (部分版本)Vue 2/3 推薦,App 端可能生效
:deep() (Vue 3)???? (部分版本)Vue 3 推薦
!important????通用,但可能影響維護
options.styleIsolation?? (shared)??僅微信小程序可用
全局樣式 (scoped 去掉)????通用,但可能污染全局樣式

2. 多端兼容的最佳實踐

(1)通用方案:::v-deep + !important(Vue 2/3)

<style scoped>
/* 適用于 H5 和 App(Android/iOS) */
::v-deep #rememberbox .uni-checkbox-input {border-color: red !important;border-radius: 50%;
}/* 選中狀態 */
::v-deep #rememberbox .uni-checkbox-input.uni-checkbox-input-checked {background-color: red !important;
}
</style>

生效范圍

  • ? H5
  • ? App(Android/iOS,部分 uniapp 版本支持)
  • ? 微信/支付寶小程序(需額外處理)

(2)小程序專屬方案:options.styleIsolation(僅微信)

export default {options: {styleIsolation: 'shared' // 微信小程序生效}
}

生效范圍

  • ? 微信小程序(可穿透組件樣式)
  • ? 其他平臺(需結合其他方法)

(3)終極兼容方案:條件編譯 + 全局樣式

/* 所有平臺通用樣式(非scoped) */
.rememberbox-custom .uni-checkbox-input {border: 1px solid red !important;
}/* 僅微信小程序生效 */
/* #ifdef MP-WEIXIN */
.rememberbox-custom .uni-checkbox-input {transform: scale(1.2);
}
/* #endif */

HTML

<uni-data-checkbox class="rememberbox-custom" ...></uni-data-checkbox>

3. 真機調試注意事項

  1. Android/iOS(App)

    • 部分 uniapp 版本可能不支持 ::v-deep,建議用 !important 或全局樣式。
    • 真機調試時,檢查元素是否應用了目標樣式,可能需要 view 層級調整。
  2. 微信小程序

    • 必須使用 options.styleIsolation 或全局樣式。
    • 部分基礎組件樣式可能無法修改(需用 !important 強制覆蓋)。
  3. 支付寶/百度/字節跳動小程序

    • 不支持深度選擇器,只能用全局樣式 + !important

4. 總結

平臺推薦方法
H5::v-deep:deep() + !important
App(Android/iOS)::v-deep + !important(如無效,改用全局樣式)
微信小程序options.styleIsolation: 'shared' + 全局樣式 + !important
其他小程序全局樣式 + !important + 條件編譯 (#ifdef MP-XX)

如果仍然無效,可以嘗試:

  1. 檢查 DOM 結構(H5 端用瀏覽器開發者工具)。
  2. 使用 更具體的選擇器(如加 id 或父類限制)。
  3. App.vue 中寫 全局樣式 覆蓋。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92143.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92143.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92143.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Linux 環境下 Nginx 多站點綜合實踐:域名解析、訪問控制與 HTTPS 加密部署》?

綜合練習:請給openlab搭建web網站&#xff0c;網站需求&#xff1a; 1.基于域名www.openlab.com可以訪問網站內容為 welcome to openlab!!&#xff0c; 2.給該公司創建三個子界面分別顯示學生信息&#xff0c;教學資料和繳費網站&#xff0c;基于www.openlab.com/student 網站訪…

網絡基礎1-11綜合實驗(eNSP):vlan/DHCP/Web/HTTP/動態PAT/靜態NAT

注&#xff1a;在華為模擬器&#xff08;eNSP&#xff09;上做的實驗其中&#xff0c;在內網實驗&#xff1a;Vlan/DHCP/VWeb/HTTP&#xff0c;在外網實驗&#xff1a;動態PAT/靜態NAT一、拓撲結構1. 核心設備與連接設備接口連接對象VLAN/IP角色LSW2/LSW3Ethernet 0/0/1-2PC1/P…

Mac上安裝Claude Code的步驟

以下是基于現有信息的簡明安裝指南&#xff0c;適用于macOS系統。請按照以下步驟操作&#xff1a; 前提條件 操作系統&#xff1a;macOS 10.15或更高版本。Node.js和npm&#xff1a;Claude Code基于Node.js&#xff0c;需安裝Node.js 18和npm。請檢查是否已安裝&#xff1a; …

MybatisPlus-15.擴展功能-邏輯刪除

一.邏輯刪除配置邏輯刪除的字段時&#xff0c;logic-delete-field字段配置的是邏輯刪除的實體字段名。字段類型可以是boolean和integer。在java中默認是boolean類型。邏輯已刪除值默認為1&#xff0c;而邏輯未刪除值默認為0。當是1時代表已刪除(1在數據庫表中為true&#xff0c…

IDEA 同時修改某個區域內所有相同變量名

在 IntelliJ IDEA 中&#xff0c;同時修改某個區域內所有 相同變量名 的快捷鍵是&#xff1a; ? Shift F6&#xff08;重命名變量&#xff09; 但這個快捷鍵默認是 全局重命名&#xff0c;如果你想 僅修改某個方法或代碼塊內的變量名&#xff0c;可以這樣做&#xff1a;&…

Telink BLE 低功耗學習

低功耗管理&#xff08;Low Power Management&#xff09;也可以稱為功耗管理&#xff08;Power Management&#xff09;&#xff0c;本?檔中會簡稱為PM。Telink低功耗解惑我查閱多連接SDK開發手冊時&#xff0c;低功耗管理章節看了兩三遍也沒太明白&#xff0c;有以下幾個問題…

設備管理系統(MMS)如何在工廠MOM功能設計和系統落地

一、核心系統功能模塊設備管理系統圍繞設備全生命周期管理設計&#xff0c;涵蓋基礎數據管理、設備運維全流程管控及統計分析功能&#xff0c;具體如下&#xff1a;基礎數據管理設備與備件臺賬&#xff1a;包含設備臺賬&#xff08;設備編號、識別碼、型號、生產日期等&#xf…

低空經濟展 | 牧羽天航空攜飛行重卡AT1300亮相2025深圳eVTOL展

為深入推動低空經濟產業高質量發展&#xff0c;構建全球eVTOL&#xff08;電動垂直起降飛行器&#xff09;產業交流合作高端平臺&#xff0c;2025深圳eVTOL展定于2025年9月23日至25日在深圳坪山燕子湖國際會展中心隆重舉辦。本屆展會以“低空經濟?eVTOL?航空應急救援?商載大…

CS231n-2017 Lecture4神經網絡筆記

神經網絡&#xff1a;我們之前的線性分類器可以接受輸入&#xff0c;進而給出評分&#xff0c;這是一種線性變換&#xff0c;再此基礎上&#xff0c;我們對這種線性變換結果進行非線性變換&#xff0c;并輸入到下一層線性分類器中&#xff0c;這個過程就像是人類大腦神經的運作…

暑期算法訓練.5

目錄 20. 力扣 34.在排序數組中查找元素的第一個位置和最后一個位置 20.1 題目解析&#xff1a; 20.2 算法思路&#xff1a; 20.3 代碼演示&#xff1a; ?編輯 20.4 總結反思&#xff1a; 21.力扣 69.x的平方根 21.1 題目解析&#xff1a; 21.2 算法思路&#xff1a;…

【HDLBits習題詳解 2】Circuit - Sequential Logic(5)Finite State Machines 更新中...

1. Fsm1&#xff08;Simple FSM 1 - asynchronous reset&#xff09;狀態機可分為兩類&#xff1a;&#xff08;1&#xff09;Mealy狀態機&#xff1a;輸出由當前狀態和輸入共同決定。輸入變化可能立即改變輸出。&#xff08;2&#xff09;Moore狀態機&#xff1a;輸出僅由當前…

多級緩存(億級流量緩存)

傳統緩存方案問題 多級緩存方案 流程 1.客戶端瀏覽器緩存頁面靜態資源; 2. 客戶端請求到Nginx反向代理;[一級緩存_瀏覽器緩存] 3.Nginx反向代理將請求分發到Nginx集群(OpenResty); 4.先重Nginx集群OpenResty中獲取Nginx本地緩存數據;[二級緩存_Nginx本地緩存] 5.若Nginx本地緩存…

淺談Rust語言特性

如大家所了解的&#xff0c;Rust是一種由Mozilla開發的系統編程語言&#xff0c;專注于內存安全、并發性和高性能&#xff0c;旨在替代C/C等傳統系統編程語言。Rust 有著非常優秀的特性&#xff0c;例如&#xff1a;可重用模塊 內存安全和保證&#xff08;安全的操作與不安全的…

React探索高性能Tree樹組件實現——react-window、react-vtree

&#x1f680; 簡介 在現代 Web 應用中&#xff0c;處理大量層級數據的樹形結構是一個常見挑戰。傳統的樹組件在面對成千上萬個節點時往往會出現性能瓶頸&#xff0c;導致頁面卡頓、內存占用過高等問題。本文將深入探討如何使用 react-window 和 react-vtree 構建高性能的虛擬…

C++ 中的默認構造函數:非必要,不提供

《More Effective C&#xff1a;35個改善編程與設計的有效方法》 讀書筆記&#xff1a;非必要不提供default constructor在 C 中&#xff0c;默認構造函數&#xff08;即無需任何參數即可調用的構造函數&#xff09;是對象“無中生有”的一種方式。它的核心作用是在沒有外部信息…

如何選擇低代碼開發平臺

選擇低代碼開發平臺需要考慮平臺的開發效率、靈活性和擴展能力、安全性和合規性、成本效益等關鍵因素。 具體來說&#xff0c;平臺的靈活性和擴展能力尤為重要&#xff0c;這決定了平臺是否能長期滿足企業日益增長的復雜需求。例如&#xff0c;企業在評估平臺時&#xff0c;應關…

電子數據取證領域的雙輪驅動——手工分析 vs 自動化分析

在你剛步入電子數據取證領域時&#xff0c;可能很快就注意到一個普遍現象&#xff1a;大多數取證分析師前期都花費大量時間在網上查閱博客、PDF、推文等信息&#xff0c;尋找證據線索的“藏身之處”——例如注冊表項、日志文件路徑、可疑文件命名模式或遠程登錄痕跡等。這種信息…

《Python 實時通信全解:掌握 WebSocket 技術與 HTTP 的本質區別》

??《Python 實時通信全解:掌握 WebSocket 技術與 HTTP 的本質區別》 引言:通信方式的演進與 Python 的角色 在數字化世界里,**“實時性”**已經成為構建高質量應用的核心訴求。從聊天工具到股票交易系統,再到物聯網設備管理——通信的即時響應能力直接決定用戶體驗。而…

GeoTools 自定義坐標系

前言在GIS開發中&#xff0c;坐標系統是重中之重&#xff0c;在接到任務時首先要確定的就是坐標系。大多數地圖庫或者互聯網地圖默認支持WGS84地理坐標系和Web墨卡托投影坐標系。而在我國要求使用自然資源數據使用2000國家大地坐標&#xff08;CGCS2000&#xff09;。1. 背景 經…

[特殊字符] Java反射從入門到飛升:手撕類結構,動態解析一切![特殊字符]

【&#x1f50d;震撼揭秘】 你是否曾想窺探Java類的內部結構&#xff1f;&#x1f914; 是否好奇Spring框架如何實現"萬物皆可注入"&#xff1f;? 本文將帶你從反射小白晉升為反射高手&#xff0c;用一行代碼透視任意類的構造方法、成員變量和私有方法&#xff01;&…