जवाबों:
यदि आप उस समय छवि के आयाम को नहीं जानते हैं, जिस समय आप css लिख रहे हैं, तो फसल को रोकने के लिए आपको कुछ JavaScript की आवश्यकता होगी।
<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%;Div के अंदर छवि के लिए उपयोग करें ।
overflow:scrollएक बड़ी छवि के साथ एक डिव के ऊपर हो। जिज्ञासु। और भी अजीब: मैक्स का समाधान वास्तव में इसे ठीक करता है। मैं सीएसएस से बहुत तंग आ चुका हूं, सच में। शक्तिशाली और मस्त हुआ करते थे। अब कार्यान्वयन सिर्फ छोटी गाड़ी असंगति के बाद छोटी गाड़ी असंगति पैदा करते हैं।
दुर्भाग्य से अधिकतम-चौड़ाई + अधिकतम-ऊंचाई मेरे कार्य को पूरी तरह से कवर नहीं करती है ... इसलिए मुझे एक और समाधान मिला है:
स्केलिंग करते समय इमेजobject-fit रेशो को बचाने के लिए आप CSS3 प्रॉपर्टी का भी उपयोग कर सकते हैं ।
उपयोगी लेख: CSS3 के साथ छवि पहलू अनुपात को नियंत्रित करें
img {
width: 100%; /* or any custom size */
height: 100%;
object-fit: contain;
}
बुरी खबर: IE समर्थित नहीं है ( क्या मैं उपयोग कर सकता हूं )
object-fit: cover; मेरे लिए काम किया। यहाँ: stackoverflow.com/questions/9071830/…
<div>
<img src="something.jpg" alt="" />
</div>
div {
width: 48px;
height: 48px;
}
div img {
display: block;
width: 100%;
}
यह अपने माता-पिता को भरने के लिए छवि का विस्तार करेगा, जिसका आकार divसीएसएस में सेट है ।
height: 100%, कि छवि अनुपात तिरछा होगा - ओपी अनुपात बनाए रखना चाहता है।
मुझे यह काम करने में बहुत समस्याएँ हो रही थीं, हर एक हल जो मुझे मिल रहा था वह काम नहीं करता था।
मुझे एहसास हुआ कि मुझे डिव डिस्प्ले को फ्लेक्स पर सेट करना है, इसलिए मूल रूप से यह मेरा CSS है:
div{
display: flex;
}
div img{
max-height: 100%;
max-width: 100%;
}
मेरे लिए, निम्नलिखित सीएसएस ने काम किया (क्रोम, फ़ायरफ़ॉक्स और सफारी में परीक्षण किया गया)।
एक साथ कई चीजें काम कर रही हैं:
max-height: 100%;, max-width: 100%;और height: auto;,width: auto; आयाम अनुपात को बनाए रखते हुए, जो भी पहले आयाम तक पहुँचता है को आइएमजी पैमाना बनाएंposition: relative;कंटेनर position: absolute;में और बच्चे के साथ मिलकर top: 50%;और left: 50%;कंटेनर में img के ऊपरी बाएं कोने को केंद्र में रखेंtransform: translate(-50%, -50%); img को बाईं ओर ऊपर ले जाता है और उसके आधे आकार से ऊपर जाता है, इस प्रकार कंटेनर में img को केंद्रित करता हैसीएसएस:
.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%);
}
फोटो को बैकग्राउंड इमेज के रूप में सेट करने से हमें साइज और प्लेसमेंट पर अधिक नियंत्रण मिलेगा, जो एक अलग उद्देश्य की सेवा के लिए img टैग को छोड़ देगा ...
नीचे, अगर हम चाहते हैं कि div फोटो के समान पहलू अनुपात हो, तो प्लेसहोल्डर। Png एक छोटी पारदर्शी छवि है, जिसमें photo.jpg के समान पहलू अनुपात है। यदि फोटो एक वर्ग है, तो यह 1px x 1px प्लेसहोल्डर है, अगर फोटो एक वीडियो थंबनेल है, तो यह 16x9x प्लेसहोल्डर है, आदि।
प्रश्न के लिए विशिष्ट, background-sizeफोटो के पहलू अनुपात को बनाए रखने के लिए पृष्ठभूमि छवि के साथ, div के वर्ग अनुपात को बनाए रखने के लिए 1x1 प्लेसहोल्डर का उपयोग करें।
मैंने इस्तेमाल किया background-position: center center;इसलिए फोटो डिव में केंद्रित होगी। (ऊर्ध्वाधर केंद्र या तल में फोटो को संरेखित करने से img टैग में फोटो के साथ बदसूरत हो जाएगा।)
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 अनुरोध से बचने के लिए, प्लेसहोल्डर छवि को डेटा में कनवर्ट करें: URL ।
<img src="data:image/png;base64,..."/>
आप नए संस्करण यानी बूटस्ट्रैप v4 के लिए वर्ग "img-fluid" का उपयोग कर सकते हैं ।
और बूटस्ट्रैप v3 जैसे पुराने संस्करण के लिए वर्ग "img-responsive" का उपयोग कर सकते हैं ।
उपयोग : -
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);
});
सीधे कॉपी और पेस्ट करने के लिए स्वतंत्र महसूस करें।