JS实现表格响应式布局技巧

yizhihongxing

JS实现表格响应式布局技巧可以通过以下步骤来实现:

步骤一:设置表格的HTML结构

首先,需要在HTML文件中创建表格结构。一般来说,表格需要一个表头,以及一个或多个表格行。如下所示:

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>John Doe</td>
      <td>32</td>
      <td>johndoe@example.com</td>
    </tr>
    <tr>
      <td>Jane Doe</td>
      <td>28</td>
      <td>janedoe@example.com</td>
    </tr>
    <!-- 在更多的 <tr> 中添加更多的数据 -->
  </tbody>
</table>

步骤二:设置CSS样式

接下来需要设置表格的CSS样式,以便在不同设备上显示正确的布局。这里我们需要为表格设置一些响应式CSS样式。

table {
  width: 100%;
  border-collapse: collapse;
}
thead {
  color: white;
  background-color: #333;
}
th,
td {
  padding: 10px;
  text-align: left;
}
th {
  font-weight: bold;
}
tr:nth-child(even) {
  background-color: #f2f2f2;
}
@media only screen and (max-width: 600px) {
  th,
  td {
    display: block;
    width: 100%;
  }
  th {
    text-align: center;
  }
}

在这里,我们使用了@media查询,当设备宽度小于600像素时,将表头和表格元素转换为块级元素,并设置其宽度为100%。此外,还通过媒体查询设置表格标题居中。

步骤三:使用JavaScript调整表格内容和样式

最后一步是使用 JavaScript 脚本动态调整表格内容和样式。一种方法是在客户端执行 JavaScript,另一种方法是使用服务器端的脚本。下面是一个示例 JavaScript 实现它的方式:

const table = document.querySelector('table');

// 在窗口大小改变时更新表格响应式布局
window.addEventListener('resize', () => {
  if (window.innerWidth < 600) {
    // 逐个隐藏表格的列
    table.querySelectorAll('tr').forEach((row) => {
      row.querySelectorAll('td, th').forEach((cell, index) => {
        if (index === 0) {
          cell.style.display = 'block';
          cell.style.fontSize = '20px';
          cell.style.fontWeight = 'bold';
          cell.style.marginBottom = '10px';
        } else {
          cell.style.display = 'none';
        }
      });
    });
  } else {
    // 显示表格的全部列
    table.querySelectorAll('tr').forEach((row) => {
      row.querySelectorAll('td, th').forEach((cell) => {
        cell.style.display = '';
      });
    });
  }
});

在这个 JavaScript实现中,我们使用window对象的resize事件来监听客户端的窗口大小更改。我们检查窗口的宽度是否小于600像素,如果是,则使用CSS隐藏可选列,并将表头中的第一个td元素设置为块级元素,以便在小屏幕上单独显示。

这个实现可以让你的表格在不同的设备上都以最佳的方式呈现。在下面的示例中,当窗口宽度变为600像素以下时,表格将在每行中只显示姓名,且姓名居中对齐。

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
      <th>Email</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>John Doe</td>
      <td>32</td>
      <td>johndoe@example.com</td>
    </tr>
    <tr>
      <td>Jane Doe</td>
      <td>28</td>
      <td>janedoe@example.com</td>
    </tr>
    <!-- 添加更多的 <tr> 来增加数据行 -->
  </tbody>
</table>
table {
  width: 100%;
  border-collapse: collapse;
}

thead {
  background-color: #333;
  color: white;
}

th,
td {
  padding: 10px;
  text-align: left;
}

th {
  font-weight: bold;
}

tr:nth-child(even) {
  background-color: #f2f2f2;
}

@media only screen and (max-width: 600px) {
  /* 隐藏表格里除了第一个td之外的 */
  td:not(:first-child),
  th:not(:first-child) {
    display: none;
  }
  /* 将第一个td设置为块级元素,居中对齐 */
  td:first-child,
  th:first-child {
    font-size: 20px;
    font-weight: bold;
    display: block;
    margin-bottom: 10px;
    text-align: center;
  }
}
const table = document.querySelector('table');

