За последние 24 часа нас посетили 21556 программистов и 1029 роботов. Сейчас ищут 756 программистов ...

Уползают div'ы с абсолютной позицией

Тема в разделе "HTML и CSS", создана пользователем Dmtq, 17 сен 2018.

  1. Dmtq

    Dmtq Активный пользователь

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Подскажите почему при сортировке уползают div'ы count и delс абсолютной позицией? Они же созданы не с li, но в ul.Если причина в этом, то не пойму логику, как вытащить div'ы из цикла.
    top в стиле вообще на них не влияет.
    Код (Text):
    1.  
    2. <html>
    3.     <head>
    4.         <meta charset="UTF-8">
    5.         <title></title>
    6.           <style>
    7.            li {
    8.             height: 50px;
    9.             list-style-type: none;
    10.             border: 1px solid blue;
    11.             border-top-left-radius: 5px;
    12.             border-bottom-left-radius: 5px;
    13.             border-top-right-radius: 5px;
    14.             border-bottom-right-radius: 5px;
    15.             overflow:hidden;
    16.             vertical-align: middle;
    17.             margin:10px;
    18.             background-color: white;
    19.             padding:10px;
    20.            }
    21.            ul {
    22.             margin-left: 15px;
    23.             margin-right: 15px;
    24.             padding-left: 15px;
    25.             padding-right: 15px;
    26.            }
    27.            div.messages {
    28.             border: 1px solid blue;
    29.             border-top-left-radius: 5px;
    30.             border-bottom-left-radius: 5px;
    31.             border-top-right-radius: 5px;
    32.             border-bottom-right-radius: 5px;
    33.             padding:10px;
    34. /*            height: 500px;
    35.             overflow-y: scroll;*/
    36.             position: relative;
    37.            }
    38.            div.add_message {
    39.             border: 1px solid blue;
    40.             border-top-left-radius: 5px;
    41.             border-bottom-left-radius: 5px;
    42.             border-top-right-radius: 5px;
    43.             border-bottom-right-radius: 5px;
    44.             padding:10px;
    45.             left: 10px;
    46.             background-color: white;
    47.            }
    48.            div.count {
    49.             position: absolute;
    50.             width: 30px;
    51.             height: 70px;
    52.             left: 10px;
    53.             background-color: white;
    54.             border: 1px solid blue;
    55.             border-top-left-radius: 5px;
    56.             border-bottom-left-radius: 5px;
    57.             border-top-right-radius: 5px;
    58.             border-bottom-right-radius: 5px;
    59.             text-align: center;
    60.             vertical-align: middle;
    61.             line-height: 70px;
    62.            }
    63.            div.del {
    64.             border: 1px solid blue;
    65.             position: absolute;
    66.             width: 30px;
    67.             height: 70px;
    68.             right: 10px;
    69.            }
    70.            #myProgress {
    71.             width: 100%;
    72.             background-color: #ddd;
    73.             margin-top: 30px;
    74.            }
    75.            #myBar {
    76.             width: 0%;
    77.             height: 5px;
    78.             background-color: #4CAF50;
    79.            }
    80.           </style>
    81.           <script src="jquery-3.3.1.js"></script>
    82.           <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    83.           <script>
    84.           $(document).ready(function () {
    85.               $('ul').sortable({
    86.                   axis: 'y',
    87.                   stop: function (event, ui) {
    88.                           var data = $(this).sortable('serialize');
    89.                          
    90.                       $('span').text(data);
    91.                       /*$.ajax({
    92.                               data: oData,
    93.                           type: 'POST',
    94.                           url: '/your/url/here'
    95.                       });*/
    96.                   }
    97.               });
    98.           });
    99.           </script>
    100.           <script>
    101.             function move() {
    102.               var elem = document.getElementById("myBar");  
    103.               var width = 0;
    104.               var id = setInterval(frame, 100);
    105.               function frame() {
    106.                 if (width >= 100) {
    107.                   clearInterval(id);
    108.                 } else {
    109.                   width++;
    110.                   elem.style.width = width + '%';
    111.                 }
    112.               }
    113.             }
    114.             </script>
    115.     </head>
    116.     <body>
    117.         <table width="100%">
    118.             <tbody>
    119.             <tr>
    120.             <td>
    121.             <div class="messages" >
    122.             <?php
    123.             $servername = "localhost";
    124.             $username = "root";
    125.             $password = "vfrcbvev";
    126.             $dbname = "messengers";
    127.             $conn = new mysqli($servername, $username, $password, $dbname);
    128.             $conn->set_charset("utf8");
    129.             if ($conn->connect_error) {
    130.                 die("База недоступна: " . $conn->connect_error);
    131.             }
    132.             $count = 1;
    133.             $sql = "SELECT id_mess, body_mess FROM messages";
    134.             $result = $conn->query($sql);
    135.             echo "<ul id=\"sortable\">";
    136.             if ($result->num_rows > 0) {
    137.                 while($row = $result->fetch_assoc()) {
    138.                     echo "<div class=\"count\">" .$count++. "</div>";
    139.                     $link = "del_mess.php?id_mess=" . $row["id_mess"]. "";
    140.                     echo "<li id=\"id_mess-" . $row["id_mess"]. "\">&nbsp;&nbsp;" . $row["body_mess"]. "";
    141.                     echo "<div id=\"myProgress\"><div id=\"myBar\"></div></div></li>";
    142.                     echo "<div class=\"del\"><a href='".$link."'><img src=\"del.png\" width=\"25\" height=\"25\"></a></div>";
    143.                 }
    144.             } else {
    145.                 echo "0 results";
    146.             }
    147.             echo "</ul>";
    148.             $conn->close();
    149.             ?>
    150.             </div>
    151.             </td>
    152.             </tr>
    153.             <tr>
    154.             <td>
    155.             <div class="add_message">
    156.             <form action="add_mess_old.php" method="post">
    157.                 <table width="100%">
    158.                 <tbody>
    159.                 <tr>
    160.                 <td width="15%" align="center"><label for="body_mess">Добавить сообщение:</label></td>
    161.                 <td width="70%" align="center"><input style="width: 100%;" type="text" name="body_mess" id="body_mess" autocomplete="off"></td>
    162.                 <td width="15%" align="center"><input type="submit" value="Добавить"></td>
    163.                 </tr>
    164.                 </tbody>
    165.                 </table>    
    166.             </form>
    167.             </div>
    168.             </td>
    169.             </tr>
    170.             </tbody>
    171.         </table>
    172. Тест запроса в базу: <span></span>
    173.  
    174. <button onclick="move()">Click Me</button>
    175.  
    176.     </body>
    177. </html>
     

    Вложения:

  2. username

    username Новичок

    С нами с:
    6 июл 2017
    Сообщения:
    225
    Симпатии:
    17
    если дадите ссылку на веб-сайт, на котором работает этот код, будет чуть-чуть проще вам помочь

    для тестирования, как изменение свойств css меняет отображение на экране удобно использовать "инспектор" в смотрелке сайтов firefox

    позиция absolute может считаться относительно слоя с позицией relative
     
    Fell-x27 нравится это.