When it comes to handling narrow screens, one method I often utilize involves implementing media queries. These queries can be applied via CSS to reformat the display when necessary by adjusting the layout to mimic individual table rows.
Check out an example here
CSS
@media
only screen and (max-width: 760px),
(min-device-width: 768px) and (max-device-width: 1024px) {
/* Alter table structure */
table, thead, tbody, th, td, tr {
display: block;
}
/* Conceal table headers for layout purposes */
thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
tr { border: 1px solid #ccc; }
td {
/* Replicated as a "row" element */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50%;
}
td:before {
/* Styled like a table header */
position: absolute;
top: 6px;
left: 6px;
width: 45%;
}
/*
Labeling data columns
*/
td:nth-of-type(1):before { content: "First Name"; }
td:nth-of-type(2):before { content: "Last Name"; }
td:nth-of-type(3):before { content: "Job Title"; }
td:nth-of-type(4):before { content: "Favorite Color"; }
td:nth-of-type(5):before { content: "Wars of Trek?"; }
td:nth-of-type(6):before { content: "Porn Name"; }
td:nth-of-type(7):before { content: "Date of Birth"; }
td:nth-of-type(8):before { content: "Dream Vacation City"; }
td:nth-of-type(9):before { content: "GPA"; }
td:nth-of-type(10):before { content: "Arbitrary Data"; }
}
/* Responsive design for Smartphones (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 320px)
and (max-device-width : 480px) {
body {
padding: 0;
margin: 0;
width: 320px; }
}
/* Responsive design for iPads (portrait and landscape) ----------- */
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
body {
width: 495px;
}
}
HTML
<h1>Responsive Table</h1>
<p>In this case, the table structure remains consistent, but with @media queries in place to ensure appropriate adjustments are made if the screen size is restricted. This allows for efficient utilization of horizontal space while maintaining readability through vertical scrolling.</p>
...
Source: CSS Tricks