Doubt with responsive table css and html

0

I have a table inside a DIV. I am learning CSS I was studying several example codes. Basically I need to complete the table with records of 8 fields, visualizing the vertical scroll bar, and without horizontal scroll. I need to look good in desktop format, as well as in the resolution of my tablet, 1280x800, both in portrait and landscape. I achieved "almost" the functionality, but sometimes the scroll bar is separated from the table, sometimes it is not shown, sometimes the table is left unfocused. I think I'm missing some things because I do not know. Is this almost .. they help me to make it functional? Set an example with the css that I have! Thanks

file: test01.php

body {
    font-family: "Lato", sans-serif;
    text-align: center;
    margin: 0 auto; 
    width: 100%;    
    cursor: url(cursor.png) 20 20, auto;
    background-image: url(img/bg_content.png);
    overflow: hidden;    
}

table {
    border-spacing: 0;
    display: flex;
    max-height: 40vh;
    table-layout: fixed;
    border:1px solid gray;
}

thead{
    margin-top: -1;
    background-color: #f1eee9;
    position: fixed;
}

th{
    border-bottom: 1px solid #c4c0c9;
    border-right: 1px solid #c4c0c9;
    background-color: #75F3F3;
    text-align: center;
}

th,td{
    font-weight: normal;
    margin: 0;
    max-width: 11vw; /**Ancho por celda*/
    min-width: 11vw;/**Ancho por celda*/
    word-wrap: break-word;/*Si el contenido supera el tamano, adiciona a una nueve linea**/
    font-size: 11px;
    height: 3.5vh !important;/*El mismo alto para todas las celdas**/
    padding: 4px;
    border-right: 1px solid #c4c0c9;
}

tr:nth-child(2n) {
    background: none repeat scroll 0 0 #DBFCFC;
}

tr:nth-child(1n) {
    background: none repeat scroll 0 0 #FFF;
}

  #contiene_tabla {
    max-width: 100%; /* Debería ser 1300px fijos*/
    margin-top: 63px;
    height: 500px;
    overflow-y: scroll;
    overflow-x: hidden;
  }

tr:hover {
    background-color: #C2F3FE;
    color: #339;
}

tbody tr td:nth-child(1),
tbody tr td:nth-child(2),
tbody tr td:nth-child(4){
 text-align: center;
}

tbody tr td:nth-child(3){
 text-align: left;
}

tbody tr td:nth-child(5),
tbody tr td:nth-child(6),
tbody tr td:nth-child(7),
tbody tr td:nth-child(8){
 text-align: right;
}

@media (min-device-width: 300px) and (max-device-width: 810px) {

tbody {
    display: block;
    margin: 0 auto;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 957px;
    margin-top: 63px;
    margin-left: 10px;
    height: 1220px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }

}


@media (min-device-width: 811px) and (max-device-width: 1280px) {

tbody {
    margin: 0 auto;
    display: block;
    overflow-y: scroll;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 100%;
    margin-top: 63px;
    height: 650px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }
}

@media (orientation:portrait){

tbody {
    display: block;
    overflow-x: hidden;     
    }
}
<div id="contiene_tabla">
  <table align="center" border="0" cellspacing="0" cellpadding="0">
    <thead>
      <tr>
        <th>SOCIO</th>
        <th>ZONA</th>
        <th>NOMBRE, APELLIDO</th>
        <th>NIVEL</th>
        <th>PUNTOS</th>
        <th>PROMEDIO</th>
        <th>FECHA1</th>
        <th>TIEMPO</th>                
      </tr>
    </thead>
    <tbody>
      <tr>
          <td colspan="8">ESPACIO EN bLANCO</td>
      </tr> 
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
    </tbody>
  </table>
</div>

The main file is a php, but my doubts are for the css I use and I do not understand.

    
asked by look68 23.07.2018 в 20:20
source

2 answers

1

I suggest this option, convert both the thead and tbody into blocks and give each cell a minimum and maximum width, that you need.

This effect can not be achieved cleanly with CSS, since there are still missing properties that help us to do it easily and easily.

However, I invite you to search as someone recommended you "fixed table header" and you will see dozens of ways to do it, I recommend this:

#contiene_tabla,
#contiene_tabla *{
  box-sizing: border-box;
}

