راکت
حل شده

چند صفحه در یک صفحه

17 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

17
ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

بهترین پاسخ

اول باید اون بخش رو تو جاوا اسکریپت بسازی یا از قبل تو HTML قرار بدی و بهش Display None بدی
بعد باید به دکمه ای که مربوط به ثبت پیشنهاد هست با Javascript بگی هروقت رو دکمه کلیک شد اون بخشی که مربوط به ثبت پیشنهاد هست به Div والد Apend بشه(البته اگه Display none دادی فقط لازمه که Display None رو ازش حذف کنی)
تو اون بخش یه فرم هست که وقتی Submit رو میزنی به وسیله Ajax بدون رفرش صفحه با استفاده از PHP تو دیتابیس ثبت میشه

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

مشابه به این مورد هستش، فقط فرقش اینه که اینجا یک فهرست ساخته شده، شما می خواید اطلاعات بیشتری رو ثبت کنید:
https://www.w3schools.com/howto/howto_js_dropdown.asp

محمدرضا
محمدرضا
@mohammadugfm

تخصص: فرانت اند

سلام.
این کار درون جاوااسکریپت صورت میگیره که یک کاره به شدت ساده هست.
آخر کد قرار میگیرد
البته اسم این صفحه در صفحه نیست و من اول فکر کردم منظورتون SPA هستش😅

  1. شما باید المنت که قراره روش کلیک بشه رو اول تعریف کنی.
  2. شما المنتی که با کلیک روی اون اون باکس یا هرچیزی بسته بش هم تعریف میکنی.
    (شما اون المنتی که قراره بعد از کلیک شدن بیاد رو تمام استایل هاش رو میدید و display : none میکنین.)
  3. شما یه شرطی رو تعریف میکنی که اگر کلیک شد display : هر چی خودت میدونی به غیر از noneبشه و المتی که قراره باشه بسته بشه هم display : flex یا هرچیزه دیگه بشه😂.(البته یه روش دیگه هم وجود داره)
  4. یه شرط دیگه هم تعریف میکنی که هرموقع روی المنت بستن کلیک شد display باکس و خود المنت none بشه :).
let open = document.querySelector('هرچیزی');
       let box = document.querySelector('هر کلسی که داره');
       open.addEventListener('click' , () => {
        box.style.display = 'flex';
        close.style.display = 'flex';
       })
       close.addEventListener('click' , () => {
        box.style.display = 'none';
        close.style.display = 'none';
       })

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

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

البته اگر منظورتون ساخت بخش رویی (Modal Box) هم هستش، اینجوری میشه:
https://www.w3schools.com/howto/howto_css_modals.asp

پرهام
پرهام
@parhamdeveloper

تخصص: توسعه‌دهنده‌ی BackEnd

@mohammadugfm
الان من میخوام اطلاعات هر چیزی که روش کلیک میشه بیاد بالا اینجا باید چیکار کنم ؟

ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

ببین چند تا تکنیک مختلف وجود داره برای این کار هایی که شما میخواین انجام بدین
تکنیک اول اینکه اون جعبه رو به قرار بدی بعد بهش Display None بدی. بعد به دکمه نمایش پروفایل addeventlistener بدی و بگی بعد کلیک پروفایل نمایش داده بشه(Display block بهش داده بشه). میتونی دادن و گرفتن Display None رو با class انجام بدی مثلا

element.classList.add('display-none'); // Display None اسم یه کلاس که بهش Display None دادیم
element.classList.remove('display-none');

یا اینکه مستقیم با element.style.display بهش Display None رو بدی یا ازش بگیری
اگه بخوای کاری کنی که بعد کلیک دوم دوباره Display None باید یه متغیر تعریف کنی و شرایط فعلی رو توش بریزی(منظور از شرایط فعلی باز یا بسته بودن بخش نمایش پروفایل هست)
مثلا میتونی اون متغیر وضعیت رو به شکل boolean تعریف کنی و کد هارو طبق true = باز و false = بسته قرار بدی
و بهش بگی هروقت رو نمایش پروفایل کلیک شد اگه متغیر boolean که داشتیم false بود true بشه و پروفایل نمایش داده بشه، اگه true بود false بشه و پروفایل بسته بشه
راه دوم اینکه همه المنت ها رو توی Javascript بسازی و بعد بگی هروقت رو دکمه نمایش پروفایل کلیک شد به Div والد Apend شه المنت ها. راه دوم از نظر سئو بهتره چون دادن Display None به لینک ها و متن های سایت از نظر Google کار درستی نیست. تو راه دوم اول اصلا المنت ها قبل کلیک رو نمایش پروفایل وجود ندارن که روبات های گوگل بفهمن همچین چیزی تو سایت هست یا نه. البته از اونجایی که احتمالا محتوا کمی تو جعبه پروفایل هست فکر نکنم Display none دادن تاثیر زیادی داشته باشه

