क्या सीएसएस के साथ पृष्ठभूमि छवि का आकार निर्धारित करना संभव है?
मैं कुछ ऐसा करना चाहता हूं:
background: url('bg.gif') top repeat-y;
background-size: 490px;
लेकिन ऐसा लगता है कि ऐसा करना पूरी तरह से गलत है ...
क्या सीएसएस के साथ पृष्ठभूमि छवि का आकार निर्धारित करना संभव है?
मैं कुछ ऐसा करना चाहता हूं:
background: url('bg.gif') top repeat-y;
background-size: 490px;
लेकिन ऐसा लगता है कि ऐसा करना पूरी तरह से गलत है ...
जवाबों:
यदि आपको छवि को बड़ा बनाने की आवश्यकता है, तो आपको छवि को छवि संपादक में ही संपादित करना होगा।
यदि आप img टैग का उपयोग करते हैं, तो आप आकार बदल सकते हैं, लेकिन यह आपको वांछित परिणाम नहीं देगा यदि आपको छवि को किसी अन्य सामग्री के लिए पृष्ठभूमि की आवश्यकता है (और यह खुद को दोहराना नहीं होगा जैसे आप चाहते हैं) ...
ऐसा CSS3 में करना संभव है background-size
।
सभी आधुनिक ब्राउज़र इसका समर्थन करते हैं, इसलिए जब तक आपको पुराने ब्राउज़र का समर्थन करने की आवश्यकता नहीं होती है, तब तक ऐसा करने का यही तरीका है।
समर्थित ब्राउज़र:
मोज़िला फ़ायरफ़ॉक्स 4.0+ (गेको 2.0+), माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर 9.0+, ओपेरा 10.0+, सफारी 4.1+ (वेबकिट 532) और क्रोम 3.0+।
.stretch{
/* Will stretch to specified width/height */
background-size: 200px 150px;
}
.stretch-content{
/* Will stretch to width/height of element */
background-size: 100% 100%;
}
.resize-width{
/* width: 150px, height: auto to retain aspect ratio */
background-size: 150px Auto;
}
.resize-height{
/* height: 150px, width: auto to retain aspect ratio */
background-size: Auto 150px;
}
.resize-fill-and-clip{
/* Resize to fill and retain aspect ratio.
Will cause clipping if aspect ratio of box is different from image. */
background-size: cover;
}
.resize-best-fit{
/* Resize to best fit and retain aspect ratio.
Will cause gap if aspect ratio of box is different from image. */
background-size: contain;
}
विशेष रूप से, मुझे ऐसे मूल्य cover
और contain
मूल्य पसंद हैं जो हमें नियंत्रण की नई शक्ति प्रदान करते हैं जो हमारे पास पहले नहीं थी।
आप background-size: round
दोहराव के साथ संयोजन में एक अर्थ का उपयोग कर सकते हैं :
.resize-best-fit-in-repeat{
/* Resize to best fit in a whole number of times in x-direction */
background-size: round auto; /* Height: auto is to keep aspect ratio */
background-repeat: repeat;
}
यह छवि की चौड़ाई को समायोजित करेगा इसलिए यह पृष्ठभूमि स्थिति क्षेत्र में कई बार फिट बैठता है।
अतिरिक्त नोट
यदि आपको जिस आकार की आवश्यकता है वह स्थिर पिक्सेल आकार है, यह वास्तविक छवि को भौतिक रूप से आकार देने के लिए अभी भी स्मार्ट है। यह दोनों आकार की गुणवत्ता में सुधार करने के लिए है (यह देखते हुए कि आपका छवि सॉफ़्टवेयर ब्राउज़र की तुलना में बेहतर काम करता है), और बैंडविड्थ को बचाने के लिए अगर मूल छवि क्या प्रदर्शित करना है से बड़ा है।
केवल CSS 3 ही इसका समर्थन करता है,
background-size: 200px 50px;
लेकिन मैं छवि को स्वयं संपादित करूंगा, ताकि उपयोगकर्ता को कम लोड करने की आवश्यकता हो, और यह एंटीअलिंग के बिना सिकुड़ी हुई छवि से बेहतर लग सकता है।
background: url('resized_image.png')\9;
IE के लिए जोड़ने की जरूरत है 9 9
यदि आपके उपयोगकर्ता केवल ओपेरा 9.5+, सफारी 3+, इंटरनेट एक्सप्लोरर 9+ और फ़ायरफ़ॉक्स 3.6+ का उपयोग करते हैं तो इसका उत्तर हां में है। नहीं तो नहीं।
पृष्ठभूमि आकार संपत्ति सीएसएस 3 का हिस्सा है, लेकिन यह सबसे ब्राउज़रों पर काम नहीं करेगा।
अपने उद्देश्यों के लिए बस वास्तविक छवि को बड़ा करें।
संभव नहीं है । पृष्ठभूमि हमेशा जितनी बड़ी हो सकती है, लेकिन आप इसे अपने आप को दोहराने से रोक सकते हैं background-repeat
।
background-repeat: no-repeat;
दूसरे, पृष्ठभूमि एक बॉक्स के मार्जिन-क्षेत्र में नहीं जाती है, इसलिए यदि आप चाहते हैं कि पृष्ठभूमि केवल एक बॉक्स की वास्तविक सामग्री पर हो, तो आप पैडिंग के बजाय मार्जिन का उपयोग कर सकते हैं।
तीसरा, आप यह नियंत्रित कर सकते हैं कि पृष्ठभूमि की छवि कहां से शुरू होती है। डिफ़ॉल्ट रूप से यह एक बॉक्स का ऊपरी बाएं कोने है, लेकिन आप इसे background-position
इस तरह से नियंत्रित कर सकते हैं :
background-position: center top;
या शायद
background-position: 20px -14px;
सीएसएस स्प्राइट्स के साथ नकारात्मक स्थिति का बहुत उपयोग किया जाता है ।
वहाँ एक भूल तर्क है:
background-size: contain;
यह आपके background-image
साथ ऐसा नहीं करेगा जैसा कि यह करेगा cover
। यह तब तक खिंचेगा जब तक कि बाहरी कंटेनर की चौड़ाई या ऊंचाई तक पहुंच न जाए और इसलिए यह छवि को संरक्षित करता है।
संपादित करें: वहाँ भी है -webkit-background-size
और -moz-background-size
।
पृष्ठभूमि के आकार की संपत्ति IE9 +, फ़ायरफ़ॉक्स 4+, ओपेरा, क्रोम और सफारी 5+ में समर्थित है।
@Tetra ने जो उत्तर दिया, उसके समर्थन में, मैं यह बताना चाहता हूं कि यदि छवि SVG है, तो वास्तविक छवि का आकार बदलना आवश्यक नहीं है।
चूंकि एक एसवीजी फाइल सिर्फ एक्सएमएल है आप इसे एक्सएमएल के भीतर प्रदर्शित करने के लिए जो भी आकार चाहें निर्दिष्ट कर सकते हैं।
हालांकि, यदि आप एक ही एसवीजी छवि का विभिन्न स्थानों पर उपयोग कर रहे हैं और इसे अलग-अलग आकार की आवश्यकता है, तो उपयोग background-size
करना बहुत सहायक है। SVG फाइलें वैसे भी रास्टर इमेज से स्वाभाविक रूप से छोटी होती हैं और CSS के साथ फ्लाई पर आकार बदलना किसी भी प्रदर्शन लागत के बिना बहुत मददगार हो सकता है जिससे मैं परिचित हूं, और निश्चित रूप से गुणवत्ता में कोई कमी नहीं है।
यहाँ एक त्वरित उदाहरण है:
<div class="hasBackgroundImage">content</div>
.hasBackgroundImage
{
background: transparent url('/image/background.svg') no-repeat 10px 5px;
background-size: 1.4em;
}
(नोट: यह मेरे लिए OS X 10.7 में Firefox 8, Safari 5.1 और Chrome 16.0.912.63 के साथ काम करता है)
आप पूरी तरह से CSS3 के साथ कर सकते हैं:
body {
background-image: url(images/bg-body.png);
background-size: 100%; /* size the background image at 100% like any responsive img tag */
background-position: top center;
background-repeat:no-repeat;
}
यह बॉडी एलिमेंट की चौड़ाई के 100% बैकग्राउंड इमेज को आकार देगा और फिर बॉडी एलिमेंट को छोटे रिज़ॉल्यूशन के लिए री-साइज़ के अनुसार बैकग्राउंड री-साइज़ करेगा।
यहाँ उदाहरण है: http://www.sccc.premiumdw.com/examples/resize-background-images-with-css/
बस नेस्ट डिव को क्रॉस ब्राउज़र संगत होना चाहिए
<div>
<div style="background: url('bg.gif') top repeat-y;min-width:490px;">
Put content here
</div>
</div>
आप दो <div>
तत्वों का उपयोग कर सकते हैं :
एक कंटेनर है (यह वह है जिसे आप मूल रूप से पृष्ठभूमि छवि को देखना चाहते थे)।
दूसरा एक भीतर निहित है। आप इसका आकार बैकग्राउंड इमेज के आकार में सेट करें (या आप जिस आकार में दिखना चाहते हैं)।
निहित div को फिर से सेट किया जाना है absolute
। इस तरह से यह युक्त div में वस्तुओं के सामान्य प्रवाह में हस्तक्षेप नहीं करता है।
यह आपको प्रभावी ढंग से स्प्राइट छवियों का उपयोग करने में सक्षम बनाता है।
put the below code in the body of you css file
background-image: URL('../images/wave-green-plain-colour.jpg') ;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
width:100px;
आप लिख चुके हैं
background: url('bg.gif') top repeat-y;
background-size: 490px;
लेकिन आपको केवल कंटेनर के आकार के आधार पर पृष्ठभूमि दिखाई देगी।
यदि आपके पास पृष्ठभूमि url के साथ एक खाली कंटेनर है और पृष्ठभूमि का आकार कुछ भी है, तो आप bg.gif नहीं देखेंगे।
यदि आप महाद्वीप का आकार निर्धारित करते हैं
background: url('bg.gif') top repeat-y;
background-size: 490px;
height: 490px;
width: 490px;
आपके द्वारा ऊपर लिखे गए कोड के साथ, आप bg.gif फ़ाइल देख पाएंगे।
मैं बटन के लिए पृष्ठभूमि छवियों का उपयोग करता हूं, लेकिन यह केवल छवि को पाठ के समान आकार दिखाता है, भले ही मैंने चौड़ाई और ऊंचाई सेट की हो। इसके बजाय, मैंने अपने पाठ को
वर्णों (गैर-ब्रेकिंग स्पेस) के साथ पैड किया । मैं मूल रूप से कई थप्पड़ मारता हूं, मूल रूप से, जब तक कि सभी बटन पृष्ठभूमि दिखाई नहीं देती। तो मैं इस तरह कोड हो सकता है:
स्टाइल शीट में:
#v2menu-home {
background-image:url(../v2-siteimages/button.png);
background-repeat:no-repeat;
}
HTML दस्तावेज़ में:
<div id="v2menu">
<a id="v2menu-home" href="/index.php">home </a>
</div><!-- v2menu -->
उदाहरण के लिए:
पृष्ठभूमि छवि हमेशा कंटेनर आकार (चौड़ाई 100% और ऊंचाई 100px) के लिए फिट होगी।
क्रॉस-ब्राउज़र CSS:
.app-header {
background: url("themes/default/images/background.jpg") no-repeat;
-moz-background-size: 100% 100px;
-webkit-background-size: 100% 100px;
-o-background-size: 100% 100px;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src = "themes/default/images/background.jpg", sizingMethod = 'scale');
background-size: 100% 100px;
}
यह CSS3 में पृष्ठभूमि-आकार के साथ करना संभव है
.backgroungImage {
background: url('../imageS/background.jpg') no-repeat;
background-size: 32px 32px;
}
यदि आप background-size
उसी background
संपत्ति में सेट करना चाहते हैं जिसका आप उपयोग कर सकते हैं:
background:url(my-bg.png) no-repeat top center / 50px 50px;