62 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Before Selector
							 | 
						||
| 
								 | 
							
								localeTitle: قبل المختار
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## قبل المختار
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								يمكن استخدام CSS **:: before** selector لإدراج أي شيء قبل المحتوى لعنصر أو عناصر. يسمح للمصممين بتنفيذ أي تصميم css قبل المحتوى في عنصر. يتم استخدامه من خلال إرفاق **:: قبل** العنصر الذي سيتم استخدامه عليه.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								لنلق نظرة على بعض الأمثلة:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `p::before { 
							 | 
						||
| 
								 | 
							
								    content: ""; 
							 | 
						||
| 
								 | 
							
								    border: solid 5px #ccc 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 span.comment::before{ 
							 | 
						||
| 
								 | 
							
								  content: "Comment: "; 
							 | 
						||
| 
								 | 
							
								  color: blue; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `
							 | 
						||
| 
								 | 
							
								<p> To infinity and beyond</p> 
							 | 
						||
| 
								 | 
							
								 <p> I am buz lightyear, I come in peace.</p> 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 <span class="comment"> May the force be with you</span> 
							 | 
						||
| 
								 | 
							
								 <br/> 
							 | 
						||
| 
								 | 
							
								 <span> Do. Or do not. There is no try</span> 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								في المثال أعلاه ، سنقوم بترقيم حدود رمادية قبل كل عنصر فقرة في الصفحة ، ونحن نقوم أيضًا بإضافة كلمة "تعليق" باللون الأزرق قبل كل عنصر في الامتداد مع تعليق الفصل.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								> يمكنك الاطلاع على هذا العرض التوضيحي هنا https://jsfiddle.net/398by400/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### التعريف والاستخدام
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`::before` واحد من محددات CSS pseudo-elements ، والتي تستخدم لتصميم أجزاء محددة من عنصر. في هذه الحالة ، يمكننا إدراج المحتوى قبل بعض عناصر HTML من CSS. على الرغم من أننا سنرى المحتوى في الصفحة ، إلا أنه ليس جزءًا من DOM ، ما يعني أنه لا يمكننا التلاعب به من Javascript. حيلة واحدة لحل هذا العائق: تمرير المحتوى باستخدام سمة بيانات واستخدام jQuery للتلاعب به. هذا مثال على الاستخدام:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `   p::before { 
							 | 
						||
| 
								 | 
							
								     content: "Hello "; 
							 | 
						||
| 
								 | 
							
								   } 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 `
							 | 
						||
| 
								 | 
							
								<p>world!!</p> 
							 | 
						||
| 
								 | 
							
								` 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								هذا سيظهر `Hello world!!` في الصفحة.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								لا يمكن فقط إدراج السلاسل أو الصور أو العدادات أو حتى أي شيء ("" ، مفيدة لـ clearfix) في attibute `content` ، ولكن **ليس HTML** . هناك عدد كبير من الأشياء الرائعة التي يمكن إجراؤها باستخدام `::before` `after` بطريقة إبداعية. يمكنك إلقاء نظرة على الرابط التالي إذا كنت تشعر بالفضول: [مجموعة كاملة من الأشياء المدهشة يمكن أن تقوم بها عناصر الزائفة](https://www.w3schools.com/css/css_pseudo_elements.asp)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### وحيد القولون مقابل نقرا مزدوجا
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								هناك القليل من النقاش حول الطريقة الصحيحة لاستخدام العناصر الزائفة: النقطتين المفصليتين القديمتين ( `:before` ) ، المستخدمتين في مواصفات CSS 1 و 2 ، مقابل إعادة التوصية CSS3 ، النقطتين المزدوجتين ( `::before` ) ، بشكل أساسي إلى _"إنشاء التمييز بين الطبقات الزائفة والعناصر الزائفة "_ . ولكن لأسباب التوافق ، لا يزال يتم قبول القولون المفرد. يتحدث عن التوافق ، يدعم IE8 تدوين القولون المفرد فقط.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### معلومات اكثر:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[W3Schools CSS Pseudo-elements](https://www.w3schools.com/css/css_pseudo_elements.asp)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[CSS-Tricks :: after / :: before](https://css-tricks.com/almanac/selectors/a/after-and-before/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[تحديد ومعالجة عناصر زائفة CSS مثل :: before و :: after jQuery](https://stackoverflow.com/questions/5041494/selecting-and-manipulating-css-pseudo-elements-such-as-before-and-after-usin)
							 |