محمدرضا
محمدرضا
@mohammadugfm

تخصص: فرانت اند

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

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        body {
            font-family: 'vazir';
            align-items: center;
        }
        .open {
            color: #16a34a;
            display: flex;
            justify-content: center;
         }

         .box {
            display: none;
            width: 300px;
            height: 250px;
            background-color: #94a3b8;
            border-radius: 4px;
            position: relative;
            left: 500px;/*من از پوزیشن استفاده کردم شما استفاده نکنین */
         }

         .box h2 {
            display: flex;
            justify-content: center;
            margin: 1rem;
         }

         .box p {
            display: flex;
            justify-content: center;
            align-items: flex-end;
            height: 50px;
         }
    </style>
</head>
<body>
    <h1 class="open">باکس</h1>
    <div class="box">
        <span>بستن</span>
        <h2>باکس</h2>
        <p>لورم اپیسوم</p>
    </div>
    <script>
        let open = document.querySelector('.open');
        let clos = document.querySelector('.box span');
        let box = document.querySelector('.box');
        open.addEventListener('click' , () => {
            box.style.display = 'block';
        })
        clos.addEventListener('click' , () => {
            box.style.display = 'none';
        })
    </script>
</body>
</html>

لطفا استایل قشنگ تری بدین من به زشت ترین حالت ممکن استایل دادم😅

پرهام
پرهام
@parhamdeveloper

تخصص: توسعه‌دهنده‌ی BackEnd

@mohammadugfm
@asp.gosk
@milad
خب الان بخش ساخت modal رو میدونم . الان من نمیخوام برای هر پروفایل یک div بسازم . بلکه میخوام با همون div کارام انجام بشه بعد هم تازه با هربار کلیک بر روی یک پروفایل دیگر فقط اطلاعات تغییر کنند .
یک سایت نمونه :
https://www.karlancer.com/search

.
.
@jwkwok

نگاه کن برای نمایش اطلاعات در اونجا باید جاوااسکرپت استفاده کنی
و برای گرفتن همون اطلاعات باید نمایشش بدی باید از ajax استفاده کنی
وقتی اطلاعات رو گرفتی با JS کاری می کنی متن داخل اون div تغییر کنه
تمام

ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

منظورت این دکمه هست؟
 تصویر
اگه منظورت اینکه بعد کلیک روی هر لینک بدون رفرش صفحه تایتل و محتوا صفحه تغییر کنه باید از Ajax استفاده کنی
متونی از فریم ورک Vue JS استفاده کنی

محمدرضا
محمدرضا
@mohammadugfm

تخصص: فرانت اند

من دقیقا نمیدونم منظورت چی هست . ساختار کلی از این قضیه رو پیاده کردم که درک کنی و خودت انجامش بدی ولی انگار منظورت چیزه دیگه ای هستش.

پرهام
پرهام
@parhamdeveloper

تخصص: توسعه‌دهنده‌ی BackEnd

@asp.gosk
نه بخش پیشناهادات رو پروژه

محمدرضا
محمدرضا
@mohammadugfm

تخصص: فرانت اند

این بخش که از کد جاوااسکریپت خاصی استفاده نمیشه😐
به غیر از انگولار که این وبسایت ازش استفاده میکنه.
ودرکل این فقط یه تگ a ساده html هستش.

پرهام
پرهام
@parhamdeveloper

تخصص: توسعه‌دهنده‌ی BackEnd

@mohammadugfm
درست چک کردی؟ inspect کن میبینی چیکار میکنه.

ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

لطفا یه عکس بده از بخشی که میگی

محمدرضا
محمدرضا
@mohammadugfm

تخصص: فرانت اند

به احتمال خیلی زیاد از انگولار استفاده کردن ولی دقیق نمیدونم چون با انگولار کار نکردم

پرهام
پرهام
@parhamdeveloper

تخصص: توسعه‌دهنده‌ی BackEnd

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

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