Web前端之隱藏元素方式的區別、Vue循環標簽的時候在同一標簽上隱藏元素的解決辦法、hidden、display、visibility

MENU

  • 標簽
  • 區別速覽
  • 詳解
    • ? v-if
    • ? v-show
    • ? :style="{ display: ... }"
    • ?? :hidden
    • ?? :style="{ visibility: ... }"
  • 總結


標簽

<div v-for="item in list" v-if="item.isShow">{{item.name}}</div>
<div v-for="item in list" v-show="item.isShow">{{item.name}}</div>
<div v-for="item in list" :style="{ display: item.isShow? '' : 'none' }">{{item.name}}</div>
<div v-for="item in list" :hidden="!item.isShow">{{item.name}}</div>
<div v-for="item in list" :style="{ visibility: item.isShow? 'visible' : 'hidden' }">{{item.name}}</div>

區別速覽

序號寫法渲染到DOM占位響應性性能推薦指數說明
1v-if? 不渲染? 不占位高(增刪)低(頻繁銷毀/重建)?? 低每個item.isShow=false的元素根本不會出現在DOM中,適合頻繁切換不推薦
2v-show? 渲染? 不占位高(僅切換 CSS)? 高DOM始終存在,只是通過display: none切換,可用于頻繁切換可見性
3:style=“display”? 渲染? 不占位? 高v-show本質一致,更靈活(可配合過渡/動畫)
4:hidden? 渲染? 不占位(某些瀏覽器)中(兼容性一般)?? 中HTML原生hidden屬性,有兼容性差異(如 IE),不推薦用于復雜布局
5:style=“visibility”? 渲染? 占位?? 中偏低元素不可見但仍然占空間,適合需要保留布局占位但不顯示內容的場景

詳解

? v-if

<div v-for="item in list" v-if="item.isShow">{{item.name}}</div>

邏輯層判斷:如果isShow=false,就不渲染該DOM元素。
Vue編譯優化:Vue在每次更新時會銷毀/創建DOM節點。
性能影響:對于頻繁切換的列表,v-if性能較差(會頻繁插入/刪除DOM)。
作用域問題:v-if的判斷發生在v-for外層,Vue官方建議避免同標簽同時使用v-if與v-for,會導致作用域錯亂(應放在<template>上)。
?適合:只渲染一次或很少改變顯示狀態的內容(如首次加載/權限判斷)


? v-show

<div v-for="item in list" v-show="item.isShow">{{item.name}}</div>

DOM元素始終存在;
Vue只是動態加上或移除display: none;
更新快,性能好。
?適合:需要頻繁切換顯示狀態的場景(如切換tab、展開折疊)


? :style=“{ display: … }”

<div v-for="item in list" :style="{ display: item.isShow ? '' : 'none' }">{{item.name}}</div>

與v-show類似,控制的是CSS顯示狀態;
更靈活,可綁定多個樣式,也可使用動畫庫或寫自定義transition
適合在v-for這種循環內做粒度更細的控制。
?推薦用法,兼顧靈活性與性能


?? :hidden

<div v-for="item in list" :hidden="!item.isShow">{{item.name}}</div>

控制HTML的hidden屬性(布爾值);
行為接近display: none
某些老瀏覽器(如IE、舊版Edge)對hidden支持不好;
不能做動畫,CSS控制也較差。
??不推薦在復雜布局中使用,簡單項目可用


?? :style=“{ visibility: … }”

<div v-for="item in list" :style="{ visibility: item.isShow ? 'visible' : 'hidden' }">{{item.name}}</div>

DOM始終存在;
元素隱藏但仍然占據空間(對布局有影響);
可以搭配opacity做過渡動畫。
?適合:希望“保留位置”但臨時不顯示的內容
例如:橫向滾動條下的輪播項、等高柵格系統。


總結

場景推薦方式
靜態控制顯示,頁面首次加載是否渲染v-if
頻繁切換可見性(如 tab 切換)v-show或:style=“display”
需要控制多個樣式或結合動畫:style更靈活
只想快速隱藏并支持原生 hidden 屬性:hidden(輕量項目可用)
需要隱藏但保留占位visibility: hidden

如果在表格、網格、動態列表等復雜場景中使用,推薦優先考慮:
1、:style="{ display: item.isShow ? '' : 'none' }" 通用又安全
2、或v-show(只在v-for的子元素中使用)

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

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

相關文章

Kafka 安裝教程(支持 Windows / Linux / macOS)

一、下載 1、kafka官網下載地址:https://kafka.apache.org/downloads 根據實際情況下載對應的版本 2、JDK的版本最好是17+ JDK下載地址:https://www.oracle.com/java/technologies/javase/jdk17-0-13-later-archive-downloads.html 二、安裝 前置條件 安裝 Java(至少 Jav…

Linux研學-用戶解析

一 root用戶 1 介紹 root是Linux系統中唯一的超級管理員賬戶&#xff0c;擁有系統的最高權限&#xff08;UID0&#xff09;&#xff0c;可執行任何操作&#xff0c;包括修改系統文件、安裝/卸載軟件、管理用戶權限等。 ??如普通用戶無法在根目錄下創建文件&#xff0c;而roo…

設計模式系列(07):建造者模式(Builder)

本文為設計模式系列第7篇&#xff0c;聚焦創建型模式中的建造者模式&#xff0c;涵蓋定義、原理、實際業務場景、優缺點、最佳實踐及詳細代碼示例&#xff0c;適合系統學習與實戰應用。 目錄 1. 模式概述2. 使用場景3. 優缺點分析4. 實際應用案例5. 結構與UML類圖6. 代碼示例7…

HBuilder 發行Android(apk包)全流程指南

一、前言 小程序以其便捷性和輕量性受到越來越多開發者的青睞。HBuilder 作為一款強大的開發工具&#xff0c;為小程序開發提供了極大的便利。本文將詳細介紹如何通過 HBuilder 完成小程序的開發與發行。 二、環境準備 1. 安裝 HBuilder 訪問 DCloud 官方網站&#xff0c;下…

React 18新特性介紹

React 18是React團隊于2022年發布的一個重要版本&#xff0c;它引入了多項改進和新特性&#xff0c;在提升性能的同時也帶來了一些使用上的變化。本文將全面介紹React 18的主要新特性&#xff0c;包括并發渲染、API更新、瀏覽器兼容性等重要內容&#xff0c;并通過代碼示例說明…

設計模式——面向對象設計六大原則

摘要 本文詳細介紹了設計模式中的六大基本原則&#xff0c;包括單一職責原則、開放封閉原則、里氏替換原則、接口隔離原則、依賴倒置原則和合成復用原則。每個原則都通過定義、理解、示例三個部分進行闡述&#xff0c;旨在幫助開發者提高代碼的可維護性和靈活性。通過具體代碼…

使用 So-VITS-SVC 實現明星聲音克隆與視頻音軌替換實戰全流程

本文展示如何使用開源項目 so-vits-svc 實現聲音克隆與視頻音軌替換流程&#xff0c;適用于 AI 音頻工程、聲音合成等學習場景。所述內容僅限技術交流&#xff0c;禁止用于非法用途。 一、項目背景 此項目采用 so-vits-svc 4.1 開源框架&#xff0c;實現了“用明星聲音替換視頻…

【學習記錄】深入解析 AI 交互中的五大核心概念:Prompt、Agent、MCP、Function Calling 與 Tools

&#x1f4cc; 引言 隨著大語言模型&#xff08;LLM&#xff09;的發展&#xff0c;AI 已經不再只是“回答問題”的工具&#xff0c;而是可以主動執行任務、調用外部資源、甚至構建完整工作流的智能系統。 為了更好地理解和使用這些能力&#xff0c;我們需要了解 AI 交互中幾…

紋理壓縮格式優化

?? Unity 項目紋理壓縮格式優化終極指南 ——不同平臺、不同手機型號,如何正確選擇 ?? 什么是紋理壓縮(Texture Compression)? Texture壓縮 = 減小顯存占用,提升加載速度,減輕GPU負擔紋理是游戲中最大資源,占用50%+內存正確壓縮:減少GPU Bandwidth,提高渲染性能錯…

Docker輕松搭建Neo4j+APOC環境