#contiene_tabla{
  overflow: hidden;
  overflow-x: auto;
  padding-bottom: 1px;
  font-family: "Lato", sans-serif;
  position: relative;
  --n_col: 8; /*Numero de columnas*/
  --ancho_celda: 120px; /*Ancho minimo de cada celda*/
  --alto_tabla: 40vh; /*Altura relativa de la tabla*/
  --alto_tabla_max: 450px; /*Altura maxima de la tabla*/
  /*EL ANCHO DE LAS CELDAS ES EL MISMO, PERO PUEDES CAMBIARLO ABAJO*/
  --ancho_celda01: var(--ancho_celda);
  --ancho_celda02: var(--ancho_celda);
  --ancho_celda03: var(--ancho_celda);
  --ancho_celda04: var(--ancho_celda);
  --ancho_celda05: var(--ancho_celda);
  --ancho_celda06: var(--ancho_celda);
  --ancho_celda07: var(--ancho_celda);
  --ancho_celda08: var(--ancho_celda);
}

#contiene_tabla table{
  margin: auto;
  table-layout: fixed;
  border-collapse: collapse;
}

#contiene_tabla thead{
  background-color: #75F3F3;
  position: sticky;
}

#contiene_tabla td, 
#contiene_tabla th{
  width: calc(100% / var(--n_col)) !important;
  max-width: var(--ancho_celda) !important;
  min-width: var(--ancho_celda) !important;
  padding: 5px;
  font-weight: normal;
  min-width: 11vw;
  word-wrap: break-word;
  font-size: 11px;
  border: 1px solid #c4c0c9;
}

#contiene_tabla thead,
#contiene_tabla tbody{
  display: block;
}

#contiene_tabla tbody{
  height: var(--alto_tabla);
  max-height: var(--alto_tabla_max);
  overflow: auto;
}

#contiene_tabla th:nth-child(1),
#contiene_tabla td:nth-child(1){ 
  max-width: var(--ancho_celda01) !important;
  min-width: var(--ancho_celda01) !important; }
  
#contiene_tabla th:nth-child(2),
#contiene_tabla td:nth-child(2){ 
  max-width: var(--ancho_celda02) !important;
  min-width: var(--ancho_celda02) !important; }
  
#contiene_tabla th:nth-child(3),
#contiene_tabla td:nth-child(3){ 
  max-width: var(--ancho_celda03) !important;
  min-width: var(--ancho_celda03) !important; }

#contiene_tabla th:nth-child(4),
#contiene_tabla td:nth-child(4){ 
  max-width: var(--ancho_celda04) !important;
  min-width: var(--ancho_celda04) !important; }
  
#contiene_tabla th:nth-child(5),
#contiene_tabla td:nth-child(5){ 
  max-width: var(--ancho_celda05) !important;
  min-width: var(--ancho_celda05) !important; }
  
#contiene_tabla th:nth-child(6),
#contiene_tabla td:nth-child(6){ 
  max-width: var(--ancho_celda06) !important;
  min-width: var(--ancho_celda06) !important; }
  
#contiene_tabla th:nth-child(7),
#contiene_tabla td:nth-child(7){ 
  max-width: var(--ancho_celda07) !important;
  min-width: var(--ancho_celda07) !important; }
  
#contiene_tabla th:nth-child(8),
#contiene_tabla td:nth-child(8){ 
  max-width: var(--ancho_celda08) !important;
  min-width: var(--ancho_celda08) !important; }


