2012-02-03 10 views
58

के रूप में एन्कोड किया गया है मैंने एक छवि स्लाइडर बनाया है (भयानक bxSlider पर आधारित) जो दृश्य में स्लाइड करने से पहले छवियों को प्रीलोड कर देगा। यह पहले से ही बहुत अच्छी तरह से काम कर रहा है, लेकिन मुझे नहीं लगता कि मेरा समाधान वैध HTML है।खाली छवि को डेटा-यूरी

मेरी तकनीक निम्नानुसार है: मैं सामान्य स्लाइड छवि के साथ स्लाइडर मार्कअप उत्पन्न करता हूं (<img src="foo.jpg"> के साथ) और बाद की छवियों को <img data-orig="bar.jpg"> जैसे डेटा एट्रिब्यूट में संदर्भित किया जा रहा है। एक जावास्क्रिप्ट तब आवश्यक होने पर data-orig -> src परिवर्तन को जॉगल करता है, प्रीलोडिंग को ट्रिगर करता है।

दूसरे शब्दों में, मेरे पास है:

<div class="slider"> 
    <div><img src="time.jpg" /></div> 
    <div><img src="data:" data-orig="fastelavn.jpg" /></div> 
    <div><img src="data:" data-orig="pels_strik.jpg" /></div> 
    <div><img src="data:" data-orig="fashion.jpg" /></div> 
</div> 

खाली src="" गुण (जो some browsers में harmful to performance कर रहे हैं) से बचने के लिए, मैं src="data:" डाला है प्रभावी रूप से एक प्लेसहोल्डर के रूप में एक खाली छवि डालने के लिए।

बात यह है कि, मुझे documentation for data-URI में कुछ भी नहीं लगता है कि यह एक वैध डेटा-यूआरआई है या नहीं। मैं मूल रूप से न्यूनतम डेटा-यूआरआई चाहता हूं जो एक खाली/पारदर्शी छवि का समाधान करता है, इसलिए ब्राउज़र तुरंत स्रोत को हल कर सकता है और आगे बढ़ सकता है (बिना त्रुटि या नेटवर्क अनुरोध के)। शायद src="data:image/gif;base64," बेहतर होगा?

+0

बस खाली हैश का उपयोग करें। http://stackoverflow.com/a/28077004/3841049 – iGidas

+0

@iGidas: बुरा विचार, कई ब्राउज़रों वास्तव में मुख्य पृष्ठ पर एक दूसरे अनुरोध (मूल छवि की तुलना में कहीं बदतर प्रदर्शन हिट के कारण और में भ्रामक प्रविष्टियां कर देगा के रूप में अपने सर्वर लॉग), एचटीएमएल को एक छवि के रूप में समझने की कोशिश करें, एक त्रुटि फेंक दें, और संभावित रूप से वास्तविक एप्लिकेशन त्रुटियों का कारण बनें (उदाहरण के लिए शॉपिंग कार्ट/चेकआउट पृष्ठों में जहां 'पेज रीफ्रेश' टोकरी में अधिक आइटम जोड़े जाने या सुरक्षा उपायों को ट्रिगर करने का कारण बनता है) –

+0

वास्तविक 'डेटा: छवि/gif; base64,' 'src' के रूप में उपयोग किया गया है? या यहां तक ​​कि छोटा 'डेटा:', कोमा के साथ समाप्त होता है। लगता है कि वैध HTML होना चाहिए और बिना किसी त्रुटि के हर आधुनिक ब्राउज़र में काम करना लगता है। इसका उपयोग करने के खिलाफ कोई तर्क? – bobo

उत्तर

140

मैं इस पर देखा और smallest possible transparent GIF image के लिए अतिरिक्त बाइट्स, एक डेटा के रूप में एन्कोड

data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

जो अब मैं क्या उपयोग कर रहा हूँ: -uri, इस था।

+1

