मुखपृष्ठ » कोडिंग » मोबाइल ऐप डिजाइन / देव बिल्डिंग नेविगेशन jQuery के साथ

    मोबाइल ऐप डिजाइन / देव बिल्डिंग नेविगेशन jQuery के साथ

    स्मार्टफ़ोन अब कुछ बहुत ही कुशल वेब ब्राउज़र से लैस हैं। जावास्क्रिप्ट पहले से कहीं अधिक शक्तिशाली है, और इसे jQuery जैसे कोड पुस्तकालयों की मदद से बढ़ाया जा सकता है। जब आप नवीनतम HTML5 / CSS3 स्पेक्स में जोड़ते हैं, तो कुछ बुनियादी फ्रंट कोड के साथ बहुत तेज़ मोबाइल वेब ऐप बनाना संभव है.

    इस ट्यूटोरियल में मैं दिखाता हूँ कि आप मोबाइल-आधारित वेबसाइट / वेबऐप कैसे बना सकते हैं। हम विशिष्ट उपकरणों और स्क्रीन रिज़ॉल्यूशन को लक्षित करने के लिए CSS3 मीडिया प्रश्नों का उपयोग करेंगे। इसके अलावा jQuery का एक सा मेनू मेनू को चेतन करने और Ajax कॉल का उपयोग करके बाहरी पृष्ठ सामग्री को लोड करने में मदद करता है। और भी बेहतर, लेआउट नियमित रूप से डेस्कटॉप ब्राउज़र जैसे क्रोम या फ़ायरफ़ॉक्स में प्रदर्शित करने के लिए विस्तार कर सकता है.

    • लाइव डेमो
    • सोर्स कोड

    पृष्ठ संरचना को परिभाषित करना

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

        

    एक्स-UA- संगत इसका उपयोग यह बताने के लिए किया जाता है कि आपके दस्तावेज़ को कुछ ब्राउज़रों में कैसे प्रस्तुत करना चाहिए। एचटीएमएल 5 में कोडिंग करते समय यह एक दिलचस्प परिदृश्य है, इसलिए मुझे इस बारे में बहुत चिंता नहीं होगी। हालाँकि मेटा व्यूपोर्ट टैग बहुत महत्वपूर्ण है। यह मानक ज़ूम किए गए प्रभाव के बजाय मोबाइल ब्राउज़र विंडो को 100% पर सेट करता है.

    सामग्री मूल्य के साथ उपयोगकर्ता ज़ूम को अक्षम करना भी संभव है उपयोगकर्ता-मापनीय = नहीं. लेकिन इस मामले में हम पूरी स्क्रीन चौड़ाई सेट करना चाहते हैं ताकि हमारी डिवाइस की चौड़ाई समान हो। Apple वेब ऐप टैग वेबसाइट को आपके iPhone या iPod टच के लिए होम स्क्रीन आइकन के रूप में सहेजने की अनुमति देगा। पूरी तरह से आवश्यक नहीं है लेकिन निश्चित रूप से लायक है.

    इनर बॉडी कंटेंट

    बॉडी टैग के अंदर मैंने आईडी के साथ एक रैपर div सेटअप किया है #W. अंदर मैंने आईडी का उपयोग करके लेआउट को दो और डिवीजनों में तोड़ दिया है #pagebody तथा #navmenu. पूरे पृष्ठ की चौड़ाई 640px तक सीमित होती है, ताकि लेआउट सख्त संख्या में बदल जाए.

    एचके मोबाइल

    मोबाइल साइट पर आपका स्वागत है!

    नेविगेशन मेनू को कम जेड-इंडेक्स मान दिया गया है ताकि #pagebody हमेशा शीर्ष पर है। जावास्क्रिप्ट कोड के नीचे नेविगेशन प्रकट करने के लिए जावास्क्रिप्ट कोड पृष्ठ बॉडी पर एक निश्चित संख्या में स्लाइड करेगा क्योंकि यह महत्वपूर्ण है.

    मैंने मोबाइल सफारी में कुछ खराब व्यवहार को रोकने के लिए प्रत्येक। Html पृष्ठ के सामने एक हैश प्रतीक (#) का उपयोग किया है। जब भी आप एक लिंक पर क्लिक करते हैं तो URL बार प्रकट होता है और सामग्री को नीचे धकेलता है। लेकिन जब कोई आईडी संदर्भित करता है तो जावास्क्रिप्ट कॉल के अलावा कुछ भी पुनः लोड नहीं किया जाता है.

    सीएसएस पोजिशनिंग

    हमारे सीएसएस कोड के अंदर बहुत सी भ्रमित करने वाली सामग्री नहीं है। अधिकांश पोजिशनिंग मैन्युअल रूप से की जाती है और फिर jQuery के माध्यम से हेरफेर की जाती है। लेकिन हमारे दस्तावेज़ में कुछ दिलचस्प टुकड़े हैं.

    / ** @ ग्रूप कोर बॉडी ** / #w #pagebody स्थिति: रिश्तेदार; बायां: 0; अधिकतम-चौड़ाई: 640px; न्यूनतम-चौड़ाई: 320px; z- इंडेक्स: 99999;  #w #navmenu पृष्ठभूमि: # 475566; ऊंचाई: 100%; प्रदर्शन क्षेत्र; स्थिति: निश्चित; चौड़ाई: 300 पीएक्स; बायां: 0px; शीर्ष: 0px; z-index: 0; 

    यह शीर्ष खंड पृष्ठ के दोनों वर्गों के लिए शैलियों को परिभाषित करता है। हमारा नौसेना मेनू केवल 300px चौड़ा है, इसलिए यह पृष्ठ सामग्री के लिए अभी भी देखा जा सकता है। खुला / बंद मेनू बटन भी बाईं ओर सीधे स्थित है और हमेशा सुलभ है। यहाँ महत्वपूर्ण टुकड़ा z- सूचकांक संपत्ति मूल्य और उपयोग है स्थिति: निश्चित; हमारे नवमेनू पर.

    शीर्ष टूलबार हेडर भी एक दिलचस्प अनुभाग है। यह एक निश्चित स्थिति पर सेट है, इसलिए यह पृष्ठ सामग्री के साथ स्क्रॉल करेगा। यह उसी तरह के प्रभाव की नकल करता है जैसा कि आप किसी भी iOS ऐप टाइटल बार में पाएंगे.

    / ** @ ग्रूप हेडर ** / #w #pagebody हेडर # टूलबारनव प्रदर्शन: ब्लॉक; स्थिति: निश्चित; बायां: 0px; शीर्ष: 0px; z-index: 9999; पृष्ठभूमि: # 0b1851 url ('img / tabbar-solid-bg.png') शीर्ष बाईं ओर कोई दोहराएं नहीं; सीमा-त्रिज्या: 5 पीएक्स; -मोज़-बॉर्डर-रेडियस: 5 पीएक्स; -वेबकिट-बॉर्डर-त्रिज्या: 5 पीएक्स; -ओ-सीमा-त्रिज्या: 5 पीएक्स; बॉर्डर-बॉटम-राइट-रेडियस: 0; -मोज़-बॉर्डर-रेडियस-बॉटम: 0; -वेबकिट-बॉर्डर-बॉटम-राइट-रेडियस: 0; बॉर्डर-बॉटम-लेफ्ट-रेडियस: 0; -मोज़-बॉर्डर-रेडियस-बॉटमफ़्ट: 0; -वेबकिट-बॉर्डर-बायीं-बाईं-त्रिज्या: 0; ऊंचाई: 44 पीएक्स; चौड़ाई: 100%; अधिकतम-चौड़ाई: 640px;  #w #pagebody हैडर # toolbarnav h1 text-align: center; पैडिंग-टॉप: 10 पीएक्स; पैडिंग-राइट: 40 पीएक्स; रंग: # e6e8f2; फोंट की मोटाई: बोल्ड; फ़ॉन्ट-आकार: 2.1em; पाठ-छाया: 1px 1px 0px # 313131; 

    मोबाइल नियम

    यह नोटिस करना आसान है मैं नीले हेडर बार बनावट के लिए एक पृष्ठभूमि छवि का उपयोग कर रहा हूं। सुसंगत लेआउट संरचना के साथ रखने के लिए इसका आकार 640 × 44 पिक्सेल है। लेकिन मैंने iPhone / iPad रेटिना डिस्प्ले के लिए एक छवि @ 2x भी विकसित की है। आप नीचे दिए गए दोनों चित्रों को देख सकते हैं, या उन्हें मेरे डेमो स्रोत कोड से पकड़ सकते हैं.

    मैंने नाम की एक अन्य फ़ाइल में इस कार्यक्षमता के लिए मोबाइल CSS सेटअप किया है responsive.css. इसमें दो मीडिया क्वेश्चन शामिल हैं जो टाइटल बार bg और मेन्यू बटन आइकन को रेटिना डिवाइस के लिए बदल देते हैं.

    / ** रेटिना डिस्प्ले ** / @मीडिया केवल स्क्रीन और (-webkit-min-device-pixel-ratio: 2), केवल स्क्रीन और (min - moz-device-pixel-ratio: 1.5), केवल स्क्रीन और ( min-device-pixel-ratio: 1.5) #w #pagebody हैडर बैकग्राउंड: # 0b1851 url ('img/[email protected] ') टॉप लेफ्ट नो-रिपीट; पृष्ठभूमि का आकार: 640px 44px;  #w #pagebody हैडर # मेन्यू-बीटीएन बैकग्राउंड: url ('img/[email protected] ') नो-रिपीट; पृष्ठभूमि का आकार: 53px 30px; 

    डिजाइनिंग मेनू तीर

    नेविगेशन क्षेत्र में मैंने प्रत्येक मेनू लिंक के दाईं ओर एक छोटा तीर आइकन भी शामिल किया है। यह आसानी से किसी भी रचनात्मक कॉमन्स कलाकृति से एक छवि के साथ बदला जा सकता है। लेकिन ज्यादातर सभी CSS3 aficionados इस पद्धति का परीक्षण करना पसंद करेंगे.

    #w #navmenu ul li a :: content: "के बाद; प्रदर्शन: ब्लॉक; चौड़ाई; 6px; ऊंचाई: 6px; सीमा-सही: 3px ठोस # d0d0d8; सीमा-शीर्ष: 3px ठोस # d0d0d8; स्थिति: निरपेक्ष; : 30px; शीर्ष: 45%; -webkit- परिवर्तन: रोटेट (45deg); -मोज़-ट्रांसफ़ॉर्म: रोटेट (45deg); -ओ-ट्रांसफ़ॉर्म: रोटेट (45deg); ट्रांसफ़ॉर्म: रोटेट (45deg); #w #navmenu ul li a: hover :: के बाद सीमा-रंग: # Cad0e6 ;;

    हम उपयोग कर रहे हैं परिवर्तन संपत्ति सामग्री के बाद एक छोटी सी सीमा बनाने के लिए। मैंने भी सेटअप किया स्थिति: निरपेक्ष; इसलिए हम स्वतंत्र रूप से इन सीमाओं को आंतरिक लिंक आइटम के चारों ओर ले जा सकते हैं। यह एक होवर राज्य पर सीमा के रंग को बदलने के लिए सुपर आसान है, जो एक अधिक गतिशील भावना प्रदान करता है। यह बहुत अविश्वसनीय है कि आप मूल HTML5 और CSS3 नियमों का उपयोग करके क्या पूरा कर सकते हैं.

    लेकिन अब जावास्क्रिप्ट कोड के बिट्स और टुकड़ों में चलते हैं। यह याद रखें कि मेरे कोड को ठीक से चलाने के लिए jQuery लाइब्रेरी में शामिल होना आवश्यक है.

    jQuery के एनिमेटेड

    इन कस्टम कोड को लिखने में मैंने एक नया दस्तावेज़ बनाया है जिसका नाम है script.js. सीधे इन में लिखने के लिए स्वतंत्र महसूस करें > टैग, या डेमो स्रोत कोड से मेरा उदाहरण डाउनलोड करें.

    $ (दस्तावेज़)। पहले से ही (फ़ंक्शन () var पेजबॉडी = $ ("# पेजबॉडी"); थीम थिमेनु = $ ("# नेवमेनू"); वर टॉपबार = $ ("# टूलबारनव"); var सामग्री "$ (") # कंटेंट "); वर् व्यूपोर्ट = चौड़ाई: $ (विंडो)। रिचार्ज (), हाइट: $ (विंडो) .हाइट (); // वैरिएबल को // viewport.width / viewport.height के रूप में पुनः प्राप्त करें। 

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

    function openme () $ (function () topbar.animate (बाएं: "290px", अवधि: 300, कतार: झूठी); पेजबॉडी.नाम (बाएं: "290px", अवधि: 300 , कतार: झूठी););  function stopeme () var closeme = $ (function () topbar.animate (बाएं: "0px", अवधि: 180, कतार: झूठी); पेजबॉडी.नाम (बाएं: 0px ", अवधि: 180, कतार: झूठी);); 

    अगला मैंने मेनू खोलने और बंद करने के लिए दो महत्वपूर्ण कार्यों को परिभाषित किया है। ये एक ही कार्य और कॉलबैक टॉगल में किया जा सकता था - सिवाय इसके कि वास्तव में हमें एक ही समय में दो अलग-अलग तत्वों को चेतन करने की आवश्यकता है। दुर्भाग्य से यह jQuery के लिए डिफ़ॉल्ट व्यवहार नहीं है, इसलिए हमें एक वैकल्पिक वाक्यविन्यास का सहारा लेना होगा.

    जिन दो तत्वों को हम लक्षित कर रहे हैं उनका नाम है शीश पट्टी तथा pagebody. एक सफेद पृष्ठभूमि के साथ आंतरिक सामग्री क्षेत्र पूर्ण पेजबॉडी है; हालांकि हमारे पास पृष्ठ के शीर्ष पर तय की गई शीर्षक पट्टी की स्थिति है। इसका मतलब यह है कि यह स्वाभाविक रूप से पृष्ठ के साथ चेतन नहीं होगा और हमें एक अलग कॉल का उपयोग करने की आवश्यकता है। उद्घाटन 290px बाईं ओर धकेलने के लिए सेटअप है (लगभग पूर्ण 300px नौ चौड़ाई) और समापन समारोह इसे वापस ले लेता है.

    लोड हो रहा है गतिशील सामग्री

    एनीमेशन की देखभाल के लिए ऊपर दिया गया कोड काफी आसान है। और सैद्धांतिक रूप से आपको इस तरह की एक सरल मोबाइल वेबसाइट की आवश्यकता है - लेकिन मैं थोड़ा और अधिक जोड़ना चाहता हूं.

    जब भी हम उस मेनू लिंक पर क्लिक करते हैं, तो हम वर्तमान नेविगेशन को बंद करना चाहते हैं और पेज कंटेंट की तलाश करते हुए एक लोडिंग जिफ़ को प्रदर्शित करते हैं। फिर एक बार पूरा होने पर हम gif इमेज को हटाते हैं और इसे सभी के अंदर लोड करते हैं। यह शानदार है क्योंकि हम सामग्री के लिए स्थैतिक .html पृष्ठों का भी उपयोग कर सकते हैं। कोई PHP या रूबी या पर्ल या कोई बैकएंड भाषाएं चीजों को गड़बड़ करने के लिए नहीं.

    क्लिक प्रबंधन

    जब हमारे उपयोगकर्ता नेविगेशन बटन पर क्लिक करते हैं तो सबसे पहले हम परीक्षण करना चाहते हैं। यह सामान्य href मान को लोड होने से रोकेगा और हम बाहरी सामग्री प्रदर्शित करने के लिए अपने स्वयं के कार्यों का उपयोग कर सकते हैं.

    // लोडिंग पेज कंटेंट नेविगेशन के लिए $ ("a.navlink")। लाइव ("क्लिक", फंक्शन (e) e.preventDefault) (); var linkurl = $ (यह) .attr ("href"); var linkhtmlurl; = linkurl.substring (1, linkurl.length); var imgloader = '
    ';

    अब हम कक्षा के साथ किसी भी एंकर के लिए चयनकर्ता खोल रहे हैं navlink. जब भी कोई उपयोगकर्ता इनमें से किसी एक लिंक पर क्लिक करता है तो हम उसे लोड करने से रोकते हैं और पूर्ण URL के लिए एक चर सेटअप करते हैं। मैंने एक मानक छवि लोडर को शामिल करने के लिए सामग्री HTML के लिए एक चर भी सेटअप किया है। यदि आप अपने स्वयं के अनुकूलित करना चाहते हैं तो मैं अत्यधिक अजाक्स लोड की सिफारिश करता हूं.

    अजाक्स। लोड ()

    इस प्रभाव के दो अलग-अलग टुकड़े हैं जो मैंने बड़े करीने से तोड़ दिए हैं। नीचे दिया गया कोड हमारा पहला बिट है जो नेविगेशन मेनू को बंद करता है और कुल दस्तावेज़ विंडो को ऊपर की तरफ स्लाइड करता है। हम आंतरिक बॉडी कंटेंट को एक छोटे लोडर एनीमेशन से बदलना चाहते हैं, और यदि उपयोगकर्ता पृष्ठ के नीचे देख रहे हैं, तो वे इसे देख नहीं सकते हैं.

    closeme (); $ (फ़ंक्शन () topbar.css ("टॉप", "0px"); window.scrollTo (0, 1););

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

    content.html (imgloader); setTimeout (फ़ंक्शन () content.load (linkhtmlurl, function () / * no callback * /), 1200);

    यह नई सामग्री लोड करने से पहले 1200 मिलीसेकंड को रोक देगा। मेरे डेमो के लिए यह बहुत बेहतर दिखता है और आपको यह अनुमान देता है कि एप्लिकेशन धीमे इंटरनेट कनेक्शन पर कैसे व्यवहार करेगा.

    निष्कर्ष

    मैं सभी वेब डेवलपर्स को ट्यूटोरियल सोर्स कोड डाउनलोड करने और अपने आसपास खेलने के लिए प्रोत्साहित करता हूं। यह HTML / CSS3 और जावास्क्रिप्ट प्रभावों के एक स्पर्श के साथ पूरा किया जा सकने वाला ऐसा एक मूल उदाहरण है। मोबाइल स्क्रीन के लिए बिल्डिंग मीडिया के सवालों और अधिक विस्तृत वेब ब्राउज़र के साथ पहले से कहीं ज्यादा आसान है.

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