خلق دينامية التخطيطات

هذه المقالة ليحل مشكلة قديمة ، كما يبدو في واجهة مستخدم خلق دينامية التحولات تصميمه اعتمادا على قرار ما أو وكيل المستخدم هو عرض أو عرض واجهة المستخدم. مشكلة تحتاج إلى خلق ديناميكية واجهة المستخدم التي يتم تخطيط ومنطقيا ، وكما مقروء ممكن ، وينتشر عبر طائفة واسعة من وكلاء المستخدمين المختلفة (بما في ذلك قرارات متباينة ، المتصفحات ، والأجهزة ، وهلم جرا) ، ويجعل من المعقول استخدام الشاشة العقارات المتاحة. نظرية فكروا ماذا يحدث عندما الأمواج إلى صفحة أتش تي أم أل مثل http://www.eweek.com.

  

نلاحظ أنا لا ناقدين الأسبوع الإلكتروني على وجه التحديد ، ولكن فقط على سبيل المثال ، لأن تقريبا كل موقع ويب يحتوي على نفس العيب. والحقيقة هي أن أيا من هو أفضل ، لأن لكل منها مزاياه وعيوبه. حتى الآن ليست هي الأمثل. عندما بدأت الإنترنت في البداية لأصبحت ذات شعبية كبيرة ، ومعظم أجهزة الكمبيوتر لديها نفس دقة الشاشة ، والناس نادرا ما متجول الإنترنت على أجهزة الهاتف الخلوي. الآن أجهزة الكمبيوتر قوية للغاية ، ولكنها تختلف إلى حد التطرف في دقة الشاشة. احتياجات الحوسبة الشخصية يمكن أن تختلف من مستوى منخفض بلغ 800 × 480 على ارتفاع 4500 × 1200 لشاشة مزدوجة. فإنه لا معنى لتحديد دقة الشاشة. وأبعاد المستخدمة في المتصفح الصغيرة هي عمود واحد ، من عمود واحد ، وعمود واحد. ومع ذلك ، يستخدم متصفح أكبر من عمود واحد ، واثنين من الأعمدة ، وعمودين. ما تقومون به هو إعادة تصحيح الفضاء حتى في إطار أصغر ، عمود واحد فقط هو مبين. في إطار أكبر ، ويمكن أن يتضح أكثر من الأعمدة. الحل تشرح هذه المقالة في حل القطع ، بدءا من العام يدعو أتش تي أم أل الصفحة التي تدعو الخوارزمية التحجيم ، ثم خوارزمية التحجيم نفسها. البرمجية التالية تضم مجمل أتش تي أم أل الصفحة.

 المصدر : / الانترنت / الجذر / مقالات اياكس / dhtml / dynamiclayout.html  دينامية النسق 

عند النظر الى رمز للصفحة أتش تي أم أل ، يمكنك أن ترى أن من نوع يطلق FlexBox مثيل والمخصصة لflexbox عالمي متغير. وFlexBox نوع الخوارزمية التحجيم. عمل instantiating واصفا نوع FlexBox هي التي نفذت في InitializePage وظيفة ، وهو ما يسمى من قبل event.2 body.onload تريد مثيل نوع FlexBox في حال body.onload ، لأن ذلك هو مكان آمن للالأولى رمز للعمل على نموذج كامل دوم. FlexBox عندما يتم إنشاء مثيل ، فإنها بحاجة إلى معلمة منشئ ؛ في حالة المثال ، وهذا هو عازلة "مضمون". المخزن المؤقت "المحتوى" هو معرف في إشارة إلى عنصر أتش تي أم أل التي تخدم كأساس للعناصر أتش تي أم أل التي سوف يكون حجمها. على سبيل المثال ، فإن الإشارات معرف المحتوى عنصرا شعبة ، الذي يحتوي على عناصر div الطفل. في هذه الخوارزمية التحجيم ، وهو عنصر div المراجع الطفل عناصر شعبة. الخاصة بك في تنفيذ هذه المادة ، لا تحتاج للقيام بذلك. هذه الخوارزمية التحجيم يوضح أن عنصرا أتش تي أم أل يحتوي على عدد من القطع المحتوى ، والتي تكون بمثابة الأعمدة التي سوف يكون حجمها. عند تعيين مثيل FlexBox لflexbox ، FlexBox الأولى تهيئة نفسها وإعادة الطلب العناصر div إلى هيكل الجدول. المنفذة المنشئ FlexBox يؤدي إلى إعادة ترتيب عناصر div إلى أتش تي أم أل التالية :

