क्या सीएसएस में एक पृष्ठभूमि प्राप्त करने का एक तरीका है अपने कंटेनर को फैलाने या स्केल करने के लिए?
क्या सीएसएस में एक पृष्ठभूमि प्राप्त करने का एक तरीका है अपने कंटेनर को फैलाने या स्केल करने के लिए?
जवाबों:
आधुनिक ब्राउज़रों के लिए, आप इसका उपयोग करके पूरा कर सकते हैं background-size
:
body {
background-image: url(bg.jpg);
background-size: cover;
}
cover
इसका मतलब है कि छवि को लंबवत या क्षैतिज रूप से खींचना ताकि यह कभी भी टाइल / दोहराता न हो।
यह सफारी 3 (या बाद में), क्रोम, ओपेरा 10+, फ़ायरफ़ॉक्स 3.6+ और इंटरनेट एक्सप्लोरर 9 (या बाद में) के लिए काम करेगा।
इसके लिए इंटरनेट एक्सप्लोरर के निम्न क्रियाओं के साथ काम करने के लिए, इन सीएसएस को आज़माएँ:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
CSS 3 गुण का उपयोग करें background-size
:
#my_container {
background-size: 100% auto; /* width and height, can be %, px or whatever. */
}
यह 2012 से आधुनिक ब्राउज़रों के लिए उपलब्ध है।
background-size: 100% 100%;
इच्छित प्रभाव प्राप्त करने के लिए सेट करना था, अगर वह किसी और की मदद करता।
CSS के साथ एक छवि स्केल करना बहुत संभव नहीं है, लेकिन एक समान प्रभाव निम्नलिखित तरीके से प्राप्त किया जा सकता है, हालांकि।
इस मार्कअप का उपयोग करें:
<div id="background">
<img src="img.jpg" class="stretch" alt="" />
</div>
निम्नलिखित सीएसएस के साथ:
#background {
width: 100%;
height: 100%;
position: absolute;
left: 0px;
top: 0px;
z-index: 0;
}
.stretch {
width:100%;
height:100%;
}
और आपको किया जाना चाहिए!
छवि को "पूर्ण रूप से विकसित" करने और पहलू अनुपात को बनाए रखने के लिए, आप इसके बजाय ऐसा कर सकते हैं:
.stretch { min-width:100%; min-height:100%; width:auto; height:auto; }
यह काफी अच्छी तरह से काम करता है! यदि एक आयाम को क्रॉप किया जाता है, हालांकि, यह छवि के केवल एक तरफ ही क्रॉप किया जाएगा, बजाय दोनों किनारों (और केंद्रित) पर समान रूप से क्रॉप किया जाएगा। मैंने इसे फ़ायरफ़ॉक्स, वेबकिट और इंटरनेट एक्सप्लोरर 8 में परीक्षण किया है ।
margin: 0 auto
पर .stretch
। केवल width
या सेट करने से height
, पहलू अनुपात समान रहता है। ज़ूम-फैक्टर का उपयोग करने max-width
और max-height
सीमित करने का प्रयास करें ...
CSS3 में पृष्ठभूमि के आकार की विशेषता का उपयोग करें :
.class {
background-image: url(bg.gif);
background-size: 100%;
}
EDIT: Modernizr बैकग्राउंड-साइज़ सपोर्ट का पता लगाने का समर्थन करता है । आप काम करने के लिए लिखे गए जावास्क्रिप्ट वर्कअराउंड का उपयोग कर सकते हैं, हालांकि आपको इसकी आवश्यकता है और जब कोई समर्थन नहीं होता है तो इसे गतिशील रूप से लोड करें। यह कुछ ब्राउज़रों के लिए घुसपैठ सीएसएस हैक का सहारा लेने के बिना कोड को बनाए रखेगा।
व्यक्तिगत रूप से मैं jQuery का उपयोग कर, इसके imgsizer के एक अनुकूलन के साथ एक स्क्रिप्ट का उपयोग करने के लिए । अधिकांश डिज़ाइनों के अनुसार, मैं अब उपकरणों में द्रव लेआउट के लिए चौड़ाई% का उपयोग करता हूं, एक छोरों में से एक के लिए थोड़ा सा अनुकूलन है (आकार के लिए लेखांकन जो हमेशा 100% नहीं होते हैं):
for (var i = 0; i < images.length; i++) {
var image = images[i],
width = String(image.currentStyle.width);
if (width.indexOf('%') == -1) {
continue;
}
image.origWidth = image.offsetWidth;
image.origHeight = image.offsetHeight;
imgCache.push(image);
c.ieAlpha(image);
image.style.width = width;
}
संपादित करें: आप jQuery CSS3 Finaliz [s] ई में भी रुचि हो सकती है ।
आलेख पृष्ठभूमि-आकार का प्रयास करें । यदि आप निम्नलिखित सभी का उपयोग करते हैं, तो यह इंटरनेट एक्सप्लोरर को छोड़कर अधिकांश ब्राउज़रों में काम करेगा।
.foo {
background-image: url(bg-image.png);
-moz-background-size: 100% 100%;
-o-background-size: 100% 100%;
-webkit-background-size: 100% 100%;
background-size: 100% 100%;
}
फिलहाल नहीं। यह CSS 3 में उपलब्ध होगा , लेकिन अधिकांश ब्राउज़र में इसे लागू होने तक कुछ समय लगेगा।
.style1 {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
काम में:
इसके अलावा आप एक समाधान के लिए यह कोशिश कर सकते हैं
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
zoom:1;
क्रिस कॉयर के इस लेख का श्रेय http://css-tricks.com/perfect-full-page-background-image/
background-size: cover
ब्राउज़र उपसर्ग और एक IE समाधान को छोड़कर उपयोग कर रहा है
एक शब्द में: नहीं। एक छवि को फैलाने का एकमात्र तरीका है<img>
टैग के । आपको रचनात्मक होना पड़ेगा।
यह 2008 में सही था, जब उत्तर लिखा गया था। आज आधुनिक ब्राउज़र समर्थन करते हैं background-size
जो इस समस्या को हल करता है। खबर है कि IE8 इसे समर्थन नहीं करता है।
परिभाषित "खिंचाव और पैमाने" ...
यदि आपको एक बिटमैप प्रारूप मिला है, तो इसे खींचने और इसके बारे में खींचने के लिए आम तौर पर यह महान नहीं है (ग्राफिक रूप से बोलना)। उसी प्रभाव का भ्रम देने के लिए आप दोहराए जाने वाले पैटर्न का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आपके पास एक ढाल है जो पृष्ठ के नीचे की ओर हल्का हो जाता है, तो आप एक ऐसे ग्राफिक का उपयोग करेंगे जो एक एकल पिक्सेल चौड़ा हो और आपके कंटेनर के समान ऊंचाई हो (या स्केलिंग के लिए खाते में अधिमानतः बड़ा हो) और फिर इसे भर में टाइल करें पृष्ठ। इसी तरह, यदि ढाल पूरे पृष्ठ पर चलता है, तो यह आपके कंटेनर से एक पिक्सेल ऊंचा और चौड़ा होगा और पृष्ठ को नीचे दोहराया जाएगा।
कंटेनर को भरने या सिकुड़ने पर कंटेनर को भरने के लिए आम तौर पर इसका भ्रम देने के लिए, आप छवि को कंटेनर से बड़ा बनाते हैं। किसी भी ओवरलैप को कंटेनर की सीमा के बाहर प्रदर्शित नहीं किया जाएगा।
यदि आप एक ऐसा प्रभाव चाहते हैं जो घुमावदार किनारों के साथ एक बॉक्स की तरह कुछ पर निर्भर करता है, तो आप अपने बॉक्स के बाईं ओर अपने कंटेनर के बाईं ओर पर्याप्त ओवरलैप के साथ चिपकाएंगे (कारण के भीतर) चाहे कितना भी बड़ा कंटेनर हो, यह कभी नहीं होता है पृष्ठभूमि से बाहर चलाता है और फिर आप घुमावदार किनारों के साथ बॉक्स के दाईं ओर की एक छवि को परत करते हैं और इसे कंटेनर के दाईं ओर स्थित करते हैं। इस प्रकार जब कंटेनर सिकुड़ता या बढ़ता है, तो घुमावदार बॉक्स प्रभाव सिकुड़ता है या उसके साथ बढ़ता है - यह वास्तव में नहीं होता है, लेकिन यह भ्रम देता है कि क्या हो रहा है।
के रूप में वास्तव में छवि को कम करने और कंटेनर के साथ बढ़ने के लिए, आपको छवि को पृष्ठभूमि के रूप में कार्य करने के लिए कुछ लेयरिंग ट्रिक्स का उपयोग करना होगा और इसे कंटेनर के साथ आकार देने के लिए कुछ जावास्क्रिप्ट। CSS के साथ ऐसा करने का कोई वर्तमान तरीका नहीं है ...
यदि आप वेक्टर ग्राफिक्स का उपयोग कर रहे हैं, तो आप मेरी विशेषज्ञता के दायरे से बाहर हैं, मुझे डर है।
यह वही है जो मैंने इसे बनाया है। खिंचाव वर्ग में, मैंने बस ऊँचाई को बदल दिया auto
। इस तरह से आपके बैकग्राउंड पिक्चर को हमेशा स्क्रीन की चौड़ाई और ऊंचाई के बराबर आकार मिलेगा।
#background {
width: 100%;
height: 100%;
position: absolute;
margin-left: 0px;
margin-top: 0px;
z-index: 0;
}
.stretch {
width:100%;
height:auto;
}
एक background-attachment
पंक्ति जोड़ें :
#background {
background-attachment:fixed;
width: 100%;
height: 100%;
position: absolute;
margin-left: 0px;
margin-top: 0px;
z-index: 0;
}
.stretch {
width:100%;
height:auto;
}
इसके लिए एक और बढ़िया उपाय है, सर्बिन का बैकस्ट्रैच जो पेज पर शरीर या किसी भी तत्व पर लगाया जा सकता है - http://srobbin.com/jquery-plugins/backstretch/
इसे इस्तेमाल करे
body
{
background: url(http://p1.pichost.me/i/40/1639647.jpg) no-repeat fixed;
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
सॉलिडस्माइल के धोखा के लिए एक अतिरिक्त टिप एक चौड़ाई निर्धारित करके और ऊंचाई के लिए ऑटो का उपयोग करके स्केल (आनुपातिक पुन: आकार देने) है।
उदाहरण के लिए:
#background {
width: 500px;
height: auto;
position: absolute;
left: 0px;
top: 0px;
z-index: 0;
}