मोबाइल WebKit ब्राउज़र पर सीएसएस बैकग्राउंड शॉर्टहैंड की सुविधा

इस साल की शुरुआत में, WebKit ने सीएसएस background शॉर्टहैंड प्रॉपर्टी के काम करने के तरीके को अपडेट किया. इस बदलाव के बाद, अगर शॉर्टहैंड एलान में background-size की वैल्यू सेट नहीं की गई है, तो background शॉर्टहैंड प्रॉपर्टी, background-size को उसकी डिफ़ॉल्ट वैल्यू auto auto पर रीसेट कर देगी. इस बदलाव से, Chrome और अन्य WebKit ब्राउज़र, स्पेसिफ़िकेशन का पालन करने लगेंगे. साथ ही, इनका व्यवहार Firefox, Opera, और Internet Explorer जैसा हो जाएगा.

Android के लिए Chrome, WebKit के मौजूदा रिविज़न पर आगे बढ़ रहा है. इसलिए, यह बदलाव अब Android में लॉन्च किया जा रहा है. यह वेबवॉकेट से जुड़ी समस्या को ठीक करने के लिए किया गया था. इसलिए, जिन साइटों की जांच एक से ज़्यादा ब्राउज़र में की गई है उन पर इसका असर नहीं पड़ेगा.

काम करने का पुराना तरीका

// background-size is reset to auto auto by the background shorthand
.foo {
    background-size: 50px 40px;
    background: url(foo.png) no-repeat;
}

background शॉर्टहैंड प्रॉपर्टी में कोई साइज़ प्रॉपर्टी नहीं होती. इसलिए, यह background-size को उसकी डिफ़ॉल्ट वैल्यू auto auto पर रीसेट कर देगी.

इमेज का साइज़ बताने का सही तरीका

// background-size is specified after background
.fooA {
    background: url(foo.png) no-repeat;
    background-size: 50px 40px;
}

// background-size is specified inline after position
.fooB {
    background: url(foo.png) 0% / 50px 40px no-repeat;
}

fooB में, background शॉर्टहैंड में background-size तय करने के लिए, पहले position (0%) तय करना ज़रूरी है. इसके बाद, फ़ॉरवर्ड स्लैश और फिर background-size (50 पिक्सल 40 पिक्सल) डालें.

मौजूदा कोड से जुड़ी समस्याएं हल करना

इस समस्या को आसानी से ठीक करने के लिए, आपके पास कई विकल्प हैं:

  • background शॉर्टहैंड प्रॉपर्टी के बजाय, background-image का इस्तेमाल करें.
  • background-size को आखिर में सेट करें. साथ ही, उस एलिमेंट पर background सेट करने वाले किसी भी अन्य सीएसएस नियम की तुलना में, ज़्यादा सटीक तरीके से सेट करें. साथ ही, :hover नियमों की जांच करना न भूलें.
  • !important प्रॉपर्टी को background-size पर लागू करें.
  • साइज़ की जानकारी को background शॉर्टहैंड प्रॉपर्टी में ले जाएं.

बोनस: बैकग्राउंड इमेज के ऑफ़सेट

इस बदलाव के अलावा, अब बैकग्राउंड में इमेज को अपनी पसंद के मुताबिक रखा जा सकता है. पहले, सिर्फ़ सबसे ऊपर बाएं कोने से इमेज की स्थिति तय की जा सकती थी. अब कंटेनर के किनारों से ऑफ़सेट तय किया जा सकता है. उदाहरण के लिए, background-position: right 5px bottom 5px; सेट करने पर, इमेज को दाएं किनारे से 5 पिक्सल और नीचे से 5 पिक्सल की दूरी पर रखा जाएगा. JSBin पर यह सैंपल देखें