/*body {
    font-family: "Lato", sans-serif;
    text-align: center;
    margin: 0 auto; 
    width: 100%;    
    cursor: url(cursor.png) 20 20, auto;
    background-image: url(img/bg_content.png);
    overflow: hidden;    
}

table {
    border-spacing: 0;
    display: flex;
    max-height: 40vh;
    table-layout: fixed;
    border:1px solid gray;
}

thead{
    margin-top: -1;
    background-color: #f1eee9;
    position: fixed;
}

th{
    border-bottom: 1px solid #c4c0c9;
    border-right: 1px solid #c4c0c9;
    background-color: #75F3F3;
    text-align: center;
}

th,td{
    font-weight: normal;
    margin: 0;
    max-width: 11vw; 
    min-width: 11vw;
    word-wrap: break-word;
    font-size: 11px;
    height: 3.5vh !important;
    padding: 4px;
    border-right: 1px solid #c4c0c9;
}

tr:nth-child(2n) {
    background: none repeat scroll 0 0 #DBFCFC;
}

tr:nth-child(1n) {
    background: none repeat scroll 0 0 #FFF;
}

  #contiene_tabla {
    max-width: 100%; 
    margin-top: 63px;
    height: 500px;
    overflow-y: scroll;
    overflow-x: hidden;
  }

tr:hover {
    background-color: #C2F3FE;
    color: #339;
}

tbody tr td:nth-child(1),
tbody tr td:nth-child(2),
tbody tr td:nth-child(4){
 text-align: center;
}

tbody tr td:nth-child(3){
 text-align: left;
}

tbody tr td:nth-child(5),
tbody tr td:nth-child(6),
tbody tr td:nth-child(7),
tbody tr td:nth-child(8){
 text-align: right;
}

@media (min-device-width: 300px) and (max-device-width: 810px) {

tbody {
    display: block;
    margin: 0 auto;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 957px;
    margin-top: 63px;
    margin-left: 10px;
    height: 1220px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }

}


@media (min-device-width: 811px) and (max-device-width: 1280px) {

tbody {
    margin: 0 auto;
    display: block;
    overflow-y: scroll;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 100%;
    margin-top: 63px;
    height: 650px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }
}

@media (orientation:portrait){

tbody {
    display: block;
    overflow-x: hidden;     
    }
}
<div id="contiene_tabla">
  <table border="0" cellspacing="0" cellpadding="0">
    <thead>
      <tr>
        <th>SOCIO</th>
        <th>ZONA</th>
        <th>NOMBRE, APELLIDO</th>
        <th>NIVEL</th>
        <th>PUNTOS</th>
        <th>PROMEDIO</th>
        <th>FECHA1</th>
        <th>TIEMPO</th>                
      </tr>
    </thead>
    <tbody>
      <tr>
          <td colspan="8"> </td>
      </tr> 
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
    </tbody>
  </table>
</div>

This is another variant, where the scroll seems out of the table:

#contiene_tabla,
#contiene_tabla *{
  box-sizing: border-box;
}

#contiene_tabla{
  overflow: hidden;
  overflow-x: auto;
  padding-bottom: 1px;
  font-family: "Lato", sans-serif;
  position: relative;
  --n_col: 8; /*Numero de columnas*/
  --ancho_celda: 120px; /*Ancho minimo de cada celda*/
  --alto_tabla: 40vh; /*Altura relativa de la tabla*/
  --alto_tabla_max: 450px; /*Altura maxima de la tabla*/
  /*EL ANCHO DE LAS CELDAS ES EL MISMO, PERO PUEDES CAMBIARLO ABAJO*/
  --ancho_celda01: var(--ancho_celda);
  --ancho_celda02: var(--ancho_celda);
  --ancho_celda03: var(--ancho_celda);
  --ancho_celda04: var(--ancho_celda);
  --ancho_celda05: var(--ancho_celda);
  --ancho_celda06: var(--ancho_celda);
  --ancho_celda07: var(--ancho_celda);
  --ancho_celda08: var(--ancho_celda);
}

#contiene_tabla table{
  margin: auto;
  table-layout: fixed;
  border-collapse: collapse;
}

#contiene_tabla thead{
  position: sticky;
}
#contiene_tabla th{
  background-color: #75F3F3;
}

#contiene_tabla td, 
#contiene_tabla th{
  width: calc(100% / var(--n_col)) !important;
  max-width: var(--ancho_celda) !important;
  min-width: var(--ancho_celda) !important;
  padding: 5px;
  font-weight: normal;
  min-width: 11vw;
  word-wrap: break-word;
  font-size: 11px;
  border: 1px solid #c4c0c9;
}

#contiene_tabla thead,
#contiene_tabla tbody{
  display: block;
}

#contiene_tabla tbody{
  height: var(--alto_tabla);
  max-height: var(--alto_tabla_max);
  overflow: auto;
}

#contiene_tabla th:nth-child(1),
#contiene_tabla td:nth-child(1){ 
  max-width: var(--ancho_celda01) !important;
  min-width: var(--ancho_celda01) !important; }
  
