Element:checkVisibility() 方法

Baseline 2024
新推出

自 ⁨2024 年 3 月⁩ 起,此功能可在最新的裝置和瀏覽器版本上執行。此功能可能不適用於較舊的裝置或瀏覽器。

Element 介面的 checkVisibility() 方法檢查元素是否可見。

在以下任一情況下,此方法返回 false

可選引數啟用額外的檢查,以測試“可見”的其他解釋。例如,你可以進一步檢查元素的不透明度是否為 0,如果元素 visibility 屬性的值使其不可見,或者如果元素 content-visibility 屬性的值為 auto 且當前跳過其渲染。

語法

js
checkVisibility(options)

引數

options 可選

一個物件,指示要執行的附加檢查。可能的選項是:

contentVisibilityAuto

如果為 true,則檢查元素 content-visibility 屬性是否具有(或繼承)值 auto,並且當前正在跳過其渲染。預設為 false

opacityProperty

如果為 true,則檢查元素 opacity 屬性是否具有(或繼承)值 0。預設為 false

visibilityProperty

如果為 true,則檢查元素是否因其 visibility 屬性的值而不可見。預設為 false

注意:不可見的元素包括那些具有 visibility: hidden 的元素,以及某些具有 visibility: collapse 的元素型別。

checkOpacity

opacityProperty 的歷史別名。

checkVisibilityCSS

visibilityProperty 的歷史別名。

返回值

如果滿足以下任何條件,則為 false,否則為 true

  • 該元素沒有關聯的框。
  • 該元素 content-visibility 屬性具有(或繼承)值 hidden
  • opacityProperty (或 checkOpacity) 為 true 且元素 opacity 屬性具有(或繼承)值 0
  • visibilityProperty (或 checkVisibilityCSS) 為 true 且元素因其 visibility 屬性的值而不可見。
  • contentVisibilityAutotruecontent-visibility 屬性具有(或繼承)值 auto,並且元素渲染被跳過。

示例

使用不同的 CSS 測試 checkVisibility()

以下示例允許你測試 checkVisibility() 的結果如何隨 displaycontent-visibilityvisibilityopacity CSS 屬性的不同值而變化。

HTML

HTML 定義了一個用於影響 checkVisibility() 結果的 CSS 屬性的 <select> 元素。第一個(預設選中)值在應用於元素時應導致 checkVisibility() 返回 true,而其他值則會影響可見性。

html
<select id="css_display" name="css_display">
  <option value="block" selected>display: block</option>
  <option value="none">display: none</option>
  <option value="content">display: content</option>
</select>

<select id="css_content_visibility" name="css_content_visibility">
  <option value="visible" selected>content-visibility: visible</option>
  <option value="hidden">content-visibility: hidden</option>
  <option value="auto">content-visibility: auto</option>
</select>

<select id="css_opacity" name="css_opacity">
  <option value="1" selected>opacity: 1</option>
  <option value="0">opacity: 0</option>
</select>

<select id="css_visibility" name="css_visibility">
  <option value="visible" selected>visibility: visible</option>
  <option value="hidden">visibility: hidden</option>
  <option value="collapse">visibility: collapse</option>
</select>

接下來我們有一個 <pre>,用於輸出在引數中不傳遞任何選項時以及每個單獨選項值時 checkVisibility() 檢查的結果。最後我們有將被測試的元素(我們將對其應用選定的 CSS 屬性值)。

html
<pre id="output_result"></pre>
<div id="test_element">The element to be checked for visibility.</div>

CSS

CSS 只是突出顯示要測試的元素。

css
#test_element {
  border: solid;
  border-color: blue;
}

JavaScript

以下程式碼獲取每個 <select> 元素。updateCSS() 方法在啟動時以及當 select 元素更改時呼叫,以將選定的 CSS 應用於目標元素。

js
const displayCssSelect = document.getElementById("css_display");
const contentVisibilityCssSelect = document.getElementById(
  "css_content_visibility",
);
const displayCssOpacity = document.getElementById("css_opacity");
const displayCssVisibility = document.getElementById("css_visibility");

const outputResult = document.getElementById("output_result");
const elementToCheck = document.getElementById("test_element");

updateCSS();

const cssSelectors = document.querySelectorAll("select");
cssSelectors.forEach((select) => {
  select.addEventListener("change", (event) => {
    updateCSS();
  });
});

function updateCSS() {
  // Apply selected CSS properties to target element
  elementToCheck.style.display = displayCssSelect.value;
  elementToCheck.style.contentVisibility = contentVisibilityCssSelect.value;
  elementToCheck.style.opacity = displayCssOpacity.value;
  elementToCheck.style.visibility = displayCssVisibility.value;

  // Call checkVisibility() on element using default and each of options
  const defaultVisibilityCheck = elementToCheck.checkVisibility();
  const opacityVisibilityCheck = elementToCheck.checkVisibility({
    opacityProperty: true,
  });
  const cssVisibilityCheck = elementToCheck.checkVisibility({
    visibilityProperty: true,
  });
  const contentVisibilityAutoCheck = elementToCheck.checkVisibility({
    contentVisibilityAuto: true,
  });

  // Output the results of the tests
  outputResult.innerText = `Checks on element below (may be hidden):
- Result of checkVisibility(): ${defaultVisibilityCheck}
- Result of checkVisibility({opacityProperty: true}): ${opacityVisibilityCheck}
- Result of checkVisibility({visibilityProperty: true}): ${cssVisibilityCheck}
- Result of checkVisibility({contentVisibilityAuto: true}): ${contentVisibilityAutoCheck}`;
}

結果

結果如下所示。如果你更改選擇,結果將應用於測試元素(藍色輪廓),並且應顯示每個設定的 checkVisibility() 結果。因此,例如,如果你設定 opacity: 0,則該測試(僅此測試)應指示 false。但是,如果你設定 display: none,則所有測試都應返回 false

規範

規範
CSSOM 檢視模組
# dom-element-checkvisibility

瀏覽器相容性