تفرغه للأتش تي أم أل لعنصر الجدول هو ضرورة. وضعين متناسب محاذاة العناصر على صفحة أتش تي أم أل : الإحداثيات المطلقة والنسبية الإحداثيات. افتراضيا ، أتش تي أم أل يستخدم الإحداثيات النسبية ، والتي تحسب المتصفح. النسبية في تنسيق واسطة ، تحتاج فقط إلى تحديد العناصر التي تتبع العناصر الأخرى. المطلقة باستخدام الإحداثيات يحل مشاكل التوفيق بين ثلاثة عناصر الطفل شعبة ، ولكن بقية الصفحة أتش تي أم أل قد يكون من الغريب الانحياز ، وبعض العناصر قد لا تستخدم مطلقا الإحداثيات. طريقة بسيطة لمواءمة المحتوى على صفحة أتش تي أم أل باستخدام الإحداثيات النسبية لاستخدام جدول. وبالتالي ، فإن خوارزمية التحجيم يبحث في الأصل div العنصر ، بإنشاء جدول ، ويخلق خلية جدول لكل طفل div عنصر. بعض القراء قد يعتقد أنه كان من الأسهل تحديد الجدول العناصر بدلا div ومن ثم يكون العمل خوارزمية مع عناصر الجدول مباشرة. صحيح أن استخدام عنصر الجدول يمكن أن يكون أسهل ، ولكن هذه الخوارزمية يوضح كيف يمكنك استبدال العناصر أتش تي أم أل أتش تي أم أل مع عناصر جديدة. بالعودة إلى شفرة المصدر لاستدعاء أتش تي أم أل صفحة ، setCharacteristics الطريقة تسمى flexbox مرة أسندت . يمكنك تمرير تعريف الكائن مع عدد من الكائنات المضمنة لsetCharacteristics. الغرض من setCharacteristics هو تحديد عرض الأعمدة النسبي للعناصر وdiv الطفل. وبالتالي ، الكائن المضمن لديها عدد من الخصائص التي تتوافق مع واحد الى واحد مع معرفات عناصر وdiv الطفل. على سبيل المثال ، الكائن المضمن يعرف القيود التالية :

• col1 : ينبغي أن يكون كل عمود 200 بكسل ، وليس هناك amaximum من عمود واحد فقط.

• col2 : ينبغي أن يكون كل عمود 100 بكسل ، وليس هناك حد أقصى قدره أربعة أعمدة.

• col3 : ينبغي أن يكون كل عمود 200 بكسل ، ويمكن أن تكون هناك العديد من الأعمدة وهناك مساحة. ولكي نفهم هذه القيود ، تحتاج إلى فهم طبيعة خوارزمية التحجيم. إن فكرة الخوارزمية التحجيم هو تحديد النسب التي يتيح تطبيق عميل لترتيب المحتوى بشكل مناسب. من خلال زيادة العرض من المستعرض ، يمكنك تجميع المزيد من كتل من الجانب المحتوى إلى جنب. سهولة قراءة الصفحة أتش تي أم أل هو تحسين ، لأن هناك أقل التمرير ، وصفحة أتش تي أم أل يشبه صحيفة. الفرق مع صفحة أتش تي أم أل هو ، على عكس الصحف ، وعدد الأعمدة عرض يعتمد على حجم إطار العميل. ميزة هي انه اذا نظرتم الى صفحة أتش تي أم أل من جهاز حاسب فائق الحمل أو من واسع notearticle الشاشة ، لا يزال الحصول على نظرة جيدة ويشعر هذا المقال والتحجيم خوارزمية التركيز على الوعي إعطاء التغذية المرتدة الصفحة أتش تي أم أل أن خلية الجدول الان مجال لتحقيق واحد أو اثنين أو ثلاثة أعمدة من المحتوى. كيف يتم عرض المحتوى الذي يعتمد على صفحة أتش تي أم أل ، ويقع خارج نطاق الخوارزمية التحجيم. بالعودة إلى شفرة المصدر لاستدعاء أتش تي أم أل صفحة ، setContentCallback يسمى الدالة بعد استدعاء setCharacteristics.

