আমি ব্যবহারকারীর ব্রাউজার উইন্ডোতে ফিট করার জন্য বৃহত চিত্রটির আকার পরিবর্তন করতে কিছু জাভাস্ক্রিপ্ট লিখছি। (দুর্ভাগ্যক্রমে আমি উত্স চিত্রগুলির আকার নিয়ন্ত্রণ করি না।)
এই জাতীয় কিছু HTML এ হবে:
<img id="photo"
src="a_really_big_file.jpg"
alt="this is some alt text"
title="this is some title text" />
srcকোনও imgট্যাগের চিত্রটি ডাউনলোড হয়েছে কিনা তা নির্ধারণ করার জন্য কি আমার জন্য কোনও উপায় আছে ?
আমার এটি দরকার কারণ $(document).ready()ব্রাউজারটি চিত্রটি লোড করার আগেই যদি কার্যকর করা হয় তবে আমি কোনও সমস্যায় পড়ছি। $("#photo").width()এবং $("#photo").height()স্থানধারকের আকার (Alt পাঠ্য) ফিরিয়ে দেবে। আমার ক্ষেত্রে এটি 134 x 20 এর মতো।
এই মুহুর্তে আমি কেবল ফটোটির উচ্চতা ১৫০ এরও কম কিনা তা পরীক্ষা করে নিচ্ছি এবং ধরে নিচ্ছি যে এটি যদি কেবলমাত্র ALL পাঠ্য হয়। তবে এটি বেশ হ্যাক এবং কোনও ছবি যদি ১৫০ পিক্সেলের চেয়ে কম লম্বা হয় (তবে এটি আমার বিশেষ ক্ষেত্রে সম্ভবত না), বা যদি Alt পাঠ্যটি ১৫০ পিক্সেলের বেশি লম্বা হয় (সম্ভবত একটি ছোট ব্রাউজার উইন্ডোতে ঘটতে পারে) ।
সম্পাদনা: যে কেউ কোডটি দেখতে চাইছেন তাদের জন্য:
$(function()
{
var REAL_WIDTH = $("#photo").width();
var REAL_HEIGHT = $("#photo").height();
$(window).resize(adjust_photo_size);
adjust_photo_size();
function adjust_photo_size()
{
if(REAL_HEIGHT < 150)
{
REAL_WIDTH = $("#photo").width();
REAL_HEIGHT = $("#photo").height();
if(REAL_HEIGHT < 150)
{
//image not loaded.. try again in a quarter-second
setTimeout(adjust_photo_size, 250);
return;
}
}
var new_width = . . . ;
var new_height = . . . ;
$("#photo").width(Math.round(new_width));
$("#photo").height(Math.round(new_height));
}
});
আপডেট : পরামর্শের জন্য ধন্যবাদ। যদি $("#photo").loadইভেন্টটির জন্য আমি কলব্যাক সেট করে নিই তবে ইভেন্টটি বরখাস্ত না হওয়ার ঝুঁকি রয়েছে , তাই আমি ইমেজ ট্যাগে সরাসরি একটি অনলাইন ইভেন্ট সংজ্ঞায়িত করেছি। রেকর্ডের জন্য, এখানে কোডটি দিয়ে আমি শেষ করেছি:
<img id="photo"
onload="photoLoaded();"
src="a_really_big_file.jpg"
alt="this is some alt text"
title="this is some title text" />
তারপরে জাভাস্ক্রিপ্টে:
//This must be outside $() because it may get called first
var isPhotoLoaded = false;
function photoLoaded()
{
isPhotoLoaded = true;
}
$(function()
{
//Hides scrollbars, so we can resize properly. Set with JS instead of
// CSS so that page doesn't break with JS disabled.
$("body").css("overflow", "hidden");
var REAL_WIDTH = -1;
var REAL_HEIGHT = -1;
$(window).resize(adjust_photo_size);
adjust_photo_size();
function adjust_photo_size()
{
if(!isPhotoLoaded)
{
//image not loaded.. try again in a quarter-second
setTimeout(adjust_photo_size, 250);
return;
}
else if(REAL_WIDTH < 0)
{
//first time in this function since photo loaded
REAL_WIDTH = $("#photo").width();
REAL_HEIGHT = $("#photo").height();
}
var new_width = . . . ;
var new_height = . . . ;
$("#photo").width(Math.round(new_width));
$("#photo").height(Math.round(new_height));
}
});
max-widthএবংmax-heightজাভাস্ক্রিপ্ট সঙ্গে ইমেজ স্টাইলিং মধ্যে? তারপরে আপনি ভিউপোর্টের প্রস্থ / উচ্চতার আকারে সর্বোচ্চ প্রস্থ / উচ্চতা নির্ধারণ করে আপনার যে কোডটি লিখতে হবে সেগুলি সমস্ত এড়ানোর জন্য।