#contiene_tabla th:nth-child(2),
#contiene_tabla td:nth-child(2){ 
  max-width: var(--ancho_celda02) !important;
  min-width: var(--ancho_celda02) !important; }
  
#contiene_tabla th:nth-child(3),
#contiene_tabla td:nth-child(3){ 
  max-width: var(--ancho_celda03) !important;
  min-width: var(--ancho_celda03) !important; }

#contiene_tabla th:nth-child(4),
#contiene_tabla td:nth-child(4){ 
  max-width: var(--ancho_celda04) !important;
  min-width: var(--ancho_celda04) !important; }
  
#contiene_tabla th:nth-child(5),
#contiene_tabla td:nth-child(5){ 
  max-width: var(--ancho_celda05) !important;
  min-width: var(--ancho_celda05) !important; }
  
#contiene_tabla th:nth-child(6),
#contiene_tabla td:nth-child(6){ 
  max-width: var(--ancho_celda06) !important;
  min-width: var(--ancho_celda06) !important; }
  
#contiene_tabla th:nth-child(7),
#contiene_tabla td:nth-child(7){ 
  max-width: var(--ancho_celda07) !important;
  min-width: var(--ancho_celda07) !important; }
  
#contiene_tabla th:nth-child(8),
#contiene_tabla td:nth-child(8){ 
  max-width: var(--ancho_celda08) !important;
  min-width: var(--ancho_celda08) !important; }


/*body {
    font-family: "Lato", sans-serif;
    text-align: center;
    margin: 0 auto; 
    width: 100%;    
    cursor: url(cursor.png) 20 20, auto;
    background-image: url(img/bg_content.png);
    overflow: hidden;    
}

table {
    border-spacing: 0;
    display: flex;
    max-height: 40vh;
    table-layout: fixed;
    border:1px solid gray;
}

thead{
    margin-top: -1;
    background-color: #f1eee9;
    position: fixed;
}

th{
    border-bottom: 1px solid #c4c0c9;
    border-right: 1px solid #c4c0c9;
    background-color: #75F3F3;
    text-align: center;
}

th,td{
    font-weight: normal;
    margin: 0;
    max-width: 11vw; 
    min-width: 11vw;
    word-wrap: break-word;
    font-size: 11px;
    height: 3.5vh !important;
    padding: 4px;
    border-right: 1px solid #c4c0c9;
}

tr:nth-child(2n) {
    background: none repeat scroll 0 0 #DBFCFC;
}

tr:nth-child(1n) {
    background: none repeat scroll 0 0 #FFF;
}

  #contiene_tabla {
    max-width: 100%; 
    margin-top: 63px;
    height: 500px;
    overflow-y: scroll;
    overflow-x: hidden;
  }

tr:hover {
    background-color: #C2F3FE;
    color: #339;
}

tbody tr td:nth-child(1),
tbody tr td:nth-child(2),
tbody tr td:nth-child(4){
 text-align: center;
}

tbody tr td:nth-child(3){
 text-align: left;
}

tbody tr td:nth-child(5),
tbody tr td:nth-child(6),
tbody tr td:nth-child(7),
tbody tr td:nth-child(8){
 text-align: right;
}

@media (min-device-width: 300px) and (max-device-width: 810px) {

tbody {
    display: block;
    margin: 0 auto;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 957px;
    margin-top: 63px;
    margin-left: 10px;
    height: 1220px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }

}


@media (min-device-width: 811px) and (max-device-width: 1280px) {

tbody {
    margin: 0 auto;
    display: block;
    overflow-y: scroll;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 100%;
    margin-top: 63px;
    height: 650px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }
}

@media (orientation:portrait){

tbody {
    display: block;
    overflow-x: hidden;     
    }
}
<div id="contiene_tabla">
  <table border="0" cellspacing="0" cellpadding="0">
    <thead>
      <tr>
        <th>SOCIO</th>
        <th>ZONA</th>
        <th>NOMBRE, APELLIDO</th>
        <th>NIVEL</th>
        <th>PUNTOS</th>
        <th>PROMEDIO</th>
        <th>FECHA1</th>
        <th>TIEMPO</th>                
      </tr>
    </thead>
    <tbody>
      <tr>
          <td colspan="8"> </td>
      </tr> 
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
    </tbody>
  </table>
</div>

And here as if the last cell in the header covered the scroll:

#contiene_tabla,
#contiene_tabla *{
  box-sizing: border-box;
}

#contiene_tabla{
  overflow: hidden;
  overflow-x: auto;
  padding-bottom: 1px;
  font-family: "Lato", sans-serif;
  position: relative;
  --n_col: 8; /*Numero de columnas*/
  --ancho_celda: 120px; /*Ancho minimo de cada celda*/
  --alto_tabla: 40vh; /*Altura relativa de la tabla*/
  --alto_tabla_max: 450px; /*Altura maxima de la tabla*/
  /*EL ANCHO DE LAS CELDAS ES EL MISMO, PERO PUEDES CAMBIARLO ABAJO*/
  --ancho_celda01: var(--ancho_celda);
  --ancho_celda02: var(--ancho_celda);
  --ancho_celda03: var(--ancho_celda);
  --ancho_celda04: var(--ancho_celda);
  --ancho_celda05: var(--ancho_celda);
  --ancho_celda06: var(--ancho_celda);
  --ancho_celda07: var(--ancho_celda);
  --ancho_celda08: var(--ancho_celda);
}