الغرض من setContentCallback مهمة تتمثل في تحديد رد المستخدم الذي يتم تحديثه من خلال المعلومات الجديدة للمستخدم كيفية العديد من الأعمدة تقييد يمكن أن يصلح في زنزانة. على سبيل المثال ، يعرض العميل رمز المعلمات في خلية الجدول. لreproportion الجدول ، يمكنك استدعاء أسلوب التحديث. لأول مرة يتم استدعاء التحديث ، فإنه من الجسم onload الحدث. الهيئة onload الحدث اطلقت مرة واحدة فقط ، وسوف لا يمكن استدعاء مرة أخرى إذا كان العميل بتغيير حجم مستعرض العميل. لديها أسلوب التحديث كلما دعت المتصفح هو حجمها ، الحدث window.onresize يتم تعيينه. على سبيل المثال ، قمت بتعيين window.onresize إلى updateClientArea وظيفة ، الأمر الذي يجعل واحدة أسلوب الدعوة إلى flexbox.update ، والذي بدوره التحديثات في النسب من الجدول. الآن وبعد أن نظرية الخوارزمية التحجيم لقد تم شرح من المستوى التجريدي دعونا نناقش تفاصيل الخوارزمية التحجيم. رمز التالي يبين التنفيذ الكامل لخوارزمية التحجيم. علما بأن خوارزمية التحجيم هو تطبيق العرف ، وكنت قد اخترت استراتيجية مختلفة في وضعك الخاص :

