How CSS Works Behind The Scenes
How CSS Works Behind The Scenes
Table Of Contents
Three Pillars of Writing Good HTML and CSS (Never Forget Them!)
Specificity in Practice
How Units Are Converted From Relative To Absolute (px) - Value Processing
♥ اذكر هللا
♥ الزموا ذكر هللا ففيه العون عل متاعب الحياة
َ ا ُ َ َّ ا ً ّ ًْ ً ً َ َُ َّّ َّ ن
. وعمًل متقبًل،ورزقا طيبا ِ ،انافع الم ع
ِ ك ل أسأ إن
اللهم ي
َ َ َ ْ ُ َ َ ْ ُ َ َ ْ َ َ َّّ ُ َّ َ ن
. وحس ِن ِعباد ِتك، وشك ِرك،اللهم أ ِع ين عل ِذك ِرك
صل وسلم وزد وبارك عل نبينا محمد ﷺ ّ اللهم
ن ن
وع بيهم
عل ي
والل الزم تكون ي
والل هما ي
ي خلينا يف البدية نتكلم عن اهم تلت مبادئ يف الـ CSS
Responsive Design -1
Maintainable and Scalable Code -2
Web Performance -3
Responsive Design
ن ن ودي ببساطة معناها ن ن
يعن قابل للعرض يف جميع مختلف الشاشات
أبن Web Pageبشكل Responsiveي أن يي
وعل الـ Large Screens عل الـ Laptopsيتعرض بشكل مناسب ن
ي يعن ع الـ Mobileيتعرض بشكل مناسب و ي ي
الل هيتعرض فيهايتعرض بشكل مناسب وهكذا ...تصميم الـ layoutيتناسب مع حجم الشاشة ي
ن
جميل جدا ...هل يف حاجات الزم اراعيها عشان استخدم أو اعمل Responsive Designبشكل سليم ؟
قالك ايون فيه حاجات تراعيها لدا زي مثال
Fluid Layouts -1
Media Queries -2
Responsive Images -3
Correct Units -4
Desktop First vs Mobile First Strategy -5
اذكر هللا ♥
الزموا ذكر هللا ففيه العون عل متاعب الحياة ♥
اللهم ّ
صل وسلم وزد وبارك عل نبينا محمد ﷺ
سبحان هللا وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته
ن ن
الظالمي ان كنت منال إله اال انت سبحانك ي
ينبغ لجالل وجهك ولعظيمكثيا مبارًكا فيه كما ن حمدا ً
طيبا ً ً
اللهم لك الحمد
ي
ن
العالمي سلطانك يا رب
العل العظيم
ي ال حول وال قوة اال باهلل
ْ َّ َ ْ َ نُّ ْ ُ ُ ُ َ
اَّلل تطم ِي القلوب
أال ِب ِذك ِر ِ
ن
تضمي او linkبملف بعد ما بيحصل parseللـ HTML Fileالـ Browserبيالحظ وجود لسطر كدا مكتوب فيه
CSS
ن
يعن بيـ loadالـ css Fileوزي ما حصل للـ HTML Fileبرضو
اول ما بيالحظ دا بيعمل للملف دا loadي
الل احنا ر
الـ CSS Fileدا بيحصله Parseاو تحليل هو كمان ولكن الـ parseدا بيكون مقعد بعض الش ودا ي
عا ن
ملي الملخص دا عشان نناقشه اصال
وه Process Final CSS Values دي parsing ـ ل ا عملية اثناء بتحصل بقا حاجة تان ن
ي ي
يعن اي برضو ؟!ن ن
يعن الـ marginsبيتم قرأتها وتحويل قيمها لـ percentage units to pxي ي
ن يعن تخيل معايا ن ن
ان عامل margin-left: 50%مثال ! بس الـ 50%دي مختلفه يف الشاشات الصغية عن ي ي
ن ن
الـشاشات الكبية يف عملية التحليل دي بيتم ترجمتها او تحليلها لـلـ px unitالستخدمها يف مختلف الـ Devices
ن
ه treeبرضو زي
بعد ما الـ parsingدا بيحصل للـ CSSبيتم تخزينة يف ( CSS Object Model )CSSOMي
الـ HTMLكدا الـتخزين دا بيكون اسمه CSSOM
بعد الـ Formattingدا ما يحصل بيحصل حاج اسمها Final Rendered Websiteوهنا انت بتقدر تشوف بقا
عل المتصفح قدامك
فعل ي
ي الشكل بتاع الموقع بشكل
اذكر هللا ♥
الزموا ذكر هللا ففيه العون عل متاعب الحياة ♥
ن
الظالمي. ن ن
إن كنت من
إن أستغفرك واتوب إليك ،ال إله اال انت سبحانك ياللهم ي
حسن هللا ال إله اال هو عليه توكلت وهو رب العرش العظيم.
ي
ْ َّ َ ْ َ نُّ ْ ُ ُ ُ َ
اَّلل تطم ِي القلوب
أال ِب ِذك ِر ِ
قبل ما تقول معنديش وقت شوف فعليا الوقت المتاح قدامك اي وشوف انت بتقضيه ازاي هتالحظ ان كل
فيات الوقت رايحة نف ر
اليفيه وجزء قليل جدا ألعمالك المهمة وقتك او اهم ر
ي
اذكر هللا ♥
سبحان هللا وبحمده ..سبحان هللا العظيم
الج القيوم و أتوب إليــه
أستغفر هللا العظيم الذي ال الـه اال هو ي
حسن هللا ال الـه اال هو عليه توكلت وهو رب العرش العظيم
ي
Declaration
Property Declared Value
ن
الل هو يف حالتنا دي
عل وجود Selectorي والمقصود بالـ rulesدي هو ان طريقة كتابة الـ cssبتكون معتمدة ي
الل هتتكتب الل هديها التنسيقات ي
الل عندي ي
والل بكتبه عشان احدد اي عنارص الـ HTMLيي الـ .my-class
ه الخواص المكتوبة والقيم بتاعتها (تنسيقات العنرص)
والل ي
ي عل وجود الـ Declaration Block كمان معتمد ي
فزي ما انت شايف كدا
ن
وه الـ Conflicting CSS Declarations
ي فوق قولت لما تفتكر لو CSS ـ ل ل parsing ـ ل ا عملية ف ي اول حاجة
ن ن
وه الـ Process Final CSS Values
ي فوق قولت برضو تفتكر لو CSS ـ ل ل Parsing ـ ل ا عملية فوتان حاجة ي ي
بي جميع ملفات الـ CSSالمختلفة وحل الـ conflictsاو التعارضالـ cascadeه العملية الل بيتم فيها دمج ن
ن ي ي
بي كل الـ Declarationsالموجودة يف كل الملفات دي لو كانت متكررة لعنرص واحد الموجود ن
وتالت مصدر:
تلقان من المتصفح نفسه
ي الل بتتحط بشكل
ه التنسيقات ي
والل ي
ي وهو الـ Default Browser Declaration
عل بعض العنارص والمصدر دا بيكون اسمه الـ user agent stylesheet
ي
عل سبيل المثال الـ <a></a> Anchor tagمش بيكون له تنسيقات من المتصفح زي خط تحته ولون ازرق ؟! ي
بس فيه سؤال هنا ازاي فعليا الـ Cascadeدا بيتم او بيحصل او بيعمل اي عشان يعالج الـ Conflictsدي كلها ؟!
بيمش عليها عشان يحل االختالفات دي وال ال ؟!ر ن ر
ي وييي يف قواعد معينه
وه الـ !important flag اول حاجة بيبص عليها الـ cascadeدا اول ما ي
يج يشتغل ي
الل بتحصل منك انت كـ Developer
بعد كدا الـ specificityبعد كدا الـ )conflicts( Source orderي
باليتيب كدا ر
ن ر
الل هيتطبق هل كلمة Boxهيكون الـ Backgroundبتاعها لونها أزرق وال المفروضييي اي Styleيف دول ي
هيكون لونها ن
أخرص عشان انا اخر حاجة كتبتها للـ Boxدا ;background-color: green
الل تتطبق ؟!
ه ي وبعدين مش المفروض أخر حاجة اكتبها للعنرص ي
تعال نشوف
ي
أو األقوي بص معايا ع الكود دا كدا والل يه الـ specificity مرحلة وهنا يج دور ن
تان
ي ي ي
ن
واالتني مطبق عليهم الـ !important Flag بتوع فيه Background-color ر
دلوقن انا عندي العنرصين
ي ي
الل هو الـ ; background-color: blueالنه أخر حاجة اتكتب ن ر
الل هيشتغل أكيد االخي ي
ييي مي فيهم ي
تعال نشوف
ي الل قبله !...
عل يالل هيعمل overwriteي وهو ي
ن
بتاع
ي العنرص ع هتطبق الل
ي دول االربعة في ياتري انهو background-color
اليتيب كدا االولية بتكون للـ inline-styleثم الـ الـ IDثم الـ classثم الـ elementالـ specificityبتتحسب ب ر
ر ن
يبق كدا المجموع )(0 inline-style, 0 id, 1 class, 0 element
يف العنرص االول مفيش غي classواحد بس ي
الل هو الـ divوعندي كمان Element وعندي #nav ID عندي و nav element ـ ل ا عندي نف العنرص ن
التان
ي ي ي
الل هو الـ .button
الل هو .pull-rightوعندي classكمان ي classي
يبق المجموع )(0 inline-style, 1 id, 2 classes, 2 elements ر
ي
طيب لو كل حاجة متساوية كل الـ Selectorsنفس الـ specificityوكلهم نفس الـ !important Flagومفيش
ه الـ Source orderالل ي
يج اخر حاجة بيبص عليها الـ Cascadeو ي اي inline-styleهنا بقا ي
ن
لو عندي عنرص يف الـ HTMLحطيت جواه inline-styleباللون األحمر
ن ر ن ن
الخرصيبق اللون ا
ومسكت نفس العنرص دا يف الـ CSSاديته لون أخرص وحطيت معاه الـ !important Flagي
الل هيتطبق النه أقوي حاجة ودي أول حاجة بيبص عليها الـ Cascadeويطبقها ودي مرحلةهو ي
الـ !important Flag
ن ن
لو عندي عنرص يف الـ HTMLوملهوش اي inline-styleوانا مش مستخدم الـ !important Flagبس يف الـ CSS
عل العنرص ر
محدد العنرص دا بأكي من طريقةالـ Cascadeهيشوف انهو تحديده األقوي فيهم ويطبقها ي ن
انا
وه ن
تان مرحلة بعد الـ Importantي
وفوق يف المثال الكبي عرفنا ازي بيحدد انهو Selectorاألقوي ودي ي
الـ specificity
ن
لو عندي عنرص يف الـ HTMLليه inline-styleاو ملوش وانا مستخدم الـ !important Flagوكلهم زي بعض
ن
عل العنرص ودي المرحلة
يف الـ specificityالـ Cascadeهياخد أخر حاجة اتكتب للـ Selectorدا ويطبقها ي
الل بيكون اسمها الـ )conflicts( Source order
ي
ثم الـ specificityوالل بيبص فيها لو فيه Inline-styleلو مفيش بيبص عل الـ IDالنه بيكون ن
تان اقوي حاجة
ي ي ي
بعد الـ inline-styleوبعدها بيبص ع الـ classودا بيكون تالت أقوي حاجة وبعدين بيبص ع الـ element
الل بيكون رابع أقوي حاجة ي
ن
ثم لو كل حاجة زي بعض يف كل حاجة نفس الـ !importantونفس الـ specificityيروح ألخر حاجة
ن
بمعن انه هيشوف أخر حاجة اتكتب للـ Selectorويطبقها ويكون ه الـ )conflicts( Source order
ي ن والل ي
ي
ليها األولوية يف الظهور
ن
ملحوظة مهمة جدا :ي
خل أستخدامك للـ !importantيف أضيق الحدود الممكنة لو بس بتصلح كود بتاع
تان وتنسيقاتك مش راضيه تتطبق لسبب ما استخدم الـ !Importantالن زي ما قولنا بيكون اول واحد شخص ن
ني
له األولوية يف التطبيق أن وجد
♥ اذكر هللا
♥ الزموا ذكر هللا ففيه العون عل متاعب الحياة
سبحان هللا وبحمده سبحان هللا العظيم
ُ ُ ُ ْ ُّْ َّ َ ْ َ ن َ
اَّلل تطم ِي القلوب
ِ أال ِب ِذك ِر
ن
قبل ما ابدأ المقارنة انا معنديش اي inline-styleلذلك هو ديما هيكون بـصفر 0يف المقارنة دي
ر
كالتال :
ي يبق المقارنة اول Selectorعندي ي
الل هو الـ .buttonعبارة عن classواحد ي
)(0 inline-style, 0 id, 1 class, 0 element
ر ن
كالتال :
ي يبق المقارنة تان Selectorعندي ي
الل هو الـ aعبارة عن Elementواحد ي ي
)(0 inline-style, 0 id, 0 class, 1 element
التال
ي تالت Selectorعندي فيه
#navادي كدا أول ID -1
div Elementأدي كدا أول Element -2
.pull-rightأدي كدا أول Class -3
تان Elementن
a Elementادي كدا ي -4
تان Classن
.buttonأدي كدا ي -5
كالتال : ر
يبق المقارنة
ي ي
)(0 inline-style, 1 id, 2 class, 2 element
ن ر
الل هيطبق
يبق بشكل مبدأي كدا اللون الـ orangeredيف تالت Selectorهو ي ي
الل هطبق وقولنا ليه ؟! ر
عل بعضه فوق هو برضو ي
حن لو نقلت الـ Selectorدا او الـ Blockدا كدا كله يي
عشان الـ Specificityبتاعته أقوي واحد فيهم
ن
الل فوق
ي ي الل من أضعف Hover ـ ل ا بتاع block ـ ل ا ف
عشان برضو هنا تأثي الـ Specificityي
هتقول ازاي ؟!
ي
هقولك تعال نعمل مقارنة تانن
ي ي
التال
ي تالت Selectorعندي فيه
#navادي كدا أول ID .1
div Elementأدي كدا أول Element .2
.pull-rightأدي كدا أول Class .3
تان Elementن
a Elementادي كدا ي .4
تان Class ن
.buttonأدي كدا ي .5
كالتال : يبق المقارنةر
ي ي
)(0 inline-style, 1 id, 2 class, 2 element
ن ر
حن الـ Hoverمش هيتم تطبيقه غي لو بقا مساوي لتالت Selectorيف القوة
كدا مازال تالت Selectorأقوي ي
ن
الحظ انك ممكن لو استخدمت الـ !Importantهيكون ليه األولوية يف التنفيذ والتطبيق ألنه زي ما قولنا فوق
ن
الل قبل دا أول حاجة فوق خالص ان الـ Cascadeأول حاجة بيبص عليها أو بيديهاي الدرس في
ه الـ !important Flagلو تفتكر انا برضو هجبلك اسكرين من الجزء دا عشان تفتكر األولوية ي
ن ن
بس انا واي حد عموما مش بيفضل أستخدام الـ !important Flagغي يف ظروف طارئة جدا والسبب يف دا
بيجع الن الكود بتاعك يكون maintainableأو قابل للصيانة ديما مع استخدامك للـ !important Flag
بيكون
ر
الوضع صعب شوية خصوصا لو التطبيق كبي جدا وعندك اكي من عنرص ليهم نفس الـ Specificity
الل بتكتب الـ Codeبايدك
فبالش استخدام الـ !important Flagكتي خصوصا لو انت كـ Developerي
اذكر هللا ♥
الزموا ذكر هللا ففيه العون عل متاعب الحياة ♥
شء قدير.ر ر
ال إله اال هللا وحده ال شيك له ..له الملك وله الحمد وهو عل كل ي
الج القيوم واتوب اليه.
استغفروا هللا العظيم الذي ال إله اال هو ي
صل وسلم وزد وبارك عل نبينا محمد ﷺ. اللهم ّ
ن
الظالمي. ن
إن كنت من
ال إله اال انت سبحانك ي
ْ َّ َ ْ َ نُّ ْ ُ ُ ُ َ
اَّلل تطم ِي القلوب
أال ِب ِذك ِر ِ
ر ن
هيتشح لحد ما قبل الجدول دا الل
وف أخر الدرس انا هعملك جدول المم كل ي
عل األكواد دي ي
بص معايا كدا ي
الل فيه
تعال نبدأ بالـ pونشوف الـ widthي
ي
ان عملت Selectللـ pوعملت Selectللـ .amazing ن
عندي هنا conflictحاصل بسبب ين
بشكل مبدأي كدا انا
الل هو اصال Classالـ Pيف الـ HTML ي
وتيجمها هقولك صح انهو widthالل هيطبق ؟! لو قولت الـ .amazingعشان هو أخر حاجة الـ cssهتشوفها ر
ي
!
بس لو انا نقلت الـ classدا فوق الـ pهل هتكون دي اجابتك برضو ؟ اعتقد ال
ن ن
تان لو ركزت شوية هتالحظ هنا ان الـ specificityبتاعت الـ classأقوي من الـ elementلو تفتكر الن يف سبب ي
الل حدد دا هل انا او انت ؟! ال الـ Cascadeبالـ Rules ن ر
عل الـ Pمي ي
الل هيطبق ييبق الـ width: 66%هو ي ي
بتاعته
ن ن حدد ن
ومي ليه األولوية يف التطبيق مي األقوي
ن ن طيب الـ 66%دي زي ما اتفقنا هتتحول للـ pxازاي دا بيتم بقا ..دا بيتم ع ر
اكي من مرحلة او يف مراحل يف النص
كدا بتحصل زي اي
Declared Value (Author Declarations) -1
Cascaded Value (After The Cascade) -2
Specified Value (Defaulting Value If There Is No Cascaded Value) -3
Computed Value (Converting Relative Values To Absolute) -4
Used Value (Final Calculations, Based On Layout) -5
Actual Value (Browser And Device Restrictions) -6
ن ر ر
بتمش عليها عشان تحول أي unitللـ pixelيف النهاية وطبعا هنفصصهم
ي CSS ـ ل ا الل
ي process ـ ل ا كل دي يبق
ي
واحدة واحدة
ن
تان مرحلة :الـ Cascaded Valueودي المرحلة ي
الل الـ CSSبتحل فيها الـ Conflictsواول ما تشوف Conflict ي
ن ن
حصل بي الـ .amazingو الـ pبتشوف مي األقوي وتختارة وبناءا عليه الـ 66%هتتطبق
لحد كدا انت معايا وسليم وتمام وكله زي الفل ؟! فاهم صح ؟ تمام
By: Amr Elsayed
تالت مرحلة :الـ Specified Value
ن
بتيج او
ي يف المرحلة دي لو مفيش اي Declared Valueبيتحط حاجة اسمها initial Valueوهنعرف ازاي دي
مني لما نخلص الخاصية دي بمراحلها الـ 6ونشوف خاصية تانيةن بتيج
ي
ر ر ن
هيبق
ي يبق الـ 66%هتتطبق مدام فيه Cascaded Value
يف حالتنا وبما ان انا حطيت valueكـ Developerي
ه كمان ر
وهتبق الـ Specified Valueبـ 66%ي
ي هتطبق
ه برضو ن
ـق الحالة دي هتفضل %66زي ما ي
تكنيكال مش unitايون زي ما بقولك كدا ف ي
ي بس عشان الـ %
وهثبتلك حاال ان الـ %مش unitفعلية
لينك
لينك أخر
ن ر
الل هتتحط يف النهاية
ي الفعلية ـقيمة لا ه
ي 185px ـ ل ا يبق
ي
ن ن
استن بس انا مكتبتش paddingاصالي هتقول
ي تعال نشوف الـ paddingيف المثال بتاعنا
ي وليكون
ن
هقولك صحيح بس انا عايز تعرف ان يف خواص انت مش بتكتبها بيتحطلها قيم معينة فعليا بشكل default
الل عندي فوقعل الـ 6مراحل ي
الل مش موجود دا اصال ي فتعال نعدي الـ paddingي
ي
ن
تان مرحلة :الـ Cascaded Valueمفيش خالص اي Cascaded Valueالن مفيش declarationحصل
ي
ن
تالت مرحلة :الـ Specified Valueااااه يف هنا بقا Specified Valueاو الـ default
ودا بسبب ان كل واي CSS propertyبيكون ليها initial valueوببساطة دي بتكون الـ Valueالفعلية
ن
الل
الل انا قولتلك هنجيلها كمان شوية فوق لما كنت بتكلم يف الخاصية ي لو مفيش Cascaded Valueودا ي
وبين وبينك التوريث بيكون ليه عامل هنا بس فاتت ف نق الحالة دي ( الـ initial Valueهتكون بـ ـ ـ ـ ـ ـ ـ ) 0pxن
ي ي
عل دا بالتفصيل قدام
هنتعرف ي
ن
يعن هو 0pxوالـ unitبتاعته px رابع مرحلة :الـ Computed Valueبشكل
ه absolute unitي
فعل الـ 0pxي
ي
فعليا
والل بعدها هتفضل 0pxاو خالص مش محتاجينهم
ي لذلك المرحلة دي
خامس مرحلة :الـ Used Valueهتكون 0px
سادس مرحلة :الـ Actual Valueهتكون 0px
أول مرحلة :الـ Declared Valueمفيش خالص اي Declared Valueالنها 16pxمن الـ browserنفسه
ن
تان مرحلة :الـ Cascaded Valueهنا الحالة دي مختلفة عن الـ paddingهنا فيه Cascaded Valueطيب ي
هتقول ازاي ؟!
ي
الل هو الـ user agent ر
بتيج من أكي من مصدر ؟ من ضمن المصادر دي ي ي هقولك فاكر لما قولنا ان الـ CSS
ه هنا فرضت الـ font-sizeللـ pageبـ 16pxكـ default Value والل ي
ي stylesheet
تالت مرحلة :الـ Specified Valueبتتحط كـ initial valueلو مفيش Cascaded valueوبما ان فيه
ه كمان 16px ـ ب هتكون Specified Value ـ ل ا Cascaded Valueجاية من الـ user agent stylesheetر
يبق
ي ي
ن
ه هيتم قرأتها كـ 1.5remبرضو
والل ي
ي تان مرحلة :الـ Cascaded Value
ي
ر
تالت مرحلة :الـ Specified Valueهتكون 1.5remمدام فيه Cascaded Valueي
يبق الـ Specified value
هتكون زي الـ Cascaded Value
ن
سيبن ن
سألتن ازاي تعال اقولك مش انت رابع مرحلة :الـ Computed Valueهتكون ... 24pxازاااي بقا ..
ي ي ي
أجاوب بقا سعتك D":
ه بتستمد قيمتها من الـ rootوبما ان ن
يعن ي
الـ rem unitبتكون نسبية او Relativeللـ root font-sizeي
الـ rootله Font-sizeبشكل defaultبـ 16px
يبق الـ .sectionالـ Font-sizeبتاعه هيكون 16px * 1.5بـتساوي 24pxر
ي
ن
يف الحالة دي بقا دا ال هو فيه default valueمحطوطة للـ pعشان يظهر كدا وال فيه اي initial Value
ن
هتقول هللا !! انا كدا احتارت اومال الـ pدا واخد Font-sizeوظاهر كدا مني وليه هو الـ font-sizeبتاعه ي
الل ي
ن
يعن ليه هو مش اصغر من كدا وليه مش أكي من كدا ليه هو شكله كدا تحديدا محطوطله مخليه شكله كدا؟! ي
؟!
الل هو فيه ر ن
صديق ورث حجم الخط ي ي تان اسمه الـ inheritanceاو التوريث الـ pدا يا
دا حصل بسبب ميكانزيم ي
الل فعليا بتساوي 24px الل هو قيمته بـ 1.5remي
الل الـ .sectionي
دا من األب بتاعه ي
ر
هتالف اي تغي حصل
ي عل الـ pدا حطله font-sizeبالقيمة 24pxمن عندك مش كالم روح ي
ي عل
اكي دليل ي
الل هو الـ .sectionليه؟ عشان هو ورث حجم الخط دا من األب بتاعه ي
ن
بالتال مفيش اي
ي تان مرحلة :الـ Cascaded Valueمفيش اي Declared valueعشان يحصلها Cascade
ي
Cascaded Value
لو أن الناس كلما استصعبوا أمرا تركوه ماقام للناس دنيا والدين
-عمر بن عبدالعزيز
اذكر هللا ♥
الزموا ذكر هللا ففيه العون عل متاعب الحياة ♥
سبحان هللا و الحمد هلل و ال الـه اال هللا و هللا أكي و ال حول وال قوة اال باهلل
صل وسلم وزد وبارك عل نبينا محمد ﷺ اللهم ّ
ن ن ن
الظالمي إن كنت من
إن أستغفرك واتوب إليك ،ال إله اال انت سبحانك ي
اللهم ي
ْ َّ َ ْ َ نُّ ْ ُ ُ ُ َ
اَّلل تطم ِي القلوب
أال ِب ِذك ِر ِ
وخلين افكرك ان الـ %مش unitبشكل تيكنيكال ه مش unitبس عايزك تعتيها كدا المرادي عشان ر
الشح ن
ي ي
بي استخدام النسب المئوية %للخطوط fonts ولو تفتكر من خمس ست سطور قولتلك انه فيه فرق ن
ن
و استخدامها لقياسات الطول والعرض ....ف ي
ق الـ headerانا استخدمت النسبة المئوية مع الـ fonts
ملحوظة :لما بنستخدم الـ %مع الـ lengthزي الـ heightوالـ widthوالـ paddingو الـ margin
كالتال
ي بيكون التعامل هنا مختلف عن استخدام الـ %مع الـ fontsالفرق هنا بيكون
وه بتحسب الـ computed Valueبيكون المرجع بتاعها الـ widthبتاع
الـ lengthلما بتستخدم فيه الـ %ي
الل الـ Elementدا نفسه موجود فيه
الـ - parentاالب ي
ر
دلوقن بالتفصيل اكيد انت مش فاهم حاجة وانا ر
هشحلك
ي
ن
الل هو بالقيمة %10
الل موجود يف الـ .header-childي
تعال نشوف الـ paddingي
ي
اي الفرق ن
بي الـ emو الـ rem
ن
الـ emبيكون الـ referenceبتاعها الـ elementنفسه يف بعض الحاالت او الـ parentبتاع الـ elementدا
الـ remبيكون الـ referenceبتاعها الـ root font-size
ن ن
الل اتكتب فوق فيه emموجودة يف الـ font-sizeبتاع الـ .header-child
عندي يف الكود ي
الـ cssهتحسبها ازاي ؟! اتفقنا ان الـ emبيكون المرجع بتاعها يا العنرص نفسه يا االب ي
الل هو فيه
كالتال ر
يبق الـ 3emهتكون
ي الل العنرص دا فيه الـ font-sizeبتاعه 150%اي 24pxي وبما ان االب ي
ر
يبق الـ .header-childالـ font-sizeبتاعه بـ 72px
24px * 3emبيساوي 72pxي
ن
فيه emموجودة يف الـ paddingبتاع الـ header
الـ paddingدا lengthهنا بتكون فيه حسابات تانيه عن الـ fontsهنا الـ paddingبـ 2emهيكون المرجع
بتاعه هو الـ font-sizeبتاع الـ elementدا نفسه هنا المرجع بتاعها هيكون العنرص نفسه تحديدا الـ font-size
بتاع العنرص
كالتال ر
يبق الـ 2emهتكون
ي وبما ان العنرص دا فيه الـ font-sizeبـ 150%اي 24pxي
24px * 2emبيساوي 48px
ه 24pxكان الـ 2emدي هتتحسب الل ي
هتقول طيب افرض الـ headerدا مكنش فيه الـ font-sizeبـ 150%ي ي
ازاي ؟!
ن ن ن
األول لو فيه font-sizeيف
ي الحالة حالتي فهقولك يا معلم ركز الـ emبيعتمد ع الـ font-sizeبس ي
يبق هو هيعتمد عليه لو مفيش بيوح يعتمد ع الـ font-sizeبتاع الـ parentبتاعه ر
الـ elementنفسه ي
ن
زي ما قولنا الـ remبيكون الـ referenceبتاعه الـ font-sizeبتاع الـ rootيف الحالة دي هو 16px
ً
اذا 16px * 10remبيساوي 160px
الل بيحددها
عل الـ viewportبتاع الشاشة نفسها والمتصفح ي
ي
ن ن
محتاجي ندرسهم األول يف كذا سيناريو
كل CSS Propertyالزم يكون ليها Value
السيناريو األول وهو ان الـ CSSبتسأل سؤال هل فيه Cascaded Value؟!
ر
ه الـ Cascaded Value لو أه =< فيه ي
يبق الـ specified Valueهتكون ي
ه بتكون الـ init valueلو مفيش Cascaded Value
الل ي
وخل بالك الـ الـ specified Valueي
ي
والـ Cascaded Valueبتتوجد لما يكون فيه Declared Valueمنك انت كـ Developer
-ممكن تستخدم الـ initial keywordعشان تعمل resetألي propertyللـ init valueبتاعتها
اذكر هللا ♥
الزموا ذكر هللا ففيه العون عل متاعب الحياة ♥
ر ر
ال إله اال هللا وحده ال شيك له ..له الملك و له الحمد وهو عل كل ي
شء قدير
ْ َّ َ ْ َ نُّ ْ ُ ُ ُ َ
اَّلل تطم ِي القلوب
أال ِب ِذك ِر ِ
دي لكل عنرصboxes لكل الـlayout و تحديد الـBoxes بيستخدم لحساب الـalgorithm هو ببساطة
بيحصله
box-model الل بيحسب قياسات الـ ن
يعن هو ي يfinal layout of the page باالضافة لتحديد الـrender
بشكل عامlayout والـpositions و الـflex و الـFloats والـ
In summary, the Visual Formatting Model provides the foundation for rendering and positioning
elements on a web page, enabling developers to create visually appealing and well-structured web
layouts.
ومع ذلك ،الحظ أن كلهم ممكن يتوجدو بشكل اختياري ،عشان ممكن يكون فيه عنارص او boxesبدون
marginsأو paddingاوborder
ومن خالل فهم واستخدام الـ ، Box-modelيمكنك إنشاء layoutsمتجاوبة وجذابة من الناحية البرصية.
ن
عشان بيمكنك من التحكم يف حجم العنارص وتحديد مواقعها وتباعدها ،وتنفيذ layoutsمرنة بتتكيف مع
مقاسات الشاشات المختلفة.
الـ Floats
الـ elementمع الـ Floatبتشال من حالة الـ normal flowبتاعته
ن
حولي الـ floated element الـ textو الـ inline elementsبتكون متحاوطة
الـ floated elementمش بيكون عندي وع بحساب الـ heightالمناسب ليه او انه يفصل بينه ن
وبي العنارص ي
الل تحته وفوقه لذلك بنستخدم الـ clear propertyبالـقيمة bothي
ن ن
بتيج فوق عنارص فالـ CSSبتستخدم حاجة اسمها Stacking-context
ي يف الـ absolute positioningيف عنارص
By: Amr Elsayed
Stacking-context
بتظهر فوق بعض ازايElements الل بيحدد ازاي الـ
ببساطة شديدة هو يStacking-context الـ
ودا تعريفه بشكل دقيق
determines how elements are layered and displayed on top of each other within the document. It
manages the order, visibility, and appearance of overlapping elements. Stacking contexts are
created when specific CSS properties are applied to an element or its descendants.
2- Controlling overlap and visibility: Stacking contexts allow you to control the visibility and
appearance of overlapping elements. Elements within different stacking contexts can be
positioned and displayed independently, preventing unintended overlap or interference.
3- Isolation and encapsulation: Stacking contexts provide a level of isolation and encapsulation
for elements and their descendants. Styles applied within a stacking context do not affect
elements outside of that context, preventing unintended style cascades and conflicts.
اذكر هللا ♥
الزموا ذكر هللا ففيه العون عل متاعب الحياة ♥
ْ َّ َ ْ َ نُّ ْ ُ ُ ُ َ
اَّلل تطم ِي القلوب
أال ِب ِذك ِر ِ
ن
العالمي كثيا مبارًكا فيه كما ن
ينبغ لجالل وجهك ولعظيم سلطانك يا رب حمدا ً
طيبا ً ً
اللهم لك الحمد
ي
ا ا ً
ورزقا ً علما ً اللهم نان أسألك ً
طيبا وعمًل متقبًل نافعا ي
❖ مش عايزك تتضايق الي سبب لو مفهمتش أي جزء انا حولت ابسط المفاهيم قدر المستطاع وان شاء هللا هتفهم
ر
فبقيح عليك انك تعيد قراءة الحاجة دي وتجرب تكتب codeبإيدك وتجرب بنفسك يعن هتفهمن
ي
ن
تفتكرن بدعوة ❖ ألي حد هيوصله الكالم دا مش طالب منك غي طلب واحد وامانة عليك الزم تنفذه و هو إنك
ي
ر
بين
طيبة لوجه هللا أنا وأهل ي