নিম্নলিখিত চশমা সহ বিভিন্ন আকারের চিত্র এবং অনুপাতের একটি চিত্র গ্যালারী প্রদর্শন করা হচ্ছে:
- চিত্রগুলির মধ্যে কোনও ফাঁকা (মার্জিন) নেই।
- যতটা সম্ভব মূল অনুপাতকে সম্মান করা।
- একটি লিঙ্ক দ্বারা বেষ্টিত চিত্র।
- নন-জেএস সমাধান।
- চিত্রগুলি কিছুটা কাটা যায়।
- পোর্টেবল সমাধান।
- প্রদর্শিত চিত্রের সেট এলোমেলো।
- চিত্রগুলি বাম থেকে ডানে প্রদর্শিত হবে (কলামগুলি ব্যবহার করে বাধা দেয়)।
আমি নিম্নলিখিত ফ্লেক্সবক্স সমাধান দিয়ে তা অর্জন করেছি:
section {
display: flex;
flex-flow: row wrap;
justify-content: center;
}
section a {
flex: auto;
}
section img {
height: 100%;
width: 100%;
object-fit: cover;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Controlling flex growability</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
</style>
</head>
<body>
<section>
<a href="#"><img src="https://placekitten.com/400/195" width="400" height="195" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/256/400" width="256" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/237" width="400" height="237" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/111" width="400" height="111" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/245" width="400" height="245" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/227" width="400" height="227" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/250/400" width="250" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/269" width="400" height="269" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/255" width="400" height="255" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/288/400" width="288" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/234/400" width="234" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/194/400" width="194" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/222/400" width="222" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/227" width="400" height="227" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/192/400" width="192" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/141" width="400" height="141" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/289" width="400" height="289" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/255" width="400" height="255" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/210/400" width="210" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/187" width="400" height="187" alt="Kitty"></a>
</section>
</body>
</html>
সমাধানটি কাজ করে তবে উইন্ডোর আকারের উপর নির্ভর করে কিছু ছবি খুব বেশি পরিমাণে প্রসারিত হয়, আইটেমগুলিকে আরও সঙ্কুচিত করা দরকার হলেও আমি সারি প্রতি আরও উপাদান পছন্দ করব।
এর পরিবর্তে এর অর্থ:
আমি আইটেমগুলির একটি উচ্চ ঘনত্ব পছন্দ করব যাতে চিত্রগুলি কখনই বড় হয় না:
আমি সারিবদ্ধভাবে উপাদানগুলির সংখ্যা বিশ্বব্যাপী বৃদ্ধির জন্য সমাধানগুলি সন্ধান করেছি যাতে চিত্রগুলি বড় না হয় (বা কমপক্ষে খুব বেশি নয়: উদাহরণস্বরূপ: 10% সর্বোচ্চ)।
আমি এখন পর্যন্ত দুটি হ্যাকিশ সমাধান খুঁজে পেয়েছি:
সমাধান ঘ
জুম সম্পত্তি ব্যবহার :
section {
display: flex;
flex-flow: row wrap;
justify-content: center;
zoom: 50%;
}
section a {
flex: auto;
}
section img {
height: 100%;
width: 100%;
object-fit: cover;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Controlling flex growability</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
</style>
</head>
<body>
<section>
<a href="#"><img src="https://placekitten.com/400/195" width="400" height="195" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/256/400" width="256" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/237" width="400" height="237" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/111" width="400" height="111" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/245" width="400" height="245" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/227" width="400" height="227" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/250/400" width="250" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/269" width="400" height="269" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/255" width="400" height="255" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/288/400" width="288" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/234/400" width="234" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/194/400" width="194" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/222/400" width="222" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/227" width="400" height="227" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/192/400" width="192" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/141" width="400" height="141" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/289" width="400" height="289" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/255" width="400" height="255" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/210/400" width="210" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/187" width="400" height="187" alt="Kitty"></a>
</section>
</body>
</html>
তবে সেই সম্পত্তি ফায়ারফক্সে নয়, ক্রোমে দুর্দান্ত কাজ করে।
সমাধান 2
প্রস্থ / উচ্চতা এবং রূপান্তর সহ জুম সম্পত্তি অনুকরণ : স্কেল :
section {
display: flex;
flex-flow: row wrap;
justify-content: center;
width: 200% !important;
height: 200% !important;
transform-origin: 0 0;
transform: scale(0.5);
float: left;
margin-right: -100000px;
margin-bottom: -100000px;
}
section a {
flex: auto;
}
section img {
height: 100%;
width: 100%;
object-fit: cover;
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Controlling flex growability</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
</style>
</head>
<body>
<section>
<a href="#"><img src="https://placekitten.com/400/195" width="400" height="195" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/256/400" width="256" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/237" width="400" height="237" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/111" width="400" height="111" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/245" width="400" height="245" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/227" width="400" height="227" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/250/400" width="250" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/269" width="400" height="269" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/255" width="400" height="255" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/288/400" width="288" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/234/400" width="234" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/194/400" width="194" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/222/400" width="222" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/227" width="400" height="227" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/192/400" width="192" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/141" width="400" height="141" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/289" width="400" height="289" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/255" width="400" height="255" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/210/400" width="210" height="400" alt="Kitty"></a>
<a href="#"><img src="https://placekitten.com/400/187" width="400" height="187" alt="Kitty"></a>
</section>
</body>
</html>
এই সমাধানটি এখনও পর্যন্ত কাজ করেছে, তবে কয়েকটি হ্যাকের প্রয়োজন এবং এটি মার্জিত হতে অনেক দূরে এবং এখন পৃষ্ঠার অন্যান্য উপাদানগুলির সাথেও তার প্রভাব পড়বে।
এই জাতীয় নিয়ন্ত্রণের অনুমতি দেয় এমন আরও কোনও সমাধান, আরও বেশি ফ্লেগ্রিড-ভিত্তিক? আমি ফ্লেক্স-গ্রো ব্যবহার করে চেষ্টা করেছি : 0 : এটি, প্রকৃতপক্ষে, ক্রমবর্ধমান আইটেমগুলিকে অক্ষম করে, তবে তারপরে সমস্ত জায়গায় চিত্রের ফাঁকা স্থান রয়েছে।
zoom
কারণ এটি করে সমস্ত সারিকে ঠিক একই উচ্চতা নির্ধারণ করে দেয়: এটি প্রাকৃতিক ফ্লেক্স অ্যালগরিদমকে "কোনও কিছুতে" অভিযোজিত "হিসাবে যতটা সম্ভব অনুকূল" প্রতিরোধ করে। আমি যতদূর বুঝতে পেরেছি, সামঞ্জস্যপূর্ণ এবং নন হ্যাকি উপায়ে আমি যা চাই তা অর্জন করা এখনও সম্ভব নয়।