وظيفة FlexBox (parentIdentifier) (اذا (typeof (parentIdentifier) == "السلسلة") (this.parentIdentifier = document.getElementById (parentIdentifier) ؛) والا (this.parentIdentifier = parentIdentifier ؛) this.table = document.createElement ( "المائدة") ؛ this.table.border = 1 ؛ tablerow فار = this.table.insertRow (-1) ؛ tempArray فار = صفيف الجديدة () ؛ ل (فار c1 = 0 ؛ c1 <this.parentIdentifier.childNodes.length ؛ c1 + +) ( tempArray [c1] = this.parentIdentifier.childNodes [c1] ؛ ) ل (فار c1 = 0 ؛ c1 <tempArray.length ؛ c1 + +) ( الطفل فار = tempArray [c1] ؛ إذا كان (child.nodeName.toLowerCase () == "div") ( خلية فار = tablerow.insertCell (-1) ؛ cell.appendChild (الطفل) ؛ إذا كان (child.id) ( cell.id = child.id ؛ ) ) )this.parentIdentifier.appendChild (this.table) ؛) FlexBox.prototype.setCharacteristics = وظيفة (خصائص) (this.characteristics = الخصائص ؛ FlexBox.prototype.setContentCallback = وظيفة (cbContent) (this.cbContent = cbContent ؛ FlexBox.prototype. تحديث = الدالة () (فار الصف = this.table.rows [0] ؛ totalCells فار = row.cells.length ؛ availableLength فار = document.body.clientWidth ؛ ل(مؤشر فار في this.characteristics) (this.characteristics [ مؤشر]. العواميد = 0 ؛) الاضافة فار ، وإذا كان (this.characteristics.updateAlgorithm) (الزيادة = this.characteristics.updateAlgorithm ؛) والا ( الزيادة = وظيفة (المرجع) ( takenWidth فار = 0 ؛ ل(مؤشر فار في ref.characteristics) ( takenWidth + = ref.characteristics [فهرس]. العواميد * ref.characteristics [فهرس]. العرض ؛ ) didIncrement فار = كاذبة ؛ ل(مؤشر فار في ref.characteristics) ( الكائنات فار = ref.characteristics [فهرس] ؛ اذا كان ((takenWidth + obj.width) <availableLength) ( إذا كان (obj.maxCols) ( إذا كان (obj.cols <obj.maxCols) ( obj.cols + + ؛ didIncrement = صحيح ؛ ) ) آخر ( obj.cols + + ؛ didIncrement = صحيح ؛ ) ) ) إذا كان (didIncrement) ( الزيادة (المرجع) ؛ )) الحالية (هذا) ؛ ل (فار c1 = 0 ؛ c1 <row.cells.length ؛ c1 + +) (اذا (row.cells [c1]. إيد) (فار هوية = row.cells [c1]. معرف ؛ إذا كان (this.characteristics [إيد] & & this.characteristics [إيد]. العرض) (row.cells [c1]. العرض = this.characteristics [إيد]. العرض * this.characteristics [إيد]. العواميد ، وإذا كان (this. cbContent & & this.cbContent.updateContent) (this.cbContent.updateContent (row.cells [c1] ، row.cells [c1]. childNodes [0] ، this.characteristics [إيد]. العواميد ، this.characteristics [إيد]) ؛)))))

بالنسبة للجزء الأكبر ، رمز لا تظهر بالخط العريض هو رمز دعم لرمز جريئة. أول جريئة رمز الفرع تطبق منطق تستخدم لتحويل div وعناصر div الطفل إلى الجدول الذي يحتوي على عناصر الطفل شعبة. والقسم الثاني جريئة رمز تطبق منطق لنسبة خلايا الجدول. دعونا نبدأ اليوم تشريح كتلة التعليمات البرمجية الأولى والتلاعب في الجدول وعناصر div الطفل. يمكنك التلاعب دوم في واحدة من طريقتين : يمكنك استخدام خاصية innerHTML ، أو يمكنك استخدام أساليب التعامل مع الكائنات. هذه المادة تعالج الكائنات باستخدام الأساليب ، لأن هذا النهج هو أكثر بساطة. الطفل يمكن أن تحتوي على عناصر div بعض متطورة إلى حد ما أتش تي أم أل البرمجية التي لا تريد لتسلسل و إلغاء تسلسل. باستخدام كائنات ونقلها في دوم لا الفاسدة الطفل عناصر شعبة. ملاحظة البنود التالية من رمز :

استخدم الأسلوب document.createElement إنشاء مثيل عنصر أتش تي أم أل: وعاد أتش تي أم أل سبيل المثال هو العنصر مثيل ولكنها ليست جزءا من الصفحة أتش تي أم أل ، ويحتاج إلى إضافته.

إذا كان عنصر يمثل عنصرا أتش تي أم أل محددة مثل الجدول ، ثم اقتران أساليب العنصر أتش تي أم أل مع هذا المثال عنصر: وفي سبيل المثال ، جدول مثيل ، والجداول المرجعية الصفوف.

استخدام متغير مؤقت لتخزين العناصر قبل أن يتم إعادة ترتيب: تذكر في وقت سابق عندما قال إن خوارزمية التحجيم لا حاجة لتحويل العناصر div الى الطاولة؟ وقبل البحث في تعليل الخوارزمية التحجيم ، لاحظ في أول كتلة جريئة رمز العناصر كيف يتم حفظها لمجموعة مؤقتة (tempArray) قبل يتم إضافتها إلى وثيقة أتش تي أم أل كعناصر الطفل من الجدول. هذه الخطوة لإنقاذ الإشارات مؤقتا ، أمرا بالغ الأهمية عندما كنت التلاعب نموذجا الوثيقة الكائن ، وإذا لم تقم بحفظ مؤقتا ، قد واجهت بعض الآثار الجانبية غير تقليدي جدا. هذه خطوة إضافية وأضيف إلى المادة لتوضيح كيفية التعامل مع وثيقة بشكل صحيح.

إضافة عنصر أتش تي أم أل أتش تي أم أل سبيل المثال إلى التسلسل الهرمي للصفحة باستخدام أسلوب دوم من هذا القبيل كأن appendChild : إذا مرت على سبيل المثال appendChild عنصرا بالفعل يقع في صفحة أتش تي أم أل ، ثم استدعاء removeChild قبل استدعاء appendChild. استدعاء removeChild يحدث بشفافية ، والثانية كتلة جريئة رمز ينفذ خوارزمية لتقسيم الجدول. هو منطق القوة الغاشمة ، ويوزع هذا الأسلوب في عرض من بين خلايا الجدول ، ويرى اذا كان التوزيع هو أكثر أو أقل من عرض المتاحة. أفضل طريقة لتوضيح المنطق هو أن يذهب من خلال المثال أتش تي أم أل الصفحة. والقيود المفروضة على سبيل المثال أتش تي أم أل صفحة تم تحديدها في شكل رصاصة زوجين من الصفحات الخلفية. المنطق يقرأ والقيود من أجل التكرار الأول ، ومحاولات لوضع عمود واحد في كل خلية الجدول. وعرض كل عمود تضاف معا واختبارها ضد عرض منطقة العميل. إذا عرض المضافة هي أقل من منطقة العميل العرض ، ثم آخر التكرار يتم تنفيذه. على سبيل المثال ، يمكن لأول خلية جدول واحد فقط يحتوي على عرض العمود. آخر التكرار تنفذ ، والثاني لخلية الجدول العمود تتم زيادة العد. نمط تكرار النتائج في عدد الأعمدة نمط يشبه التالية :

1 1 1 1 2 1 1 2 2 1 3 2 1 3 3 1 4 3...

يمكنك استخدام أسلوب القوة الغاشمة ، لأنك تريد أن توزع بالتساوي بين جميع أعمدة من خلايا الجدول. إذا كنت تريد استخدام خوارزمية التوزيع الخاصة بك ، ثم مثيل الكائن تمريرها إلى setCharacteristics طريقة تحتاج إلى وجود بيانات الأعضاء updateAlgorithm. عند تنفيذ الخوارزمية الخاصة بك ، نضع في اعتبارنا ان كنت تريد توزيع عرض الأعمدة بين خلايا الجدول. تذكر الأشياء التالية :

• مع التكنولوجيا الحالية ، طائفة واسعة من الأجهزة والاختلافات الشديدة في دقة الشاشة.

• عرض ثابت كليا أو القائمة على النسبة المئوية أتش تي أم أل الصفحات تبدو جيدة فقط على أبعاد الشاشة محددة. إذا كانت الشاشة هو أبعد من هذه الأبعاد ، في الصفحة أتش تي أم أل تبدو سيئة.

• عند استيعاب مختلفة للشاشة ، والنظر في تخطيط الصفحة بشكل حيوي في البعدين الأفقي والرأسي. معظم صفحات فقط النظر في صفحة أتش تي أم أل بأنها دينامية في البعد العمودي.

• لا تستخدم مطلقا الإحداثيات عند استخدام نسب حسابي ، لأن ذلك يتطلب ضبط جميع العناصر على كامل الصفحة أتش تي أم أل. استخدام الإحداثيات النسبية ، التي تنطوي على عناصر الجدول أتش تي أم أل.

• عند نقل المحتوى بطريقة الأفقي والرأسي ، واستخدام خوارزمية التوزيع التي توزع بالتساوي على محتوى الصفحة أتش تي أم أل.

مقال مقدم من سونيا Lande


تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات.
المهم : هذه المادة "خلق دينامية التخطيطات" وقد ترجم من قبل البرمجيات التلقائي. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.


Online: 264 users browsing the articles directory