Docker輕松搭建Neo4jAPOC環境 一、簡介二、Docker部署neo4j三、Docker安裝APOC插件四、刪除數據庫/切換數據庫 一、簡介 Neo4j 是一款高性能的 原生圖數據庫&#xff0c;采用 屬性圖模型 存儲數據&#xff0c;支持 Cypher查詢語言&#xff0c;適用于復雜關系數據的存儲和分析。…

NGINX `ngx_stream_core_module` 模塊概覽

一、模塊定位與功能 通用 TCP/UDP 代理 支持同時處理 TCP 和 UDP 流量&#xff0c;透明轉發請求到后端服務器組&#xff08;upstream&#xff09;。可作為四層負載均衡&#xff0c;根據客戶端 IP、權重、最少連接等策略將連接分發給后端。 預讀&#xff08;preread&#xff09…

JVM類加載高階實戰:從雙親委派到彈性架構的設計進化

前言 作為Java開發者&#xff0c;我們都知道JVM的類加載機制遵循"雙親委派"原則。但在實際開發中&#xff0c;特別是在金融支付、插件化架構等場景下&#xff0c;嚴格遵循這個原則反而會成為系統擴展的桎梏。本文將帶你深入理解雙親委派機制的本質&#xff0c;并分享…

MATLAB | 繪圖復刻(十九)| 輕松拿捏 Nature Communications 繪圖

hello這次真的是好久不見了&#xff0c;前段時間確實太忙&#xff0c;后臺都忙到沒時間看&#xff0c;對不住大家的熱情&#xff0c;這期復刻兩個 Nature Communications 繪圖&#xff0c;主要都和弦圖有關&#xff1a; 原圖 1 復刻圖 1 原圖 2 復刻圖 2 這次繪圖使用我自己開…

群暉NAS如何在虛擬機創建飛牛NAS

套件中心下載安裝Virtual Machine Manager 創建虛擬機 配置虛擬機 飛牛官網下載 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群暉NAS如何在虛擬機創建飛牛NAS - 個人信息分享

設計模式(代理設計模式)

代理模式解釋清楚&#xff0c;所以如果想對一個類進行功能上增強而又不改變原來的代碼情況下&#xff0c;那么只需要讓這個類代理類就是我們的順豐&#xff0c;對吧?并行增強就可以了。具體增強什么?在哪方面增強由代理類進行決定。 代碼實現就是使用代理對象代理相關的邏輯…

Flask + ECharts+MYSQL全球貿易數字化大屏

核心功能: 全球貿易熱力圖:展示中國與各國的貿易關系強度 貿易指標卡片:實時顯示貿易總額、投資額等關鍵指標 貿易伙伴排名:展示中國前10大貿易伙伴 貿易類型分布:展示各類商品的貿易占比 全球實時動態:滾動顯示全球貿易、投資等實時事件 技術亮點: 使用WebSocket實現實…

wpf Behaviors庫實現支持多選操作進行后臺綁定數據的ListView

<ListView ItemsSource"{Binding SchemeItems}" SelectionMode"Extended" VerticalAlignment"Stretch" HorizontalAlignment"Stretch"><ListView.ContextMenu><ContextMenu><MenuItem Header"刪除" …

50個JAVA常見代碼大全:學完這篇從Java小白到架構師

50個JAVA常見代碼大全&#xff1a;學完這篇從Java小白到架構師 Java&#xff0c;作為一門流行多年的編程語言&#xff0c;始終占據著軟件開發領域的重要位置。無論是初學者還是經驗豐富的程序員&#xff0c;掌握Java中常見的代碼和概念都是至關重要的。本文將列出50個Java常用…

【Linux手冊】馮諾依曼體系結構

目錄 前言 五大組件 數據信號 存儲器&#xff08;內存&#xff09;有必要嗎 常見面試題 前言 馮諾依曼體系結構是當代計算機基本架構&#xff0c;馮諾依曼體系有五大組件&#xff0c;通過這五大組件直觀的描述了計算機的工作原理&#xff1b;學習馮諾依曼體系可以讓給我們更…

10_聚類

描述 聚類&#xff08;clustering&#xff09;是將數據集劃分成組的任務&#xff0c;這些組叫作簇&#xff08;cluster&#xff09;。其目標是劃分數據&#xff0c;使得一個簇內的數據點非常相似且不同簇內的數據點非常不同。與分類算法類似&#xff0c;聚類算法為每個數據點分…