Labels

Learn the powerful enterprise adaptable database:

Getting Started With ADABAS & Natural

Tuesday, January 10, 2017

112 Ionic With Responsive Table


.
112 Ionic With Responsive Table
This tutorial demonstrates how to insert a responsive table into Ionic Page using CSS ONLY.


1) Start with startup codes.

Rename as 112 Ionic With Responsive Table.

2) Add HTML Data Table

HTML
<html>
  <head>
    <meta charset="utf-8">
    <title>Diary</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <!-- Internal Library
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    -->
    <!-- Cloud Library -->
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
    <!-- Needed for Cordova/PhoneGap (will be a 404 during development) -->
    <script src="cordova.js"></script>
  </head>
    <body ng-app="app">
  <div>
  <div>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button></ion-nav-back-button>
    </ion-nav-bar>
    <ion-nav-view></ion-nav-view>
  </div>
</div>
     
     <script id="home.html" type="text/ng-template">
<ion-view title="Home" id="page1">
  <ion-content padding="true" class="has-header">
        <table>
                <thead>
                <tr>
                        <th>First Name</th>
                        <th>Last Name</th>
                        <th>Job Title</th>
                        <th>Favorite Color</th>
                        <th>Wars or Trek?</th>
                        <th>Nick Name</th>
                        <th>Date of Birth</th>
                        <th>Dream Vacation City</th>
                        <th>GPA</th>
                        <th>Arbitrary Data</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                        <td>James</td>
                        <td>Matman</td>
                        <td>Chief Sandwich Eater</td>
                        <td>Lettuce Green</td>
                        <td>Trek</td>
                        <td>Digby Green</td>
                        <td>January 13, 1979</td>
                        <td>Gotham City</td>
                        <td>3.1</td>
                        <td>Toyota</td>
                </tr>
                <tr>
                  <td>The</td>
                  <td>Tick</td>
                  <td>Crimefighter Sorta</td>
                  <td>Blue</td>
                  <td>Wars</td>
                  <td>John Smith</td>
                  <td>July 19, 1968</td>
                  <td>Athens</td>
                  <td>N/A</td>
                  <td>Honda</td>
                </tr>
                <tr>
                  <td>Jokey</td>
                  <td>Smurf</td>
                  <td>Giving Exploding Presents</td>
                  <td>White</td>
                  <td>Trek</td>
                  <td>Smurflane</td>
                  <td>March 12, 1945</td>
                  <td>New Smurf City</td>
                  <td>4</td>
                  <td>Suzuki</td>
                </tr>
                <tr>
                  <td>Cindy</td>
                  <td>Beyler</td>
                  <td>Sales Representative</td>
                  <td>Red</td>
                  <td>Wars</td>
                  <td>Lori Quivey</td>
                  <td>July 5, 1956</td>
                  <td>Paris</td>
                  <td>3.4</td>
                  <td>Mazda</td>
                </tr>
                <tr>
                  <td>Captain</td>
                  <td>Cool</td>
                  <td>Tree Crusher</td>
                  <td>Blue</td>
                  <td>Wars</td>
                  <td>Steve 42nd</td>
                  <td>December 13, 1982</td>
                  <td>Las Vegas</td>
                  <td>1.9</td>
                  <td>Mitsuoka</td>
                </tr>
                </tbody>
        </table>
       </ion-content>
</ion-view>
    </script>    
         
  </body>
</html>

3) Add Responsive Style

CSS
        /*
        Generic Styling, for Desktops/Laptops
        */
        table {
                width: 100%;
                border-collapse: collapse;
        }
        /* Zebra striping */
        tr:nth-of-type(odd) {
                background: #eee;
        }
        th {
                background: #333;
                color: white;
                font-weight: bold;
        }
        td, th {
                padding: 6px;
                border: 1px solid #ccc;
                text-align: left;
        }


        /*
        Max width before this PARTICULAR table gets nasty
        This query will take effect for any screen smaller than 760px
        and also iPads specifically.
        */
        @media
        only screen and (max-width: 760px),
        (min-device-width: 768px) and (max-device-width: 1024px)  {

                /* Force table to not be like tables anymore */
                table, thead, tbody, th, td, tr {
                        display: block;
                }

                /* Hide table headers (but not display: none;, for accessibility) */
                thead tr {
                        position: absolute;
                        top: -9999px;
                        left: -9999px;
                }

                tr { border: 1px solid #ccc; }

                td {
                        /* Behave  like a "row" */
                        border: none;
                        border-bottom: 1px solid #eee;
                        position: relative;
                        padding-left: 50%;
                }

                td:before {
                        /* Now like a table header */
                        position: relative;
                        /* Top/left values mimic padding */
                        top: 0px;
                        left: 6px;
                        width: 45%;
                        padding-right: 10px;
                        white-space: nowrap;
                }

                /*
                Label the data
                */
                td:nth-of-type(1) { font-weight:bold;font-size:150%;margin-top:5px; }
   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: "Nick 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:"; }
        }

        /* Smartphones (portrait and landscape) ----------- */
        @media only screen
        and (min-device-width : 320px)
        and (max-device-width : 480px) {
                body {
                        padding: 0;
                        margin: 0;
                        width: 320px; }
                }

        /* iPads (portrait and landscape) ----------- */
        @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
                body {
                        width: 495px;
                }
        }
Wider Screen Size:
Small Screen Size:

.

See the Pen 112 Ionic With Responsive Table by notarazi (@notarazi) on CodePen.

2 comments:

  1. Nice Post, what I was exactly looking for.
    Is there any way to get the column names dynamically ? Because I am using many tables in my app.

    ReplyDelete
  2. use ng-repeat, e.g.,



    {{column}}


    {{row[column]}}




    refer full example at http://jsfiddle.net/v6ruo7mj/1/

    ReplyDelete