فواصل

تصميم بيئة مميزه مع CSS و JavaScript

في البدايه وقبل \اي شئ عليك أن تقوم بزياره هذا الموقع المميز والجذاب والذي أعتقد انه سوف يسلبك عقلك كما فعل معي :)

Activatedrinks.com

في البدايه القسم الأول من الموقع سوف تلاحظ أن هناك زجاجه هذه الزجاجه يمكن للمستخدم ان يقوم بفتحها ويقوم بتدوير الغطاء كما يحدث بالواقع!

والقسم الثاني يعتمد إعتمادا كبيرا علي الرسومات الكبيره والجريئه في نفس الوقت وعلي الألون الحقيقيه للمنتج نفسه.

الموقع مصنوع من الجافا سكريبت وليس الفلاش لذا لن يتعين علي المستخدم انتظار وقت طويل للتحميل ولكنه سوف يكون سريعا وخفيفا ومريحا للزائر
لأن الفلاش قد انتهي وهو تقنيه رديئه الإستخدام وتاخذ وقتا طويلا بالتحميل

بمجرد أن يتم تحميل موقع نبدأ منطق تطوير الرسوم المتحركة. وتتألف من مكونين رئيسيين :

جافا سكريبت لعمل تويست
الفلاش للرسوم المتحركه الذي يعرض التقدم

نحقق ذلك عن طريق استخدام CSS لتحديد موقف الحركة  :

[html]

#intro-twist-wrapper {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
}

[/html]

لكي نرسم مخططا للحركه نحن بحاجه الي تحديد عنصريين اساسيين وهما بدايه ونهايه الحركه. نحن ندعو هذه scrollMin وscrollMax.والفرق بينهم يتيح للزائر أن يقوم بالتدوير للغطاء كما يريد. نحن نسمي هذا scrollDistance.

لتحقيق هذا نطبق الصيغة التالية :

[html]

var scrollDistance = maxScroll – minScroll;
// …
var animationProgress = (currentScroll – minScroll) / scrollDistance;

[/html]

وهذا الكود لتمرير الموقف ككل

[html] currentFrame = totalFrames * animationProgress;
[/html]

الجزء الثاني العمق والمنظر:

ونحن الأن بحاجه إلي إضافة عمق ومظهر للزجاجات والجزيئات لكي يصبح الموقع حيويا ومتدفق ومتنوع بنفس الوقت.

خلق تيار الجسيمات

والأن لنجعل الجزيئات تتحرك وكأنها علي تيار أي نقوم بخلق تيار يحرك الجزيئات الموجوده علي صفحه الويب لكي بيدو الموضوع أكثر حيويه

[html]

for( var i=0; i<numParticles; i++ ){
var y = i * spacing;
var x = radius * Math.sin( y );
$("#my-particle-id").css( "left", windowWidth/2 + x );
$("#my-particle-id").css( "top", y );
}

[/html]

ولتحقيق هذا عليك أن تقوم بتوير محو x قليلا بهذا الكود:

[html]

var delta = 2*Math.PI * y / sectionHeight;
var x = Math.sin( delta );

[/html]

خلق العمق والحركة

وأنه كان لدينا الآن تدفق الجزيئات بمعدل الأداء اللائق ، وحان الوقت لوضع بعض الحياة فيها. بدلا من مجرد السماح للتدفق جزيئات من اليسار إلى اليمين أردنا منهم للالتفاف حول بعضهم البعض والعمل كدوامه من الجزيئات.

لجعل هذا يحدث عليك أن تقوم ببناء هذه الداله المسؤوله عن توير الجزيئات بالشكل الذي رايته:

[html]

var delta = 2*Math.PI * y / sectionHeight;
var x = Math.sin( delta );

var z = Math.cos( delta );

if( z < -0.9 || z > 0.9 ){
particle.addClass("layer3");
} else if( z < -0.4 || z > 0.4 ){
particle.addClass("layer2");
} else {
particle.addClass("layer1");
}

[/html]

[html] .particle {
width: 204px;
height: 192px;
background: transparent url("../img/particles.png") no-repeat 0 0;
}
.particle.layer1 { background-position: -408px 0; z-index: 101; }
.particle.layer2 { background-position: -204px 0; z-index: 102; }
.particle.layer3 { background-position: 0 0; z-index: 103; }
[/html]

والأن أصبح لدينا العديد من الجزيئات التي تلتف حول محو x وحول محور y لتعطي لنا التأثير الذي نتمناه

وهذا التاثير سوف يعطي اختلافا بسيط للأشياء بدل من الحركه العموديه فقط:

[html] والأن وقت تحديد قيم الحركه وأبعاد الحركه
[html] var layerRepulsions = [ 0.3, 0.2, 0.1 ];
for( … ){
var easedWindowMiddle += (easedWindowMiddle – windowMiddle) * 0.3;
var distanceToMiddle = parseFloat( $(particleWrapper).css("top") ) – easedWindowMiddle;
$(particle).css("top", distanceToMiddle * layerRepulsions[layerIndex] );
}

[/html]

والأن تجد ان الجافا سكريبت فعلا يمكنك العمل معها بكل سهوله و باعلي جوده وتحكم

مقالات ذات صلة

اضف رد