簡體   English   中英

圖像占位符

[英]Image Placeholder

我已經使用背景顏色定義了圖像標記,這樣如果沒有圖像,顏色應該顯示但仍然是破碎的圖像圖標顯示如何刪除它?

我不想通過添加jquery或任何框架使頁面笨重,我也不能添加任何類型的div到圖像,因為該網站幾乎完成。

只用javascript找到答案

function ImgError(source){
source.src = "/images/noimage.gif";
source.onerror = "";
return true;
}

<img src="someimage.png" onerror="ImgError(this);"/>

你可以使用以下隱藏:

<img
  src="my.png"
  onerror="this.style.display='none'"
/>

如果未找到圖像,則可以顯示另一張圖像:

<img src="my.png" onerror="this.src = 'image-not-found.png';" />

1x1空png的解決方案

        function ImgError(source){
            empty1x1png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQI12NgYAAAAAMAASDVlMcAAAAASUVORK5CYII=";
            source.src = "data:image/png;base64," + empty1x1png;
            source.onerror = "";
            return true;
        }

        <img src="someimage.png" onerror="ImgError(this);"/>

一個簡單的解決方案是使用占位符空白圖像。 這通常用於精靈,但我認為你也可以使用它。

你做的是,你創建一個啟用透明度的1x1 px空白gif圖像,將“src”屬性指向blank.gif並通過css background-image屬性給出圖像。 因此,即使未找到背景圖像,也不會顯示斷開的鏈接圖像。

這是某些瀏覽器的一個功能 - 據我所知,Firefox,Chrome和Safari在Internet Explorer顯示損壞的圖像圖標時沒有顯示任何內容。 沒有使用Javascript,我不相信你可以覆蓋這種行為。

瀏覽器會打破圖像圖標。 這不是你可以在代碼中改變的東西。 我想你會發現不同的瀏覽器處理丟失的圖像的方式不同。

您想要做的事情可能會有不同的處理,但......

樣式:

div.image-maybe-missing {
    width: 300px;
    height: 450px;
    background-color: red;
    background-image: url("/images/is-it-there.png");
}


HTML:

<div class="image-maybe-missing">
</div>

如果圖像不存在,這將為您提供一個帶紅色背景的空框。 div的寬度和高度需要與圖像的寬度和高度相匹配。

嘗試使用this.remove()刪除損壞的圖像占位符:

<div class="cell">
  <p>
    <img src="pic.png" onerror="this.remove();" />
  </p>
</div>

我使用單元格div來保留布局。

這是一個依賴瀏覽器的行為,但你無法做任何事情。 這里有幾個選項:

1)使用JavaScript向圖像添加一個onerror處理程序,當它無法通過使用css隱藏設置時隱藏它(你需要有一個包含div來應用背景顏色,因為背景顏色不會顯示圖像是否為hdden)。

要在不使用jQuery的情況下將錯誤處理程序應用於站點中的每個圖像並且不修改代碼,您可以執行此操作(將其放在頁面末尾的腳本中 - 如果它位於<head> ,則無法使用不能把它放在window.onload中,否則在圖像加載之前不會觸發)。

var images = document.getElementsByTagName('img');
for (i = 0; i < images.length; i++) {
    images[i].onerror = function() {
        this.style.visibility = 'hidden';
    }
}

2)在div上將圖像設置為css背景圖像,而不是使用<img>標簽。 它不是語義,但如果加載失敗則不會顯示損壞的圖像圖標,您仍然可以指定背景顏色和標簽(不是alt標簽)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM