আমি কীভাবে ভাঙা চিত্রের আইকনটি আড়াল করতে পারি? উদাহরণ :
আমার ত্রুটিযুক্ত এসসিআর সহ একটি চিত্র রয়েছে:
<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 এর সাথে খুব ডাবল এবং সহজ। এমনকি কোনও চিত্র লোড না হলে আপনি একটি ডিফল্ট চিত্রও প্রদর্শন করতে পারেন । এখানে ...
এটি সমস্ত ব্রাউজারগুলিতেও কাজ করে, এমনকি আইই 8 হিসাবে অনেক পিছনে (সেপ্টেম্বর ২০১৫-তে আমি হোস্ট করা সাইটগুলিতে 250,000++ দর্শকের মধ্যে, জিরো লোকেরা IE8 এর চেয়েও খারাপ কিছু ব্যবহার করেছিল, যার অর্থ এই সমাধানটি আক্ষরিকভাবে সমস্ত কিছুর জন্য কাজ করে )।
ধাপ 1: একটি হিসাবে ইমেজ রেফারেন্স বস্তু একটি পরিবর্তে চিত্র । যখন বস্তুগুলি ব্যর্থ হয় তারা ভাঙা আইকন প্রদর্শন করে না; তারা শুধু কিছুই না। আইই 8 দিয়ে শুরু করে আপনি অবজেক্ট এবং ইমজি ট্যাগগুলি আন্তঃবিন্যভাবে ব্যবহার করতে পারেন। আপনি নিয়মিত চিত্রগুলির সাথেও আপনি যা যা করতে পারেন সেই সমস্ত গৌরবময় জিনিস আপনি পুনরায় আকার দিতে এবং করতে পারেন। অবজেক্ট ট্যাগ থেকে ভয় পাবেন না; এটি কেবল একটি ট্যাগ, বড় এবং ভারী কিছুই বোঝা যায় না এবং এটি কোনও কিছুই ধীর করে না। আপনি কেবল অন্য নামে ইমগ ট্যাগটি ব্যবহার করবেন। একটি গতি পরীক্ষা দেখায় যে তারা অভিন্নভাবে ব্যবহৃত হয়।
পদক্ষেপ 2: (ptionচ্ছিক, তবে দুর্দান্ত) সেই বস্তুর ভিতরে একটি ডিফল্ট চিত্র আঁকুন । আপনি চাইলে চিত্রটি বস্তুটিতে আসলে লোড হয় , ডিফল্ট চিত্রটি প্রদর্শিত হবে না। সুতরাং উদাহরণস্বরূপ আপনি ব্যবহারকারীর অবতারগুলির একটি তালিকা প্রদর্শন করতে পারেন, এবং যদি কারও কাছে এখনও সার্ভারে একটি চিত্র না থাকে তবে এটি স্থানধারক চিত্রটি দেখাতে পারে ... জাভাস্ক্রিপ্ট বা সিএসএসের প্রয়োজন নেই, তবে আপনি কীসের বৈশিষ্ট্যগুলি পেয়েছেন বেশিরভাগ লোক জাভাস্ক্রিপ্ট নেয়।
কোডটি এখানে ...
<object data="avatar.jpg" type="image/jpg">
<img src="default.jpg" />
</object>
... হ্যাঁ, এটা সহজ।
আপনি যদি সিএসএসের মাধ্যমে ডিফল্ট চিত্রগুলি বাস্তবায়ন করতে চান তবে আপনি নিজের HTML এটিকে আরও সহজ করে তুলতে পারেন ...
<object class="avatar" data="user21.jpg" type="image/jpg"></object>
... এবং কেবল এই উত্তরটি থেকে CSS যুক্ত করুন -> https://stackoverflow.com/a/32928240/3196360
object { pointer-events: none; }
আপনার
<object>
ট্যাগগুলির পরিবর্তে আপনার ট্যাগ ব্যবহার পছন্দ করবে <img>
। এই পদ্ধতিরটি কি এইচটিএমএল 5- সম্মতিযুক্ত এবং সমস্ত বড় ব্রাউজার দ্বারা সঠিকভাবে রেন্ডার করা হয়েছে?
Https://bitofco.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 যোগ করেন তবে এটি শোটি দুর্নীতিগ্রস্থ থাম্বনেইল এবং Alt বার্তা abc প্রদর্শন করবে
<img src="pic_trulli.jpg" alt="abc"/>
আপনি যদি Alt যোগ না করেন এটি শো দুর্নীতিগ্রস্থ থাম্বনেইল প্রদর্শন করবে
<img src="pic_trulli.jpg"/>
আপনি যদি ভাঙাটি গোপন করতে চান তবে কেবল Alt = "" যুক্ত করুন এটি দুর্নীতিগ্রস্থ থাম্বনেইল এবং কোনও Alt বার্তা প্রদর্শন করবে না (জেএস ব্যবহার না করে)
<img src="pic_trulli.jpg" alt=""/>
আপনি যদি ভাঙ্গাটি গোপন করতে চান তবে কেবল alt = "" & onerror = "this.style.display = 'কিছুই নয়" "যুক্ত করুন এটি ক্ষতিকারক থাম্বনেইল এবং কোনও Alt বার্তা প্রদর্শন করবে না (জেএস সহ)
<img src="pic_trulli.jpg" alt="abc" onerror="this.style.display='none'"/>
চতুর্থটি কিছুটা বিপজ্জনক (ঠিক ঠিক নয়), আপনি যদি অনিরর ইভেন্টে কোনও চিত্র যুক্ত করতে চান তবে চিত্রটি স্টাইল হিসাবে উপস্থিত থাকলেও এটি প্রদর্শিত হবে না is ডিসপ্লে যোগ করার মতো। সুতরাং, যখন আপনার প্রদর্শনের জন্য কোনও বিকল্প চিত্রের প্রয়োজন হবে না তখন এটি ব্যবহার করুন।
display: 'none'; // in css
যদি আমরা এটি সিএসএসে দিই, তবে আইটেমটি প্রদর্শিত হবে না (যেমন চিত্র, আইফ্রেমে, ডিভের মতো)।
আপনি যদি চিত্রটি প্রদর্শন করতে চান এবং ত্রুটি হলে আপনি সম্পূর্ণ ফাঁকা জায়গা প্রদর্শন করতে চান তবে আপনি ব্যবহার করতে পারেন তবে সতর্কতা অবলম্বন করুন এটি কোনও স্থান গ্রহণ করবে না। সুতরাং, আপনার এটি একটি ডিভে থাকতে পারে
alt=""
! আক্ষরিকভাবে এটি! ধন্যবাদ. আমি খুশি হয়ে আমি পৃষ্ঠার নীচে স্ক্রোল করেছি। আমি অলস লোডিং, এবং ইন-ফ্রেম চিত্রগুলি ব্যবহার করছি যা এখনও লোড হয়নি (কারণ ব্রাউজারটি ভুল করে ভিউপপোর্টটি এখনও তাদের কাছে স্ক্রোল করেনি) ভাঙ্গা চিত্র হিসাবে দেখায়। একটি ছোট স্ক্রোল, এবং তারা আবার প্রদর্শিত হবে। তাদের জায়গায় ভাঙা চিত্রগুলি এতটাই কুৎসিত ছিল
আমি মনে করি সবচেয়ে সহজ উপায় হ'ল পাঠ্য-ইনডেন্ট সম্পত্তি দ্বারা ভাঙা চিত্র আইকনটি লুকানো।
img {
text-indent: -10000px
}
অবশ্যই আপনি "Alt" বৈশিষ্ট্যটি দেখতে চাইলে এটি কাজ করে না।
আমি পছন্দ উত্তর দ্বারা নিক এবং এই সমাধান সঙ্গে প্রায় খেলে গেল। একটি ক্লিনার পদ্ধতি পেয়েছে। যেহেতু :: এর আগে / :: সিউডোগুলি img এবং অবজেক্টের মতো প্রতিস্থাপিত উপাদানগুলিতে কাজ না করে তারা কেবল তখনই কাজ করবে যখন অবজেক্ট ডেটা (src) লোড না করা হয়। এটি এইচটিএমএলকে আরও পরিষ্কার রাখে এবং কেবলমাত্র বস্তুটি লোড করতে ব্যর্থ হলে এটি ছদ্ম যুক্ত করবে।
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>
আপনি যদি স্থানধারক হিসাবে চিত্রটি রাখতে / প্রয়োজন রাখতে চান তবে চিত্রের আকার নির্ধারণের জন্য আপনি একটি অনাররর এবং কিছু সিএসএসের সাহায্যে অস্বচ্ছতা 0তে পরিবর্তন করতে পারেন। এইভাবে আপনি ভাঙা লিঙ্কটি দেখতে পাবেন না, তবে পৃষ্ঠাটি সাধারণ হিসাবে লোড হবে।
<img src="<your-image-link->" onerror="this.style.opacity='0'" />
img {
width: 75px;
height: 100px;
}
আপনার যদি ইমেজ ধারকটি পরে ভরাট হওয়ার কারণে দৃশ্যমান হওয়া দরকার এবং এটি প্রদর্শন এবং আড়াল করে বিরক্ত করতে চান না তবে আপনি এসআরসিটির অভ্যন্তরে 1x1 স্বচ্ছ চিত্রটি আটকে রাখতে পারেন:
<img id="active-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"/>
আমি এই সঠিক উদ্দেশ্যে এটি ব্যবহার করেছি। আমার একটি ইমেজ ধারক ছিল যা এজ্যাক্সের মাধ্যমে এটিতে একটি চিত্র লোড করতে চলেছে। চিত্রটি বড় ছিল এবং লোড হতে কিছুটা সময় নিয়েছে বলে এটি একটি জিআইএফ লোডিং বারের সিএসএসে একটি পটভূমি-চিত্র সেট করা দরকার।
তবে, এর এসসিআর খালি থাকার কারণে ভাঙ্গা চিত্রের আইকনটি এটি ব্যবহার করা ব্রাউজারগুলিতে এখনও উপস্থিত হয়েছিল।
স্বচ্ছ 1x1 জিআইফ সেট করে সিএসএস বা জাভাস্ক্রিপ্টের মাধ্যমে কোনও কোড সংযোজন না করে এই সমস্যাটি সহজ এবং কার্যকরভাবে সমাধান করে।
কেবল CSS ব্যবহার করা শক্ত, তবে আপনি ট্যাগগুলির background-image
পরিবর্তে সিএসএস ব্যবহার করতে পারেন <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>
২০০৫ সাল থেকে , ফায়ারফক্সের মতো মোজিলা ব্রাউজারগুলি এই স্ট্যান্ডার্ডটিকে :-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
ফায়ারফক্স in৪ এও কাজ করে (যদিও এটি একসময় এমন ছিল img[alt]::after
তাই এটি নির্ভরযোগ্য নয়)। আমি তাদের মধ্যে ক্রোম 71-এ কাজ করতে পারি না।
আপনি এই পথটিকে CSS সমাধান হিসাবে অনুসরণ করতে পারেন
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 টি ডাউনসাইড রয়েছে:
আমি জাভাস্ক্রিপ্ট ছাড়া সার্বজনীন সমাধান জানি না, তবে ফায়ারফক্সের জন্য কেবল একটি দুর্দান্ত সমাধান রয়েছে:
img:-moz-broken{
opacity: 0;
}
কোনও কোডের প্রয়োজন ছাড়াই এটি করার একটি প্রাথমিক এবং খুব সহজ উপায় হ'ল কেবল একটি খালি এলটি স্টেটমেন্ট সরবরাহ করা। এরপরে ব্রাউজারটি খালি হিসাবে ছবিটি ফিরিয়ে দেবে। চিত্রটি না থাকলে দেখতে এটি দেখতে ঠিক এমনই হবে।
উদাহরণ:
<img class="img_gal" alt="" src="awesome.jpg">
এটি দেখতে চেষ্টা করুন! ;)
alt=""
। ফায়ারফক্সের ক্ষেত্রেও একই রকম।
ভবিষ্যতের গুগলদের জন্য, ২০১৪ সালে অ্যাট্রিবিউট সিলেক্টর ব্যবহার করে খালি চিত্রগুলি গোপন করার ব্রাউজারের নিরাপদ খাঁটি সিএসএস উপায় রয়েছে:
img[src="Error.src"] {
display: none;
}
সম্পাদনা: আমি ফিরে এসেছি - ভবিষ্যতের গুগলদের জন্য, 2019 সালে শ্যাডো ডোমে প্রকৃত Alt পাঠ্য এবং Alt পাঠ্য চিত্রটি স্টাইল করার একটি উপায় রয়েছে তবে এটি কেবল বিকাশকারী সরঞ্জামগুলিতে কাজ করে। সুতরাং আপনি এটি ব্যবহার করতে পারবেন না। দুঃখিত। এটা খুব সুন্দর হবে।
#alttext-container {
opacity: 0;
}
#alttext-image {
opacity: 0;
}
#alttext {
opacity: 0;
}
img[src=''] { display: none; }
এটি ইবে এইচটিএমএল কেবলমাত্র টেম্পলেটগুলির সাথে আবার প্রাসঙ্গিক হয়ে উঠেছে