Как заставить <li>блоков на дно - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь придумать расположение в классе, используя html / css, в то время как данные будут предоставлены через mysql / php.Если вы учитель и вы находитесь перед классом, ваш взгляд на классную комнату будет таким, что ученики сначала займут передние места, где, по вашему мнению, они находятся внизу, а остальные пустые местана вашем виде сверху.

Для визуализации это выглядит примерно так:

let X = место, представленное списком 70px x 70px, отформатированным так, что оно выглядит как блок с 8 столбцами и 5 строками

а.Вот как обычно работает html / css

XXXXXXXX третий ряд

XXXXXXXX второй ряд

XXXXX первый ряд

BLACK BOARD

b,Вот как я хочу, чтобы это выглядело

XXXXX третий ряд

XXXXXXXX второй ряд

XXXXXXXX переднее сиденье

BLACK BOARD

Независимо от данных из php / mysql, я ищу способ, чтобы HTML / CSS или даже jQuery могли заставить первые блоки идти вниз.Спасибо.

Мой код:

<?php require("connectdb.php"); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Dynamic Drag'n Drop</title>
<script type="text/javascript" src="javascript/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="javascript/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript" src="javascript/jquery.ui.ipad.altfix.js"></script>


<style>
body {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 16px;
    margin-top: 10px;
}

ul {
    margin: 0;
}

#contentWrap {
    width: 800px;
    margin: 0 auto;
    height: 500px;
    overflow: hidden;
    background-color: #FFFFFF;
    border: solid 2px #EEEEEE;
}

#contentTop {
    width: 600px;
    padding: 10px;
    margin-left: 30px;
}

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

#sortable li { margin: 20px 20px 1px 20px; 
padding: 1px;
 float: left; 
 width: 70px; 
 height: 70px; 
 font-size: 12px;
 text-align: center; 
 background-color:#cfcfcf;
 position: absoute;
 bottom: 0;
 display: inline-block;
 float: right;
 }


#contentRight {
    float: right;
    width: 300px;
    margin-top: 100px;
    padding:10px;
    background-color:#336600;
    color:#FFFFFF;
}

#save
{    
    width: 100px;
    height: 30px;
    margin-right: auto;
    margin-left: auto;
    background-color:#336600;
    color:#FFFFFF;
    text-align: center;
}
.on { background-color:#000000; color:#782322; }

            #header{
                background-color: #EEEEEE;
                font-weight: bold;
                width: 804px;
                margin-left: auto ;
                margin-right: auto ;
                padding: 2;
            }
</style>


<script type="text/javascript">
//$(document).ready(function(){ 



    $(function() {

    $(document).bind('touchmove', function(e) {
        e.preventDefault();
    }, false);  

        $("#sortable").sortable({ opacity: 0.6, cursor: 'move', update: function()     {
            var order = $(this).sortable("serialize") +     '&action=updateRecordsListings'; 
            $.post("updateDB.php", order, function(theResponse){
            });                                                              
        }                                 
        }).addTouch();
        $( "#sortable" ).disableSelection();

        //$("li").click(function(){
            //$(this).addClass("on");
        //});   
    });

//});   
</script>

</head>
<body>
    <?php 
        session_start();
        $teacherID = $_SESSION['teacherID'];
        $classID = $_SESSION['csID'];
        $qryClass = "SELECT * FROM class_schedule WHERE csID = '". $classID ."';";
        $class = mysql_query($qryClass);
        while($row = mysql_fetch_array($class))
        {
            $subjCode = $row['subjCode'];
            $section = $row['section'];
            $semester = $row['semester'];
            $sy = $row['SY'];
            $time = $row['time'];
        }
    ?>
    <div id = "header">
        <?php 
            //echo "What do you want to do, " .$fname . "?<br>";
            echo "Subject: " . $subjCode . " Block: " . $section . " -     Semester:" . $semester . " - SY:" . $sy . " - " . $time;
        ?>
    </div>
    <div id="contentWrap">
            <ul id="sortable">
                <?php
                session_start();
                $query  = "SELECT e.*, CONCAT(s.lname,', ', s.fname) name     FROM enrollment e, student s
WHERE e.studentID = s.studentID AND e.csID = '". $classID ."' ORDER BY sort;";
                $result = mysql_query($query);
                $c = 0;
                while($row = mysql_fetch_array($result, MYSQL_ASSOC))
                {
                    //if($c != 4)
                        echo "<li id='recordsArray_'"     . $row['id'] . ">" . $row['name'] . "</li>";
                }
                ?>
            </ul>       

    </div>
    <div id="save">
        Blackboard
    </div>


</body>
</html>

1 Ответ

0 голосов
/ 10 февраля 2012

Предварительно обработайте его в PHP.

$seats = array('X', 'X', 'X',...);
$ordered_seats = array(array_splice($seats, 0 - (count($seats) % 8))); // puts the last row into the new array
while (count($seats) > 0)
{
    $ordered_seats = array(array_splice($seats, -8)); // take 8 seats at a time
}

Очень просто переписать это в jQuery, используя .remove(), чтобы вывести последнюю строку из DOM, поместить их в массив для безопасного хранения, затем .appendTo(), чтобы заново вставить их, как только вы их заказали .


jQuery (не тестировался):

var seats = $('#sortable .block');
var ordered_seats = seats.splice(0 - (seats.length % 8)).pad(8, '') || [];
while (seats.length > 0)
{
    $.merge(ordered_seats, seats.splice(-8));
}
// You now have the <li>s in the correct order
$('#sortable').html(''); // blank the container
for (var i in ordered_seats)
{
    $('#sortable').append(ordered_seats[i]);
}
...