#contiene_tabla table{
  margin: auto;
  table-layout: fixed;
  border-collapse: collapse;
}

#contiene_tabla thead{
  position: sticky;
  background-color: #75F3F3;
  box-shadow: 
    inset -1px 0 0 0 #c4c0c9, 
    inset 0 1px 0 0 #c4c0c9, 
    inset 0 -1px 0 0 #c4c0c9;
}

#contiene_tabla td, 
#contiene_tabla th{
  width: calc(100% / var(--n_col)) !important;
  max-width: var(--ancho_celda) !important;
  min-width: var(--ancho_celda) !important;
  padding: 5px;
  font-weight: normal;
  min-width: 11vw;
  word-wrap: break-word;
  font-size: 11px;
  border: 1px solid #c4c0c9;
}

#contiene_tabla th{
  border-width: 1px 0 0 1px;
}

#contiene_tabla th:last-child{
  padding-left: 16px; /*Para tratar de disimular que el texto esta al centro, es opcional ;)*/
}

#contiene_tabla thead,
#contiene_tabla tbody{
  display: block;
}

#contiene_tabla tbody{
  height: var(--alto_tabla);
  max-height: var(--alto_tabla_max);
  overflow: auto;
}

#contiene_tabla th:nth-child(1),
#contiene_tabla td:nth-child(1){ 
  max-width: var(--ancho_celda01) !important;
  min-width: var(--ancho_celda01) !important; }
  
#contiene_tabla th:nth-child(2),
#contiene_tabla td:nth-child(2){ 
  max-width: var(--ancho_celda02) !important;
  min-width: var(--ancho_celda02) !important; }
  
#contiene_tabla th:nth-child(3),
#contiene_tabla td:nth-child(3){ 
  max-width: var(--ancho_celda03) !important;
  min-width: var(--ancho_celda03) !important; }

#contiene_tabla th:nth-child(4),
#contiene_tabla td:nth-child(4){ 
  max-width: var(--ancho_celda04) !important;
  min-width: var(--ancho_celda04) !important; }
  
#contiene_tabla th:nth-child(5),
#contiene_tabla td:nth-child(5){ 
  max-width: var(--ancho_celda05) !important;
  min-width: var(--ancho_celda05) !important; }
  
#contiene_tabla th:nth-child(6),
#contiene_tabla td:nth-child(6){ 
  max-width: var(--ancho_celda06) !important;
  min-width: var(--ancho_celda06) !important; }
  
#contiene_tabla th:nth-child(7),
#contiene_tabla td:nth-child(7){ 
  max-width: var(--ancho_celda07) !important;
  min-width: var(--ancho_celda07) !important; }
  
#contiene_tabla th:nth-child(8),
#contiene_tabla td:nth-child(8){ 
  max-width: var(--ancho_celda08) !important;
  min-width: var(--ancho_celda08) !important; }


