امتحان CSS 4: التحريك والمؤثرات البصرية (10 تمارين مركبة)
امتحان CSS 4: التحريك والمؤثرات البصرية
أضف الحياة إلى صفحاتك باستخدام الانتقالات السلسة، التحويلات ثنائية وثلاثية الأبعاد، والرسوم المتحركة المتقدمة.
تمرين 1
الانتقالات السلسة (Transitions)
أنشئ زراً يتغير لونه بسلاسة:
- اللون الأساسي للخلفية أزرق.
- عند مرور الماوس (hover)، يتغير اللون إلى أحمر.
- يجب أن يستغرق التغيير 0.5 ثانية (duration).
- استخدم دالة التوقيت (ease-in-out).
الحل
.btn {
background-color: blue;
transition: background-color 0.5s ease-in-out;
}
.btn:hover {
background-color: red;
}
تمرين 2
التحويلات ثنائية الأبعاد (2D Transforms)
طبق التحويلات التالية على صورة عند مرور الماوس:
- قم بتكبير الصورة بنسبة 1.2 (scale).
- قم بتدوير الصورة 10 درجات (rotate).
- حرك الصورة 20px لليمين (translate).
الحل
img:hover {
transform: scale(1.2) rotate(10deg) translateX(20px);
}
تمرين 3
الرسوم المتحركة (Keyframes Animation)
أنشئ أنيميشن بسيط:
- عرف `@keyframes` باسم "fadeIn".
- يبدأ من شفافية 0 (opacity: 0) وينتهي بشفافية 1 (opacity: 1).
- طبق الأنيميشن على عنصر (.box) لمدة 2 ثانية ويتكرر مرة واحدة.
الحل
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.box {
animation: fadeIn 2s ease-in;
}
تمرين 4
التحويلات ثلاثية الأبعاد (3D Transforms)
أنشئ تأثير قلب البطاقة (Flip Card):
- أضف `perspective` للحاوية الأب (مثلاً 1000px).
- قم بتدوير العنصر (.card) حول المحور Y بمقدار 180 درجة (rotateY) عند مرور الماوس.
- استخدم `preserve-3d` للحفاظ على الأبعاد الثلاثية للأبناء.
الحل
.container {
perspective: 1000px;
}
.card {
transform-style: preserve-3d;
transition: transform 0.6s;
}
.container:hover .card {
transform: rotateY(180deg);
}
تمرين 5
متغيرات CSS (Custom Properties)
استخدم المتغيرات لتسهيل التعديل:
- عرف متغيراً للون الرئيسي (`--main-color`) بقيمة "blue" في الجذر (`:root`).
- استخدم هذا المتغير لتعيين لون الخلفية للزر ولون النص للعنوان.
الحل
:root {
--main-color: blue;
}
button {
background-color: var(--main-color);
}
h1 {
color: var(--main-color);
}
تمرين 6
الأنيميشن اللانهائي (Infinite Animation)
اجعل عنصراً يدور حول نفسه باستمرار:
- عرف `@keyframes` للدوران (rotate) من 0 إلى 360 درجة.
- طبق الأنيميشن ليكون خطياً (linear) ولانهائياً (infinite) لمدة 2 ثانية.
الحل
@keyframes spin {
to { transform: rotate(360deg); }
}
.loader {
animation: spin 2s linear infinite;
}
تمرين 7
تأخير الانتقال (Transition Delay)
أنشئ تأثيراً متتابعاً:
- عند مرور الماوس، اجعل العرض (width) يتغير أولاً.
- بعد انتهاء تغيير العرض (مثلاً 0.5s)، اجعل الارتفاع (height) يتغير.
- استخدم خاصية `transition-delay` لتحقيق ذلك.
الحل
.box {
transition: width 0.5s, height 0.5s 0.5s; /* تأخير الارتفاع 0.5s */
}
.box:hover {
width: 200px;
height: 200px;
}
تمرين 8
الفلاتر (Filters)
طبق تأثيرات بصرية على صورة:
- اجعل الصورة رمادية (grayscale) بنسبة 100%.
- أضف ضبابية (blur) بمقدار 5px.
- عند مرور الماوس، أزل هذه التأثيرات (عودة للأصل).
الحل
img {
filter: grayscale(100%) blur(5px);
transition: filter 0.3s;
}
img:hover {
filter: none; /* أو grayscale(0) blur(0) */
}
تمرين 9
القص (Clip-path)
غيّر شكل العنصر:
- استخدم `clip-path` لجعل الصورة تظهر على شكل دائرة (circle).
- أو اجعلها تظهر على شكل مضلع (polygon) مثلث.
الحل
/* دائرة */
.circle {
clip-path: circle(50%);
}
/* مثلث */
.triangle {
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
تمرين 10
اتجاه الأنيميشن (Animation Direction)
تحكم في مسار الأنيميشن:
- اجعل الأنيميشن يعمل للأمام ثم يعود للخلف (alternate).
- اجعل حالة العنصر تبقى كما هي عند انتهاء الأنيميشن (animation-fill-mode: forwards).
الحل
.box {
animation-direction: alternate;
animation-fill-mode: forwards;
}