I have a problem creating a timetable for my school using Bootstrap. The timetable should be responsive for mobile devices and tablets.
The view for larger screens works perfectly, but when it switches to the mobile View, it changes the rows with columns ..
Tabletview: http://imgur.com/U3ger2a,6ThcH1l
Mobileview: http://imgur.com/U3ger2a,6ThcH1l#1
The main html File:
@media only screen and (max-width: 800px) {
/* Force table to not be like tables anymore */
#no-more-tables table,
#no-more-tables thead,
#no-more-tables tbody,
#no-more-tables th,
#no-more-tables td,
#no-more-tables tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
#no-more-tables thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
#no-more-tables tr { border: 1px solid #ccc; }
#no-more-tables td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50%;
white-space: normal;
text-align:left;
}
#no-more-tables td:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
text-align:left;
font-weight: bold;
}
/*
Label the data
*/
#no-more-tables td:before { content: attr(data-title); }
}
<!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">
<title>Timetable</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="js/bootstrap.js" rel="stylesheet">
<!-- <link src="styles.css" rel="stylesheet"> -->
</head>
<body>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
<link href="styles.css" rel="stylesheet">
<div class="container">
<div class="row">
<div class="col-md-12">
<h2 class="text-center">
Timetable
</h2>
</div>
<div id="no-more-tables">
<table class="col-sm-12 table-bordered table-striped table-condensed cf">
<thead class="cf">
<tr>
<th> </th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
</tr>
</thead>
<tbody>
<tr>
<td data-title=" ">07:45 |1| 08:35</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">08:35 |2| 09:25</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">09:30 |3| 10:20</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">10:35 |4| 11:25</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">11:30 |5| 12:20</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">12:20 |6| 13:10</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">13:10 |7| 14:00</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">14:00 |8| 14:50</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">15:00 |9| 15:50</td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">15:55 |10| 16:45 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">16:50 |11| 17:40 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">17:40 |12| 18:30 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">18:55 |13| 19:40 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">19:40 |14| 20:25 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">20:30 |15| 21:15 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
<tr>
<td data-title=" ">21:15 |16| 22:00 </td>
<td data-title="Monday">Lesson</td>
<td data-title="Tuesday">Lesson</td>
<td data-title="Wednesday">Lesson</td>
<td data-title="Thursday">Lesson</td>
<td data-title="Friday">Lesson</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
Did anyone know, how to solve this problem?
Table column width use the same layout as grids do; using col-[viewport]-[size] . Remember the column sizes should total 12; 1 + 3 + 3 + 5 = 12 in this example. Remember to set the <th> elements rather than the <td> elements so it sets the whole column.
Breakpoint specific Use . table-responsive{-sm|-md|-lg|-xl|-xxl} as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally.
The primary method of making a responsive table is to add a class table table-responsive inside the table tag. To make a table responsive, we wrap the whole table inside a container tag like div with property overflow-x equals to auto .
Replace your html code lines
<div id="no-more-tables">
with <div class="table-responsive">
and
<table class="col-sm-12 table-bordered table-striped table-condensed cf">
with <table class="table col-sm-12 table-bordered table-striped table-condensed cf">
See working example
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With