Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bootstrap responsive Table -> change Rows with Column

Tags:

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 enter image description here

Mobileview: http://imgur.com/U3ger2a,6ThcH1l#1 enter image description here

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?

like image 304
Ferdinand Brunauer Avatar asked Jan 20 '15 13:01

Ferdinand Brunauer


People also ask

How do you set the size of a column in a Bootstrap responsive table?

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.

How do I make my Bootstrap table Mobile responsive?

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.

How do I make a table element responsive?

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 .


1 Answers

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

like image 172
Neha Avatar answered Sep 24 '22 14:09

Neha