اذهب إلى المحتوى

السؤال

نشر

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

My Video.gif

 

الاكواد

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet">
  <link rel="stylesheet" href="style.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"
    integrity="sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A=="
    crossorigin="anonymous" referrerpolicy="no-referrer" />
  <title>To Do List</title>
</head>

<body>

  <header>To do List</header>
  <form action="">
    <input class="txt" id="txt" type="text" placeholder="Please Write Here!" id="todo_txt">
    <button type="submit" id="submit_todo"><i class="fa-solid fa-square-plus"></i></button>
  </form>

  <div class="availabel"></div>

  <ul class="tasks" id="ul">

    <!-- js -->

  </ul>


  <script src="main.js"></script>
</body>

</html>
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Poppins', sans-serif;
    transition: all ease;
    -webkit-transition: all ease;
    -moz-transition: all ease;
    -ms-transition: all ease;
    -o-transition: all ease;
}
body{
    transition: all 2s ease ;
    -webkit-transition: all 2s ease ;
    -moz-transition: all 2s ease ;
    -ms-transition: all 2s ease ;
    -o-transition: all 2s ease ;
}
header {
    width: 100%;
    height: 5vh;
    background-color: rgb(39, 39, 39);
    color: white;
    padding: 20px;
    display: flex;
    align-items: center;
}

form {
    margin: 50px;
    width: 100%;
    height: 5vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.txt {
    padding: 5px;
    margin: 10px;
    width: 500px;
}

form button {

    width: 100px;
    font-size: 20px;

}

.tasks {
    min-width: 100%;
    /*background-color: rgb(103, 103, 103);
    */padding: 30px;
    color: white;
    transition: all ease 2s ;
    -webkit-transition: all ease 2s ;
    -moz-transition: all ease 2s ;
    -ms-transition: all ease 2s ;
    -o-transition: all ease 2s ;
}

.singil_task {
    min-width: 100%;
    display: flex;
    justify-content: space-evenly;
    align-items: center;
    margin: 5px;
    background-color: rgb(23, 23, 23);
    padding: 30px;
    border-radius: 10px;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -ms-border-radius: 10px;
    -o-border-radius: 10px;
    transition: all ease 0.5s;
    -webkit-transition: all ease 0.5s;
    -moz-transition: all ease 0.5s;
    -ms-transition: all ease 0.5s;
    -o-transition: all ease 0.5s;
}

p {
    max-width: 50%;
    min-width: 50%;
    overflow: hidden;
}

.icons {
    min-width: 74px;
    font-size: 24px;
}

.icons i {
    transition: all ease 0.5s;
    -webkit-transition: all ease 0.5s;
    -moz-transition: all ease 0.5s;
    -ms-transition: all ease 0.5s;
    -o-transition: all ease 0.5s;
}

.fa-circle-xmark:hover {
    color: red;
}

.fa-circle-check:hover {
    color: green;
}

.availabel {
    text-align: center;
    position: absolute;
    width: 210px;
    height: 45px;
    top: 115px;
    right: 0;
}

h5 {
    animation: animationv ease 1.2s;
    -webkit-animation: animationv ease 1.2s;
}

.singil_task {
    animation: animationc ease 1s;
    -webkit-animation: animationc ease 1s;
}

@keyframes animationc {
    0% {
        opacity: 0.5;
        transform: perspective(700px) translate(0px, 80px);
        transform-origin: center center;
    }

    100% {
        opacity: 1;

        transform: perspective(700px);
        transform-origin: center center;

    }
}

@keyframes animationv {
    0% {
        opacity: 0.5;
        transform: perspective(700px) translate(0px, 80px);
        transform-origin: center center;
    }

    50% {
        opacity: 1;

        transform: perspective(700px);
        transform-origin: center center;

    }

    100% {
        opacity: 0;
        transform: perspective(700px) translate(0px, 80px);
        transform-origin: center center;
    }
}

.done {
    opacity: 0.2;
    background-color: green;
    color: black;
}

.remove{
    opacity: 0;
    transform: scale(2);
    -webkit-transform: scale(2);
    -moz-transform: scale(2);
    -ms-transform: scale(2);
    -o-transform: scale(2);
}
let task_title = document.getElementById("txt");
let submit_btn = document.getElementById("submit_todo");
let availabel = document.querySelector(".availabel");

submit_btn.onclick = function (e) {
    e.preventDefault();

    if (task_title.value != "") {
        let ul = document.getElementById("ul");

        let li = document.createElement("li");
        li.classList.add("singil_task");

        let p = document.createElement("p");
        p.textContent = task_title.value;

        let div_icons = document.createElement("div");
        div_icons.classList.add("icons");

        div_icons.innerHTML = `
<i class="fa-circle-check fa-sharp fa-solid "></i>
<i class="fa-circle-xmark fa-solid" style="padding-left: 15px;"></i>
`;

        li.appendChild(p);
        li.appendChild(div_icons);
        ul.appendChild(li);
        task_title.value = "";

        let cheak = li.querySelector(".fa-circle-check");
        cheak.addEventListener("click", function () {
            li.classList.toggle("done");
        });
        let deleteBtn = li.querySelector(".fa-circle-xmark");
        deleteBtn.addEventListener("click", function () {
            li.classList.add("remove");
            li.addEventListener('transitionend' , _ =>{
                li.remove();
            })

        });
    } else {
        let h5 = document.createElement("h5");
        h5.textContent = "please enter a task";
        h5.style.color = "red";
        h5.style.display = "block";
        h5.style.padding = "10px";

        availabel.appendChild(h5);
        setTimeout((_) => {
            h5.remove();
        }, 1000);
    }
};

 

Recommended Posts

  • 0
نشر

يمكنك مثلاً عند عملية الحذف أن تقوم بتصغير الذي يحوي على المهمة التي يتم حذفها و ذلك تدريجياً، فيظهر لك إحساس بأنها ترتفع بشكل تدريجي و ليس بشكل مباشر.

أي أنك في عملية الحذف يتم استدعاء تابع يقوم بالحذف مع ال animation الذي يظهر في الفيديو الخاص بك، في نفس هذا التابع يمكنك بدل ان تحذف المكون بشكل مباشر ( و الذي سيؤدي إلى ارتفاع مباشر للمهمة التي في الأسفل) أن تقوم بتصغير حجم المكون الذي يحويه بشكل تدريجي مما سيؤدي إلى المطلوب.

يوجد طرق عديدة أخرى و لكن الطريقة التي تحدثت عنها عامة بغض النظر عما تقوم باستعماله.

  • 0
نشر
بتاريخ 4 دقائق مضت قال Kais Hasan:

يمكنك مثلاً عند عملية الحذف أن تقوم بتصغير الذي يحوي على المهمة التي يتم حذفها و ذلك تدريجياً، فيظهر لك إحساس بأنها ترتفع بشكل تدريجي و ليس بشكل مباشر.

أي أنك في عملية الحذف يتم استدعاء تابع يقوم بالحذف مع ال animation الذي يظهر في الفيديو الخاص بك، في نفس هذا التابع يمكنك بدل ان تحذف المكون بشكل مباشر ( و الذي سيؤدي إلى ارتفاع مباشر للمهمة التي في الأسفل) أن تقوم بتصغير حجم المكون الذي يحويه بشكل تدريجي مما سيؤدي إلى المطلوب.

يوجد طرق عديدة أخرى و لكن الطريقة التي تحدثت عنها عامة بغض النظر عما تقوم باستعماله.

لم يعمل

Desktop_2022_09.25_-_09_18_04_02.mp4

ششش.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...