راکت
حل شده

حرکت یک باکس در صفحه

8 پاسخ

سلام
چطوری میشه در جاوااسکریپت یه باکس رو که حرکت می دیم داخل صفحه وقتی مثلا به بالای صفحه رسید از پایین صفحه وارد بشه؟
ممنون

فرشید
فرشید
@farshid
ثبت پرسش جدید

پاسخ‌ها

8
محمد صادقیان
محمد صادقیان
@drcode.ir

تخصص: برنامه نویس وب - فریم ورک Laravel

بهترین پاسخ

این تابع رو توی کدهات بنویس و توی تابع move هربار اجراش کن.

      function position_checker(){
        box1 = document.getElementById("box1");
        box_top = (box1.offsetTop+box1.clientHeight)-10;
        if (box_top<-10) {
          box1.style.top = (screen.height-box1.clientHeight)+'px';
        }
      }

فقط توجه داشته باش که این تابع فقط داره بالا رفتن رو چک می کنه. یعنی رفت بالا و از صفحه خارج شد باز میاد پایین. بر اساس این بقیه رو هم بنویس.

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

نوع اِوِنت مناسب برای این کار رو مشخص کنید. فکر میکنم dragstart باشه اما خودتون هم در لینک زیر می‌تونید رویدادهای جاوااسکریپت رو بررسی کنید:
https://www.w3schools.com/jsref/dom_obj_event.asp

بعد با استفاده از متد offsetTop در جاوااسکریپت مشخص میکنید که فاصله باکس یه اِلِمان تا بالای صفحه چقدره:

var distanceToTop = document.getElementById("boxID").offsetTop;

اگر این مقدار + ارتفاع باکس کمتر از 0 بشه یعنی باکس باید از از بالا حذف بشه و از پایین صفحه نمایش داده بشه. بیشترش محاسباته.

فرشید
فرشید
@farshid

تخصص: Developer

آقای بیات @ali.bayat
این طوری نوشتم و نشد باکس رو با کیبورد حرکت میدم

if(document.getElementById("box1").offsetTop < 0 +"px"){
                document.getElementById("box1").style.button = 0 + "px";

            }

شاید پاسخ شما همین‌جا باشد

محمد صادقیان
محمد صادقیان
@drcode.ir

تخصص: برنامه نویس وب - فریم ورک Laravel

خب شما موقع حرکت دادن باکستون مقدار top اون رو چک کنید و اگر

box.top-box.height > screen.height

شد یعنی باکس شما از صفحه خارج شده و دوباره box.top رو برابر با 0 قرار بدید.

فرشید
فرشید
@farshid

تخصص: Developer

آقا من دیگه مخم نمی کشه
:))
مشکل این کد چیه که اجرا نمیشه
@dr-code.ir
@ali.bayat

if(document.getElementById("box1").style.top == screen.height + "px"){
                alert("hello")
محمد صادقیان
محمد صادقیان
@drcode.ir

تخصص: برنامه نویس وب - فریم ورک Laravel

برای اینکه بهتر بشه کمک کرد کدهاتون رو روی سایتی مثل https://playcode.io اجرا کن و ذخیره کن و لینکش رو بزاری بهتر میشه مشکلش رو حل کرد.

فرشید
فرشید
@farshid

تخصص: Developer

دوستان این لینکشه اگه میشه کمک کنید
می خوام وقتی به آخر صفحه می رسه از اون طرف بیاد بیرون
http://playcode.io/ppp

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

@farshid
برای گرفتن فاصله از div تا بالای صفحه:

document.getElementById("box").offsetTop

و برای گرفتن ارتفاع div از:

document.getElementById("box").offsetHeight

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام