मैं टूटी हुई छवि आइकन को कैसे छिपा सकता हूं? उदाहरण :
मेरे पास त्रुटि के साथ एक छवि है:
<img src="Error.src"/>
समाधान सभी ब्राउज़रों में काम करना चाहिए।
मैं टूटी हुई छवि आइकन को कैसे छिपा सकता हूं? उदाहरण :
मेरे पास त्रुटि के साथ एक छवि है:
<img src="Error.src"/>
समाधान सभी ब्राउज़रों में काम करना चाहिए।
जवाबों:
सीएसएस / एचटीएमएल के लिए यह जानने का कोई तरीका नहीं है कि क्या छवि टूटी हुई कड़ी है, इसलिए आपको जावास्क्रिप्ट का उपयोग करना होगा, इससे कोई फर्क नहीं पड़ता
लेकिन यहां छवि को छिपाने या बैकअप के साथ स्रोत को बदलने के लिए एक न्यूनतम विधि है।
<img src="Error.src" onerror="this.style.display='none'"/>
या
<img src="Error.src" onerror="this.src='fallback-img.jpg'"/>
आप इस तर्क को कई छवियों पर एक साथ कुछ इस तरह से लागू कर सकते हैं:
document.addEventListener("DOMContentLoaded", function(event) {
document.querySelectorAll('img').forEach(function(img){
img.onerror = function(){this.style.display='none';};
})
});
<img src="error.src">
<img src="error.src">
<img src="error.src">
<img src="error.src">
एक के लिए सीएसएस विकल्प देख michalzuber का जवाब नीचे। आप संपूर्ण छवि को छिपा नहीं सकते, लेकिन आप बदलते हैं कि टूटा हुआ आइकन कैसा दिखता है।
लोग यहाँ क्या कह रहे हैं, इसके बावजूद आपको जावास्क्रिप्ट की आवश्यकता नहीं है, आपको सीएसएस की भी आवश्यकता नहीं है !!
यह वास्तव में केवल HTML के साथ बहुत ही उल्लेखनीय और सरल है। यदि छवि लोड नहीं होती है, तो आप एक डिफ़ॉल्ट छवि भी दिखा सकते हैं । ऐसे...
यह सभी ब्राउज़रों पर भी काम करता है, यहां तक कि IE8 (250,000+ आगंतुकों में से जिनको मैंने सितंबर 2015 में होस्ट किया था, ज़ीरो लोगों ने IE8 से भी बदतर कुछ इस्तेमाल किया, जिसका अर्थ है कि यह समाधान वस्तुतः सब कुछ के लिए काम करता है )।
चरण 1: एक के रूप में छवि संदर्भ वस्तु एक के बजाय img । जब ऑब्जेक्ट विफल होते हैं तो वे टूटे हुए आइकन नहीं दिखाते हैं; वे सिर्फ कुछ नहीं करते हैं। IE8 से शुरू करते हुए, आप वस्तु और Img टैग का परस्पर उपयोग कर सकते हैं। आप नियमित छवियों के साथ सभी शानदार सामानों का आकार बदल सकते हैं और कर सकते हैं। ऑब्जेक्ट टैग से डरो मत; यह सिर्फ एक टैग है, कुछ भी बड़ा और भारी नहीं है और यह कुछ भी धीमा नहीं करता है। आप बस दूसरे नाम से img टैग का उपयोग करेंगे। एक गति परीक्षण से पता चलता है कि वे पहचान के लिए उपयोग किए जाते हैं।
चरण 2: (वैकल्पिक, लेकिन भयानक) उस वस्तु के अंदर एक डिफ़ॉल्ट छवि छड़ी। यदि आप चाहते हैं कि छवि वास्तव में ऑब्जेक्ट में लोड हो , तो डिफ़ॉल्ट छवि दिखाई नहीं देगी। उदाहरण के लिए, आप उपयोगकर्ता अवतार की एक सूची दिखा सकते हैं, और यदि किसी के पास सर्वर पर अभी तक कोई छवि नहीं है, तो वह प्लेसहोल्डर छवि दिखा सकता है ... कोई जावास्क्रिप्ट या सीएसएस की आवश्यकता नहीं है, लेकिन आपको इसकी विशेषताएं मिलती हैं ज्यादातर लोग जावास्क्रिप्ट लेते हैं।
यहाँ कोड है ...
<object data="avatar.jpg" type="image/jpg">
<img src="default.jpg" />
</object>
... हाँ, यह इतना आसान है।
यदि आप सीएसएस के साथ डिफ़ॉल्ट छवियों को लागू करना चाहते हैं, तो आप इसे इस तरह से अपने HTML में और भी सरल बना सकते हैं ...
<object class="avatar" data="user21.jpg" type="image/jpg"></object>
... और बस इस उत्तर से सीएसएस जोड़ें -> https://stackoverflow.com/a/32928240/3196360
object { pointer-events: none; }
अपने CSS में उपयोग करें (स्रोत: stackoverflow.com/a/16534300 )
<object>
टैग के बजाय खोज इंजन आपके टैग का उपयोग करना पसंद करेंगे <img>
। क्या यह दृष्टिकोण HTML5-अनुरूप है और सभी प्रमुख ब्राउज़रों द्वारा सही ढंग से प्रस्तुत किया गया है?
Https://bitsofco.de/styling-broken-images/ पर एक शानदार समाधान मिला
img {
position: relative;
}
/* style this to fit your needs */
/* and remove [alt] to apply to all images*/
img[alt]:after {
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #fff;
font-family: 'Helvetica';
font-weight: 300;
line-height: 2;
text-align: center;
content: attr(alt);
}
<img src="error">
<br>
<img src="broken" alt="A broken image">
<br>
<img src="https://images-na.ssl-images-amazon.com/images/I/218eLEn0fuL.png" alt="A bird" style="width: 120px">
img[alt]::before
। आप चाहें display:inline-block
तो इसका उपयोग कर सकते हैं , क्योंकि यह मूल के करीब है।
यदि आप टेक्स्ट alt = "abc" के साथ alt जोड़ेंगे तो यह शो को थम्बनेल भ्रष्ट दिखाएगा, और ऑल्ट मैसेज एबीसी
<img src="pic_trulli.jpg" alt="abc"/>
यदि आप पूरी तरह नहीं जोड़ेंगे, तो यह शो को थम्बनेल को भ्रष्ट दिखाएगा
<img src="pic_trulli.jpg"/>
यदि आप टूटे हुए को जोड़ना चाहते हैं तो बस alt = "" यह भ्रष्ट थंबनेल और कोई भी Alt संदेश (js का उपयोग किए बिना) नहीं दिखाएगा
<img src="pic_trulli.jpg" alt=""/>
यदि आप टूटे हुए को छिपाना चाहते हैं, तो बस alt = "" और onerror = "this.style.display = 'none' जोड़ें, यह भ्रष्ट थंबनेल और कोई भी alt संदेश (js के साथ) नहीं दिखाएगा
<img src="pic_trulli.jpg" alt="abc" onerror="this.style.display='none'"/>
4th one थोड़ा खतरनाक है (बिल्कुल नहीं), यदि आप onerror इवेंट में किसी भी छवि को जोड़ना चाहते हैं, तो यह प्रदर्शित नहीं होगा भले ही Image मौजूद हो। style.display जोड़ने जैसा है। इसलिए, इसका उपयोग तब करें जब आपको प्रदर्शित करने के लिए किसी वैकल्पिक छवि की आवश्यकता न हो।
display: 'none'; // in css
यदि हम इसे CSS में देते हैं, तो आइटम प्रदर्शित नहीं होगा (जैसे छवि, iframe, div ऐसा)।
यदि आप छवि प्रदर्शित करना चाहते हैं और आप पूरी तरह से रिक्त स्थान प्रदर्शित करना चाहते हैं यदि त्रुटि है, तो आप उपयोग कर सकते हैं, लेकिन यह भी ध्यान रखें कि यह कोई स्थान नहीं लेगा। तो, आपको इसे एक div में रखने की आवश्यकता हो सकती है
alt=""
! यह सचमुच है! धन्यवाद। तो खुशी है कि मैं पेज के नीचे स्क्रॉल किया। मैं आलसी लोडिंग का उपयोग कर रहा हूं, और इन-फ्रेम छवियां जो अभी तक लोड नहीं हुई हैं (क्योंकि ब्राउज़र गलती से सोचता है कि व्यूपोर्ट ने उन्हें अभी तक स्क्रॉल नहीं किया है) टूटी हुई छवियों के रूप में दिखाया गया है। थोड़ा स्क्रॉल, और वे फिर से दिखाई देते हैं। उनकी जगह पर टूट छवियों इतना बदसूरत हालांकि थे
मुझे लगता है कि सबसे आसान तरीका है कि टेक्स्ट-इंडेंट संपत्ति द्वारा टूटी हुई छवि आइकन को छिपाना।
img {
text-indent: -10000px
}
यदि आप "alt" विशेषता देखना चाहते हैं तो स्पष्ट रूप से यह काम नहीं करता है।
यदि आप छवि को प्लेसहोल्डर के रूप में रखना चाहते हैं / चाहते हैं, तो आप छवि आकार सेट करने के लिए ओपेरर और कुछ CSS के साथ अपारदर्शिता को 0 में बदल सकते हैं। इस तरह आपको टूटी हुई लिंक दिखाई नहीं देगी, लेकिन पेज सामान्य रूप से लोड होता है।
<img src="<your-image-link->" onerror="this.style.opacity='0'" />
img {
width: 75px;
height: 100px;
}
मैं इसे पसंद किया जवाब से निक और इस समाधान के साथ चारों ओर खेल रहा था। एक क्लीनर विधि मिली। चूँकि: pseudos के बाद im / :: के बाद बदले हुए तत्व जैसे कि img और ऑब्जेक्ट पर काम नहीं करते हैं, वे केवल तभी काम करेंगे जब ऑब्जेक्ट डेटा (src) लोड न हो। यह HTML को अधिक साफ रखता है और केवल छद्म को जोड़ेगा यदि ऑब्जेक्ट लोड करने में विफल रहता है।
object {
position: relative;
float: left;
display: block;
width: 200px;
height: 200px;
margin-right: 20px;
border: 1px solid black;
}
object::after {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
content: '';
background: red url("http://placehold.it/200x200");
}
<object data="http://lorempixel.com/200/200/people/1" type="image/png"></object>
<object data="http://broken.img/url" type="image/png"></object>
अगर आपको अभी भी इमेज कंटेनर दिखाई दे रहा है, तो यह बाद में भरा होने के कारण दिखाई नहीं देता है और इसे दिखाने और छुपाने से आप परेशान नहीं होना चाहते हैं, तो आप src के अंदर 1x1 पारदर्शी छवि को चिपका सकते हैं:
<img id="active-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"/>
मैंने इस सटीक उद्देश्य के लिए इसका इस्तेमाल किया। मेरे पास एक छवि कंटेनर था जो कि अजाक्स के माध्यम से इसमें एक छवि लोड करने वाला था। क्योंकि छवि बड़ी थी और लोड करने में थोड़ा समय लगा, इसलिए इसे Gif लोडिंग बार के CSS में बैकग्राउंड-इमेज सेट करने की आवश्यकता थी।
हालाँकि, क्योंकि src खाली था, टूटा हुआ छवि आइकन अभी भी उन ब्राउज़रों में दिखाई दिया जो इसका उपयोग करते हैं।
पारदर्शी 1x1 Gif को सेट करना इस समस्या को बस और प्रभावी रूप से CSS या जावास्क्रिप्ट के माध्यम से बिना किसी कोड परिवर्धन के ठीक करता है।
CSS का उपयोग करना केवल कठिन है, लेकिन आप टैग के background-image
बजाय CSS का उपयोग कर सकते हैं <img>
...
कुछ इस तरह:
एचटीएमएल
<div id="image"></div>
सीएसएस
#image {
background-image: url(Error.src);
width: //width of image;
height: //height of image;
}
यहाँ एक काम कर रहे बेला है ।
नोट: मैंने सीएसएस को फेल्ड पर सीएसएस में सिर्फ यह दिखाने के लिए जोड़ा कि छवि कहां होगी।
ऑब्जेक्ट टैग का उपयोग करें। इस तरह टैग के बीच वैकल्पिक पाठ जोड़ें:
<object data="img/failedToLoad.png" type="image/png">Alternative Text</object>
के बाद से 2005 , मोज़िला ब्राउज़र जैसे फ़ायरफ़ॉक्स अमानक का समर्थन किया है :-moz-broken
सीएसएस छद्म वर्ग है कि वास्तव में इस अनुरोध को पूरा कर सकते हैं:
td {
min-width:64px; /* for display purposes so you can see the empty cell */
}
img[alt]:-moz-broken {
display:none;
}
<table border="1"><tr><td>
<img src="error">
</td><td>
<img src="broken" alt="A broken image">
</td><td>
<img src="https://images-na.ssl-images-amazon.com/images/I/218eLEn0fuL.png"
alt="A bird" style="width: 120px">
</td></tr></table>
img[alt]::before
फ़ायरफ़ॉक्स 64 में भी काम करता है (हालांकि एक समय ऐसा था img[alt]::after
इसलिए यह विश्वसनीय नहीं था )। मुझे Chrome 71 में काम करने के लिए या तो नहीं मिल सकता है।
आप एक सीएसएस समाधान के रूप में इस पथ का अनुसरण कर सकते हैं
img {
width:200px;
height:200px;
position:relative
}
img:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: inherit;
height: inherit;
background: #ebebeb url('http://via.placeholder.com/300?text=PlaceHolder') no-repeat center;
color: transparent;
}
<img src="gdfgd.jpg">
गुम छवियां या तो कुछ भी नहीं दिखाएंगी, या [एक प्रदर्शित करें? ] शैली बॉक्स जब उनका स्रोत नहीं मिल सकता है। इसके बजाय आप एक "लापता छवि" ग्राफ़िक के साथ प्रतिस्थापित करना चाहते हैं जो आपको यकीन है कि मौजूद है इसलिए बेहतर दृश्य प्रतिक्रिया है कि कुछ गलत है। या, आप इसे पूरी तरह से छिपाना चाह सकते हैं। यह संभव है, क्योंकि जो ब्राउज़र एक "त्रुटि" जावास्क्रिप्ट घटना से आग नहीं पा सकते हैं, हम उनके लिए देख सकते हैं।
//Replace source
$('img').error(function(){
$(this).attr('src', 'missing.png');
});
//Or, hide them
$("img").error(function(){
$(this).hide();
});
इसके अतिरिक्त, आप किसी साइट व्यवस्थापक को ईमेल भेजने के लिए किसी प्रकार की अजाक्स कार्रवाई को ट्रिगर कर सकते हैं जब ऐसा होता है।
के साथ चाल img::after
एक अच्छा सामान है, लेकिन कम से कम 2 downsides है:
मैं जावास्क्रिप्ट के बिना एक सार्वभौमिक समाधान नहीं जानता, लेकिन फ़ायरफ़ॉक्स के लिए केवल एक अच्छा है:
img:-moz-broken{
opacity: 0;
}
किसी भी कोड की आवश्यकता के बिना ऐसा करने का एक मूल और बहुत ही सरल तरीका सिर्फ एक खाली ऑल्ट स्टेटमेंट प्रदान करना होगा। ब्राउज़र फिर छवि को रिक्त के रूप में लौटाएगा। यह वैसा ही लगेगा जैसे अगर छवि नहीं है।
उदाहरण:
<img class="img_gal" alt="" src="awesome.jpg">
इसे देखने की कोशिश करो! ;)
alt=""
। वही फ़ायरफ़ॉक्स के लिए चला जाता है।
भविष्य के googlers के लिए, 2016 में विशेषता चयनकर्ता का उपयोग करके खाली छवियों को छिपाने का एक ब्राउज़र सुरक्षित शुद्ध सीएसएस तरीका है:
img[src="Error.src"] {
display: none;
}
संपादित करें: मैं वापस आ गया हूं - भविष्य के गोगलर्स के लिए, 2019 में शैडो डोम में वास्तविक ऑल्ट टेक्स्ट और ऑल टेक्स्ट इमेज को स्टाइल करने का एक तरीका है, लेकिन यह केवल डेवलपर टूल में काम करता है। इसलिए आप इसका उपयोग नहीं कर सकते। माफ़ करना। यह कितना अच्छा होगा।
#alttext-container {
opacity: 0;
}
#alttext-image {
opacity: 0;
}
#alttext {
opacity: 0;
}
img[src=''] { display: none; }
यह eBay html केवल टेम्पलेट्स के साथ फिर से प्रासंगिक हो गया