2016-02-11 8 views
5

मैं वर्तमान में अपने लिए गतिशील स्टाइल शीट बनाने पर काम कर रहा हूं कि मैं भविष्य में उपयोग करूंगा, और इसलिए मैं इसे गतिशील और कठोर कोडित नहीं करना चाहता हूं।उत्तरदायी परिपत्र छवियाँ

मैं एक छवि वर्ग है:

.image-round{ 
    border-radius: 50%; 
} 

इस वर्ग के सभी वर्ग छवियों के लिए अच्छी तरह से काम करता है, लेकिन जब मैं आयताकार छवियां कोशिश, मैं एक अंडाकार मिलता है।

मैंने jQuery का उपयोग करके इस पर घूमने की कोशिश की, छवि को एक कंटेनर में लपेटकर, मैंने ओवरफ्लो छुपाया है और इसकी ऊंचाई और चौड़ाई को छवि की ऊंचाई के बराबर सेट करने के लिए सेट किया है। इसने समस्या हल की, हालांकि अब मुझे उत्तरदायी मुद्दों का सामना करना पड़ रहा है।

जब मैं खिड़की को स्केल करने की कोशिश करता हूं, तो छवि squished हो जाती है।

अब मुझे आश्चर्य है कि इस समस्या को पूरी तरह गतिशील रूप से हल करने का कोई समाधान है, बिना किसी कठोर कोडिंग के, लैंडस्केप के साथ-साथ पोर्ट्रेट राउंड में छवियां बनाना।

मैं वास्तव में खिड़की के आकार पर छवियों के आकार की जांच करने से बचना चाहता हूं, और उसके बाद कंटेनर आकार को समायोजित करना चाहता हूं - क्योंकि मुझे पूरा यकीन है कि यह बहुत अधिक प्रदर्शन करेगा।

यह पृष्ठभूमि छवि का उपयोग करने का विकल्प भी नहीं है।

+0

मैंने पहले से ही अपनी कक्षा का स्निपेट शामिल कर लिया है। कृपया मेरे प्रश्न में कोड ब्लॉक देखें। – user3385205

+0

यही कारण है कि मैंने इसके बजाय मेरे प्रयासों के विवरण को पढ़ने के लिए एक साफ, समझने योग्य और आसान शामिल किया। मैंने अपने छोटे प्रश्न में बड़ी मात्रा में कोड शामिल करने की आवश्यकता नहीं है। - यदि यह वास्तव में जरूरी है, तो मैं अपने jQuery और सीएसएस को शामिल कर सकता हूं जिसकी मैंने कोशिश की थी, हालांकि ये केवल मूर्ख प्रयोग थे। मुझे नहीं मिला कि मुझे कोड शामिल करना था जो मैंने यह गलत समझाया कि मैंने क्या गलत किया है। मुझे पूरा यकीन है कि मैंने अपने प्रश्न को ठीक से समझाया है, और मैं किसी के लिए उत्तरदायी, गलत और अनुपयोगी कोड देखने के लिए उत्तर नहीं दे रहा हूं जो कि किसी भी तरह से प्रश्न का उत्तर देने में मदद नहीं करेगा। – user3385205

+0

मुझे लगता है कि आपको किसी चीज़ पर समझौता करने की आवश्यकता है या तो पहलू अनुपात को बनाए रखने वाली पूरी छवि प्राप्त करें और छवि के अंदर थोड़ा खाली स्थान होगा, अन्यथा आप पृष्ठभूमि के आकार को कवर के रूप में उपयोग कर सकते हैं ताकि रिक्त स्थान प्रदर्शित न हो जाएं। मुझे लगता है कि आपने पृष्ठभूमि छवि के रूप में उल्लेख नहीं किया है। लेकिन मैं नहीं देख सकता कि – joyBlanks

उत्तर

3

आप सभी छवियों दौर एक div में छवियों लपेटकर द्वारा (कई तकनीकों एक div see here के पक्ष अनुपात बनाए रखने के लिए के लिए) बना सकते हैं और

  • इसके अनुपात बनाए रखने के वर्ग होने के लिए
  • रैपर पर सीमा-त्रिज्या और overflow:hidden; लागू करें।

यह छवियों को अंडाकार प्रदर्शित करने से रोक देगा।

फिर यह समस्या प्रत्येक छवि पहलू अनुपात, परिदृश्य और चित्र को संभालने में सक्षम है, इसलिए वे कंटेनर केंद्रित और "कवर" हैं। उसके लिए आपको object-fill property इस तरह उपयोग कर सकते हैं:

div{ 
 
    position:relative; 
 
    width:20%; 
 
    padding-bottom:20%; 
 
    border-radius:50%; 
 
    overflow:hidden; 
 
} 
 
img{ 
 
    position:absolute; 
 
    object-fit: cover; 
 
    width:100%;height:100%; 
 
}
<div><img src="http://i.imgur.com/uuEyxxE.jpg" /></div> 
 
<div><img src="http://i.imgur.com/HDssntn.jpg" /></div>

दोष यह है कि IE doesn't support object-fill है। तो तुम एक वापस आने की जरूरत है दो मामलों को संभालने के लिए:

  • परिदृश्य छवियों ऊंचाई से छवि के आकार को सीमित
  • चित्र छवियों चौड़ाई

div{ 
 
    position:relative; 
 
    width:20%; 
 
    padding-bottom:20%; 
 
    border-radius:50%; 
 
    overflow:hidden; 
 
} 
 
img{ 
 
    position:absolute; 
 
    margin:auto; 
 
} 
 
.landscape img{ 
 
    height:100%; 
 
    left:-100%; right:-100%; 
 
} 
 
.portrait img{ 
 
    width:100%; 
 
    top:-100%; bottom:-100%; 
 
}
<div class="landscape"><img src="http://i.imgur.com/uuEyxxE.jpg" /></div> 
 
<div class="portrait"><img src="http://i.imgur.com/HDssntn.jpg" /></div>

से छवि के आकार को सीमित

इस कॉन्फ़िगरेशन में, आपको परिदृश्य या चित्र छवियों की पहचान करने और उन्हें तदनुसार शैली बनाने के लिए जेएस की आवश्यकता होगी।

+0

इसके साथ दो मुद्दे हैं। पहला ब्राउज़र समर्थन की कमी है, और दूसरा यह है कि यह बहुत जल्दी बदलता है। मैं चाहता हूं कि छवि केवल तभी आकार बदलना शुरू करे जब खिड़की के किनारे छवि को हिट करते हैं, किसी भी अन्य उत्तरदायी तत्व की तरह। हालांकि उत्तर के लिए धन्यवाद। – user3385205

+0

@ user3385205 मैं ब्राउज़र समर्थन के लिए फॉलबैक लिख रहा हूं। प्रतिक्रिया के लिए, मेरा मानना ​​है कि आप गलतफहमी हैं, छवियां रैपर के wdith के अनुसार उत्तरदायी हैं ताकि आप इसे किसी भी तत्व के अंदर रख सकें जो आपकी इच्छानुसार बदलती है (अनुकूली डिज़ाइन * के लिए ब्रेकपॉइंट्स के साथ * * उत्तरदायी डिज़ाइन * के लिए व्यूपोर्ट चौड़ाई के साथ) –

+0

यदि मैं कहता हूं कि मैं पोर्ट्रेट या लैंडस्केप क्लास को लागू करना चाहता हूं, तो मैं बस जावास्क्रिप्ट से जांच करूंगा, क्योंकि मैंने इसे गतिशील होने और अपने आप पर काम करने की आवश्यकता है। – user3385205

संबंधित मुद्दे