window.addEventListener('resize', () => {
  const isMobileView = window.innerWidth < 600;

  table.querySelectorAll('tr').forEach((row) => {
    row.querySelectorAll('th,td').forEach((cell, index) => {
      if (isMobileView) {
        if (index < 1) {
          // 显示只在移动端显示的第一个
          cell.style.display = 'block';
        } else {
          cell.style.display = 'none';
        }
      } else {
        cell.style.display = ''; //取消display:none属性
      }
    });
  });
});

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现表格响应式布局技巧 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • ul设置列表为一行2条的方法

    若想将列表设置为一行两条,可以采用以下方法: 通过CSS样式表来修改 可以使用CSS的display和float属性来实现将列表横向排列,实现该功能的代码为: <style> ul li { display: inline-block; width: 49%; float: left; } </style> <ul> &l…

    css 2023年6月10日
    00
  • CSS学习之五 定位布局

    我来详细讲解一下“CSS学习之五 定位布局”的完整攻略。 一、什么是定位布局 在CSS中,定位布局是通过设置元素的定位属性,来改变元素在文档中的位置和大小。常用的定位属性有:position,top,right,bottom和left。 二、定位属性的介绍 1. position属性 该属性被用来指定一个元素在文档中的定位方式,其取值可以是absolute、…

    css 2023年6月9日
    00
  • 关于vue中媒体查询不起效的原因总结

    下面我将详细讲解关于Vue中媒体查询不起效的原因总结,包括问题的背景、原因分析、解决方法和示例说明。 问题背景 在使用Vue进行开发的过程中,我们时常会遇到媒体查询失效的问题。特别是在响应式设计中,媒体查询是非常重要的一个部分,如果查询不起效,会导致页面无法实现预期的效果。究其原因,其实是Vue对CSS样式的处理机制和我们在媒体查询时的习惯不太一样。 原因分…

    css 2023年6月10日
    00
  • html5+css如何实现中间大两头小的轮播效果

    HTML5+CSS如何实现中间大两头小的轮播效果 在 HTML5+CSS 中,我们可以使用 flexbox 布局和 transform 属性来实现中间大两头小的轮播效果。下面是完整攻略,包含了如何使用这两种方法实现轮播效果的过程和两个示例说明。 方法一:使用 flexbox 布局 我们可以使用 flexbox 布局来实现中间大两头小的轮播效果。例如: &lt…

    css 2023年5月18日
    00
  • 一波CSS高级实用技巧小结

    一波CSS高级实用技巧小结 在前端开发中,CSS作为布局和样式定义的主要工具,扮演着非常重要的角色。除了常见的基础知识,例如盒模型、选择器、样式继承等,我们还需要掌握一些高级实用技巧,来提高效率和实现更复杂的需求。 1. 利用CSS变量实现主题切换 在实现网页主题切换的过程中,我们通常会使用JavaScript来动态修改CSS属性值。但是,CSS变量提供了一…

    css 2023年6月9日
    00
  • CSS制作可输入内容的table表格

    下面是CSS制作可输入内容的table表格的完整攻略。 一、准备工作 在开始制作可输入内容的table表格之前,需要先准备好以下工作: HTML文档中已经存在一个table元素; 在table元素中已经为每个单元格创建好了input元素。 二、基本样式设置 首先,我们需要对table表格进行基本的样式设置,包括调整边框、字体大小、行高等等。这里我将以一个示例…

    css 2023年6月10日
    00
  • CSS3实现滚动条动画效果代码分享

    下面是“CSS3实现滚动条动画效果代码分享”的完整攻略: 1.基础知识 在开始实现滚动条动画效果之前,需要了解一些基础知识。首先,滚动条是指在浏览器中出现的竖向或横向的滚动条,在页面中用于控制页面的滚动。其次,CSS3提供了一些新的伪元素和属性,可以用来实现滚动条的样式和动画效果。 常用的伪元素和属性包括: ::-webkit-scrollbar:用于设置滚…

    css 2023年6月10日
    00
  • JavaScript动态添加css样式和script标签

    关于JavaScript动态添加CSS样式和Script标签,具体步骤如下: 动态添加CSS样式 可以使用DOM创建一个新的style元素,然后将其插入到head标签中,代码如下: // 创建style元素 var style = document.createElement(‘style’); // 设置样式内容 style.innerHTML = &qu…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部