为什么在使用jQuery可调整大小时其他元素会移动?

时间:2018-07-13 08:56:18

标签: javascript jquery html css

当我调整元素的大小或关闭它时,之后创建的所有其他元素都将移动。我不希望在计划方面产生这种影响,而只是在“待办事项”部分。

如何分隔这些以使待办事项部分始终井井有条,但在计划方面,事情不会动摇?

enter image description here 1


  

HTML:

<!DOCTYPE html>
<html>

<head>
    <title>Drag n Drop To-do-Calendar</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width = device-width, initial-scale = 1.0">

    <link rel="stylesheet" type="text/css" media="screen" href="screen.css">
    <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

    <!-- Bootstrap -->
    <link href="bootstrap-4.0.0-dist/css/bootstrap.css" rel="stylesheet" />
    <script src="bootstrap-4.0.0-dist/js/bootstrap.js"></script>
    <script src="js/bootstrap.min.js"></script>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://code.jquery.com/jquery.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css" />

    <style>
        .ui-widget-header p,
        .ui-widget-content p {
            margin: 0;
        }
    </style>

    <script>
        $(document).ready(function() {
            $(".droppable").droppable({
                classes: {
                    "ui-droppable-active": "ui-state-active",
                    "ui-droppable-hover": "ui-state-hover"
                }
            });
        });
    </script>
</head>

<body>

    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <div class="container">
        <div class="row">

            <div id="time" class="col-sm-1">
                <p id="p1">07:00</p>
                <p>08:00</p>
                <p>09:00</p>
                <p>10:00</p>
                <p>11:00</p>
                <p>12:00</p>
                <p>13:00</p>
                <p>14:00</p>
                <p>15:00</p>
                <p>16:00</p>
                <p>17:00</p>
                <p>18:00</p>
                <p>19:00</p>
                <p>20:00</p>
                <p>21:00</p>
                <p>22:00</p>
            </div>

            <div class="col-sm-4" id="schedule">Schedule
                <div class="droppable" id="tillförgrid" class="ui-widget-header">
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                    <div class="ruta"></div>
                </div>
            </div>

            <div class="col-sm-4" id="todo">
                <div id="myDIV" class="header">
                    <h2>To-Do:s</h2>
                    <input type="text" id="myInput" placeholder="Event...">
                    <span onclick="newElement()" class="addBtn">Add</span>
                    <script>
                        document.onkeydown = function(e) {
                            var keyCode = e.keyCode;
                            if (keyCode == 13) {
                                newElement();
                            }
                        }
                    </script>
                </div>

                <div id="droppable" class="droppable" class="ui-widget-header">
                    <ul id="myUL">

                    </ul>
                </div>

            </div>
        </div>

        <script src="app.js"></script> <!-- Ska denna ligga efter jQuery script?-->
    </div>
</body>

</html>
  

CSS:

#todo {
  background-color: #6d6565;
  padding-top: 15px;
}

#div1 {
  margin-top: 3px;
}

#schedule .ruta {
  width: 350px;
  height: 45.5px;
  padding: 0px;
  border: 1px solid #aaaaaa;
  list-style-type: none;
}

#resizable {
  width: 350px;
  height: 150px;
  padding: 0.5em;
}

#myUL {
  height: auto;
  padding: 0px;
  list-style-type: none;
}

ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

li {
  cursor: pointer;
  position: fixed;
  padding: 8px 8px 8px 30px;
  background: #eee;
  font-size: 18px;
  transition: 0.1s;
  border: 1px solid #aaaaaa;
  width: 350px;
  /* make the list items unselectable */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

li:hover {
  background: #ddd;
}

li.checked {
  background: #888;
  color: #fff;
  text-decoration: line-through;
}

.close {
  position: absolute;
  right: 0;
  top: 0;
  padding: 9px 16px 9px 16px;
}

.close:hover {
  background-color: #f44336;
  color: white;
}

.header {
  background-color: #f44336;
  padding: 25px 40px;
  color: white;
}

.header:after {
  content: "";
  display: table;
  clear: both;
}

input {
  margin: 0;
  border: none;
  border-radius: 0;
  width: 75%;
  padding: 10px;
  float: left;
  font-size: 16px;
}


/* Style the "Add" button */

.addBtn {
  padding: 10px;
  width: 25%;
  background: #d9d9d9;
  color: #555;
  float: left;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
  transition: 0.3s;
  border-radius: 0;
}

.addBtn:hover {
  background-color: #bbb;
}

p {
  font-size: 13px;
  display: block;
  padding-top: 10px;
  padding-left: 30px;
}

#p1 {
  padding-top: 20px;
}

#schedule {
  padding: 0px;
}

#time {
  padding-right: 0px;
}
  

JavaScript:

// Create a "close" button and append it to each list item
var myNodelist = document.getElementsByTagName("LI");
var i;
for (i = 0; i < myNodelist.length; i++) {
    var span = document.createElement("SPAN");
    var txt = document.createTextNode("\u00D7");
    span.className = "close";
    span.appendChild(txt);
    myNodelist[i].appendChild(span);
}

// Click on a close button to hide the current list item
var close = document.getElementsByClassName("close");
var i;
for (i = 0; i < close.length; i++) {
    close[i].onclick = function() {
        var div = this.parentElement;
        div.style.display = "none";
    }
}

// Add a "checked" symbol when clicking on a list item
var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
    if (ev.target.tagName === 'LI') {
        ev.target.classList.toggle('checked');
    }
}, false);

// Create a new list item when clicking on the "Add" button
function newElement() {
    var li = document.createElement("li");

    var inputValue = document.getElementById("myInput").value;
    var t = document.createTextNode(inputValue);
    li.appendChild(t);

    //Lägger till eget, så att nya element kan flyttas till schemat
    var uniq = 'id' + (new Date()).getTime();
    li.setAttribute("id", uniq);
    li.classList.add("ui-widget-content");
    li.classList.add("draggable");

    if (inputValue === '') {
        alert("You must write something!");
    } else {
        document.getElementById("myUL").appendChild(li);
    }
    document.getElementById("myInput").value = "";

    $("li").resizable({
        maxHeight: 500,
        minHeight: 11.375,
        grid: 11.375,
        handles: 's'
    });

    $("li").draggable({
        snap: ".droppable",
        snapMode: "inner",
        revert: "invalid",
        grid: [400, 11.375]
    })

    var span = document.createElement("SPAN");
    var txt = document.createTextNode("\u00D7");
    span.className = "close";
    span.appendChild(txt);
    li.appendChild(span);


    for (i = 0; i < close.length; i++) {
        close[i].onclick = function() {
            var div = this.parentElement;
            div.style.display = "none";
        }
    }
}

0 个答案:

没有答案