अपने 'img' तत्व पहले से ही छिपा हुआ है और तुम सिर्फ HTTP 404 त्रुटियों से बचने के, एक गैर पारदर्शी छवि का एक छोटा डेटा के लिए http://stackoverflow.com/a/14115340/14731 देखने के प्रयास कर रहे हैं। – Gili

24

आप की जरूरत है, तो एक पारदर्शी छवि 1x1 पिक्सेल सिर्फ src डिफ़ॉल्ट विशेषता

data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== 

के रूप में इस डेटा uri सेट इस बजाय चित्र 1x1 सफेद के लिए एक बेस 64 एन्कोडिंग है

data:image/gif;base64,R0lGODlhAQABAIAAAP7//wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== 

अन्यथा आप सेट कर सकते हैं data:null और बचाने ~ 60 प्रत्येक छवि

+4

क्या आप उस डेटा को सत्यापित करने के लिए एक लिंक प्रदान कर सकते हैं: शून्य छवि स्रोत के रूप में मान्य है? –

+1

डेटा: शून्य मान्य नहीं है। – Jack

+0

हमेशा मेरे लिए काम किया। – fcalderan

9
data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA= 

छोटा होता है: डी

+1

सच - वह एक प्यारा है! लेकिन क्या यह एक मानक अनुपालन gif है? क्या आप इस बात पर विस्तार कर सकते हैं कि आप इस पर कैसे पहुंचे? –

+2

http://proger.i-forge.net/The_smallest_transparent_pixel/eBQ – Alex

+0

एफएफ 27.0 ब्लैक प्वाइंट –

4

फ़ैब्रिज़ियो की "सफेद gif" वास्तव में पूरी तरह से सफेद नहीं है: यह rgb(254, 255, 255) है।

मैं this page पर पाया गया निम्न (जो छोटा होता है) का उपयोग करता हूं।

data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs= 
+0

यदि आप एक सफेद पिक्सेल चाहते हैं तो वह ठीक है, लेकिन मैं एक अधिक सामान्य उद्देश्य पारदर्शी की तलाश में था। –

5

1px 1px JPEG छवि से

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKAP/2Q== 
13

छोटी से छोटी मैंने कभी

डेटा को देखा है: image/gif; बेस 64, R0lGODlhAQABAAAAACw =

+4

निश्चित रूप से, सिवाय इसके कि केवल क्रोम ही है। इसे फ़ायरफ़ॉक्स में खोलें और आपको 'छवि प्रदर्शित नहीं की जा सकती क्योंकि इसमें त्रुटियां हैं'। Http://proger.i-forge.net/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80/ देखें [20121112]% 20% 20% सबसे कम% 20transparent% 20pixel.html –

+1

@ जेन्स रोलैंड, हाँ सही मैं पुष्टि करता हूं कि यह फ़ायरफ़ॉक्स पर काम नहीं कर रहा है! हालांकि एक साल पहले इसका इस्तेमाल करते समय मुझे एफएफ के साथ कोई समस्या याद नहीं है! अजीब – azerafati

9
data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"/> 

मान्य और अत्यधिक संपीड़ित। पृष्ठ में एक और इनलाइन svg अगर अनिवार्य रूप से मुक्त है।

+2

मुझे यह पसंद है। मैं केवल दो कमजोरियों को देखता हूं: सबसे पहले, एसवीजी आईई <9 में समर्थित नहीं है (आमतौर पर एक समस्या नहीं है, लेकिन यह कुछ साइटों के लिए इसे अक्षम बनाता है); और दूसरा, "आईवी और फ़ायरफ़ॉक्स में काम करने के लिए एसवीजी डेटा को यूरेनिकोड किया जाना चाहिए" (http://caniuse.com/#search=datauri देखें), इसलिए आपको वास्तव में उपयोग करना होगा: 'डेटा: छवि/svg + xml,% 3 सीएसवीजी% 20xmlns =% 22http: // www.w3.org/2000/svg% 22 /% 3E' जो अभी भी मेरे से छोटा 4 बाइट छोटा है, लेकिन यह थोड़ा गन्दा दिखता है –

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