উত্তর:
আপনি যখন সিএসএস লিখছেন সে সময় আপনি যদি চিত্রটির মাত্রা না জানেন তবে আপনার ক্রপিং রোধ করতে কিছু জাভাস্ক্রিপ্টের প্রয়োজন হবে।
<div id="container">
<img src="something.jpg" alt="" />
</div>
<script type="text/javascript">
(function() {
var img = document.getElementById('container').firstChild;
img.onload = function() {
if(img.height > img.width) {
img.height = '100%';
img.width = 'auto';
}
};
}());
</script>
#container {
width: 48px;
height: 48px;
}
#container img {
width: 100%;
}
আপনি যদি জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করেন তবে আপনি এটির সুবিধা নিতে চাইতে পারেন।
max-height:100%; max-width:100%;ডিভের ভিতরে চিত্রটির জন্য ব্যবহার করুন ।
overflow:scrollএকটি বৃহত চিত্র সহ মাউস একটি ডিভের উপরে থাকলেও এটি শরীরটি স্ক্রোল করার চেষ্টা করে trying অদ্ভুত। আরও অদ্ভুত: ম্যাক্সের সমাধানটি এটিকে ঠিক করে দেয়। আমি সত্যিই সিএসএসে বেশ বিরক্ত হয়েছি। শক্তিশালী এবং শীতল হতে ব্যবহৃত। এখন বাস্তবায়নগুলি বাগি অসামঞ্জস্যতার পরে কেবল বগির অসঙ্গতি তৈরি করে।
দুর্ভাগ্যক্রমে সর্বোচ্চ-প্রস্থ + সর্বাধিক উচ্চতা আমার কাজটি পুরোপুরি কভার করে না ... সুতরাং আমি আরও একটি সমাধান পেয়েছি:
স্কেল করার সময় চিত্র অনুপাত সংরক্ষণ করতে আপনি object-fitCSS3 প্রপার্টি ব্যবহার করতে পারেন ।
দরকারী নিবন্ধ: CSS3 সহ চিত্রের অনুপাত নিয়ন্ত্রণ করুন
img {
width: 100%; /* or any custom size */
height: 100%;
object-fit: contain;
}
খারাপ খবর: IE সমর্থিত নয় ( আমি কি ব্যবহার করতে পারি )
object-fit: cover; আমার জন্য কাজ। এখানে: stackoverflow.com/questions/9071830/…
কেবল সিএসএস ব্যবহার:
div > img {
width: auto;
height : auto;
max-height: 100%;
max-width: 100%;
}
<div>
<img src="something.jpg" alt="" />
</div>
div {
width: 48px;
height: 48px;
}
div img {
display: block;
width: 100%;
}
এটি চিত্রটিকে তার পিতামাতাকে পূরণ করতে প্রসারিত করবে, যার মধ্যে এর আকারটি divসিএসএসে সেট করা আছে ।
height: 100%, এটি চিত্রের অনুপাতকে স্কু করবে - ওপি অনুপাত বজায় রাখতে চায়।
এই কাজটি পেতে আমার প্রচুর সমস্যা হয়েছিল, আমি যে প্রতিটি সমাধান পেয়েছি তা কাজ করে বলে মনে হচ্ছে না।
আমি বুঝতে পারি যে আমাকে ডিভ ডিসপ্লেটি ফ্লেক্সে সেট করতে হয়েছে, সুতরাং মূলত এটি আমার সিএসএস:
div{
display: flex;
}
div img{
max-height: 100%;
max-width: 100%;
}
আমার জন্য, নিম্নলিখিত সিএসএস কাজ করেছে (ক্রোম, ফায়ারফক্স এবং সাফারিতে পরীক্ষিত)।
এক সাথে কাজ করার একাধিক জিনিস রয়েছে:
max-height: 100%;, max-width: 100%;এবং height: auto;, width: auto;অনুপাতের অনুপাত বজায় রেখে ইমগ স্কেলটি যে কোনও মাত্রা প্রথমে 100% এ পৌঁছায় তা তৈরি করুনposition: relative;পাত্রে এবং position: absolute;সন্তানের সাথে একত্রে top: 50%;এবং left: 50%;ধারকটিতে ইমগের উপরের বাম কোণটি কেন্দ্র করেtransform: translate(-50%, -50%); আইএমজিটি তার আকারের অর্ধেক দ্বারা বাম এবং শীর্ষে ফিরে যায়, এভাবে ধারকটিতে ইমগিকে কেন্দ্র করেসিএসএস:
.container {
height: 48px;
width: 48px;
position: relative;
}
.container > img {
max-height: 100%;
max-width: 100%;
height: auto;
width: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
ফটোটিকে ব্যাকগ্রাউন্ড ইমেজ হিসাবে সেট করা আমাদের আকার এবং স্থানের উপর আরও নিয়ন্ত্রণ প্রদান করবে, আইএমজি ট্যাগ রেখে অন্য উদ্দেশ্যে উপস্থাপন করবে ...
নীচে, আমরা যদি ডিভটি ছবির মতো একই অনুপাতের অনুপাত হিসাবে দেখতে চাই তবে স্থানধারক.পিএনজি একটি ছোট স্বচ্ছ চিত্র যা ফটো.জেপিজির মতো একই দিক অনুপাত সহ with যদি ছবিটি একটি বর্গক্ষেত্র হয় তবে এটি 1px x 1px স্থানধারক, যদি ফটোটি কোনও ভিডিও থাম্বনেইল হয় তবে এটি একটি 16x9 স্থানধারক ইত্যাদি
প্রশ্নের সাথে সুনির্দিষ্ট, ডিভ এর বর্গ অনুপাত বজায় রাখতে 1x1 স্থানধারক ব্যবহার background-sizeকরুন, ছবির ব্যপারের অনুপাত বজায় রাখার জন্য একটি ব্যাকগ্রাউন্ড চিত্র ব্যবহার করুন ।
আমি background-position: center center;ছবিটি ডিভকে কেন্দ্র করেই ব্যবহার করেছি। (উল্লম্ব কেন্দ্রে বা নীচে ছবি সারিবদ্ধ করা ইমগ ট্যাগে ছবির সাথে কুশ্রী হয়ে উঠবে))
div {
background: url(photo.jpg) center center no-repeat;
background-size: contain;
width: 48px; // or a % in responsive layout
}
img {
width: 100%;
}
<div><img src="placeholder.png"/></div>
অতিরিক্ত http অনুরোধ এড়াতে, স্থানধারক চিত্রটি একটি ডেটাতে রূপান্তর করুন: ইউআরএল ।
<img src="data:image/png;base64,..."/>
আপনি নতুন সংস্করণ অর্থাৎ বুটস্ট্র্যাপ ভি 4 এর জন্য ক্লাস "ইম্জি-ফ্লুয়েড" ব্যবহার করতে পারেন ।
এবং বুটস্ট্র্যাপ ভি 3 এর মতো পুরানো সংস্করণের জন্য "img-প্রতিক্রিয়াশীল" ক্লাস ব্যবহার করতে পারেন ।
ব্যবহার : -
আইএমজি ট্যাগ এর সাথে: -
শ্রেণি = "আইএমজি-তরল"
src = "..."
এখানে একটি সমস্ত জাভাস্ক্রিপ্ট পদ্ধতির। এটি কোনও চিত্র সঠিকভাবে ফিট না হওয়া পর্যন্ত ক্রমান্বয়ে নীচে স্কেল করে। প্রতিবার ব্যর্থ হওয়ার সাথে সাথে এটি সঙ্কুচিত করার জন্য আপনি বেছে নিন। এই উদাহরণটি প্রতিবার এটি ব্যর্থ হওয়ার সাথে সাথে 10% সঙ্কুচিত করে:
let fit = function (el, w, h, percentage, step)
{
let newH = h;
let newW = w;
// fail safe
if (percentage < 0 || step < 0) return { h: h, w: w };
if (h > w)
{
newH = el.height() * percentage;
newW = (w / h) * newH;
if (newW > el.width())
{
return fit(el, w, h, percentage - step, step);
}
}
else
{
newW = el.width() * percentage;
newH = (h / w) * newW;
if (newH > el.height())
{
return fit(el, w, h, percentage - step, step);
}
}
return { h: newH, w: newW };
};
img.bind('load', function ()
{
let h = img.height();
let w = img.width();
let newFit = fit($('<img-wrapper-selector>'), w, h, 1, 0.1);
img.width(newFit.w);
img.height(newFit.h);
});
সরাসরি অনুলিপি এবং পেস্ট করুন।