/*body {
    font-family: "Lato", sans-serif;
    text-align: center;
    margin: 0 auto; 
    width: 100%;    
    cursor: url(cursor.png) 20 20, auto;
    background-image: url(img/bg_content.png);
    overflow: hidden;    
}

table {
    border-spacing: 0;
    display: flex;
    max-height: 40vh;
    table-layout: fixed;
    border:1px solid gray;
}

thead{
    margin-top: -1;
    background-color: #f1eee9;
    position: fixed;
}

th{
    border-bottom: 1px solid #c4c0c9;
    border-right: 1px solid #c4c0c9;
    background-color: #75F3F3;
    text-align: center;
}

th,td{
    font-weight: normal;
    margin: 0;
    max-width: 11vw; 
    min-width: 11vw;
    word-wrap: break-word;
    font-size: 11px;
    height: 3.5vh !important;
    padding: 4px;
    border-right: 1px solid #c4c0c9;
}

tr:nth-child(2n) {
    background: none repeat scroll 0 0 #DBFCFC;
}

tr:nth-child(1n) {
    background: none repeat scroll 0 0 #FFF;
}

  #contiene_tabla {
    max-width: 100%; 
    margin-top: 63px;
    height: 500px;
    overflow-y: scroll;
    overflow-x: hidden;
  }

tr:hover {
    background-color: #C2F3FE;
    color: #339;
}

tbody tr td:nth-child(1),
tbody tr td:nth-child(2),
tbody tr td:nth-child(4){
 text-align: center;
}

tbody tr td:nth-child(3){
 text-align: left;
}

tbody tr td:nth-child(5),
tbody tr td:nth-child(6),
tbody tr td:nth-child(7),
tbody tr td:nth-child(8){
 text-align: right;
}

@media (min-device-width: 300px) and (max-device-width: 810px) {

tbody {
    display: block;
    margin: 0 auto;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 957px;
    margin-top: 63px;
    margin-left: 10px;
    height: 1220px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }

}


@media (min-device-width: 811px) and (max-device-width: 1280px) {

tbody {
    margin: 0 auto;
    display: block;
    overflow-y: scroll;
    overflow-x: hidden;     
    }

   #contiene_tabla {
    max-width: 100%;
    margin-top: 63px;
    height: 650px;
    overflow-y: scroll;
    overflow-x: hidden;    
    }
}

@media (orientation:portrait){

tbody {
    display: block;
    overflow-x: hidden;     
    }
}
<div id="contiene_tabla">
  <table border="0" cellspacing="0" cellpadding="0">
    <thead>
      <tr>
        <th>SOCIO</th>
        <th>ZONA</th>
        <th>NOMBRE, APELLIDO</th>
        <th>NIVEL</th>
        <th>PUNTOS</th>
        <th>PROMEDIO</th>
        <th>FECHA1</th>
        <th>TIEMPO</th>                
      </tr>
    </thead>
    <tbody>
      <tr>
          <td colspan="8"> </td>
      </tr> 
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
      <tr>
        <td>" . $b1 . $vsocio . $b2 . "</td>
        <td>" . $b1 . $vzona . $b2 . "</td>
        <td>" . $b1 . substr($vnombre . ", " . $vapellido,0,30) . $b2 . "</td>
        <td>" . $b1 . substr($vnivel, 0, 3) . $b2 . "</td>
        <td>" . $b1 . $vpuntos . $b2 . "</td>
        <td>" . $b1 . $vprome . $b2 . "</td>
        <td>" . $b1 . $vdias . $b2 . "</td>
        <td>" . $b1 . $i . " min." . "</td>
      </tr>
    </tbody>
  </table>
</div>

Yes it is what you are looking for, I would greatly appreciate the positive vote, if not, leave me your comment. Successes!

    
answered by 23.07.2018 / 23:16
source
0

hello what you need is that the vertical scroll look and horizontal scroll? well i understand you if that is ps you can create a css code like this:

imagine you have this html5 code:

.ejemplo{
width:100px; 
height:100px; 
overflow: auto;
}
<div class="ejemplo" >
  text text text text text text text text text
  text text text text text text text text text
  text text text text text text text text text
  text text text text text text text text text
  text text text text text text text text text
  text text text text text text text text text
  text text text text text text text text text
  text text text text text text text text text
</div>

you need specify the width and height in px.

and in addiction you can use overflow: auto; to avoid displaying the horizontal scroll bar and only looking vertically.

I suggest you read these post to know more about this topic:

pure-css-horizontal-scrolling / overflow

Another possible solution is:

See overflow-y . in CSS 3 can help you.

    
answered by 23.07.2018 в 21:14