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

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日

相关文章

  • Firefox奇怪的文字溢出bug div里面的文字溢出

    针对“Firefox奇怪的文字溢出bug div里面的文字溢出”这个问题,我们可以采取以下步骤来解决: 1. 确认问题 首先我们需要确认问题的具体表现。如果发现在FireFox浏览器中,div中的文字或者图片出现了奇怪的溢出bug,那么就有可能是此问题。需要仔细确定div中的任何可能导致此问题的因素(如使用了绝对定位/浮动等)。 2. 重现问题 在解决问题的…

    css 2023年6月10日
    00
  • jquery jqPlot API 中文使用教程(非常强大的图表工具)

    首先介绍一下jqPlot。jqPlot是基于jQuery的开源图表插件,可以快速方便地创建各种精美的图表,包括线图、柱状图、饼图等等。API文档非常详细,我们可以根据需要调用相关API实现自定义的功能。接下来,按照以下步骤来讲解完整攻略。 安装及引入 首先需要下载jqPlot的最新版。解压后,将以下文件加入到页面头部: <link rel="…

    css 2023年6月10日
    00
  • 表单JS弹出填写提示效果代码

    下面是关于“表单JS弹出填写提示效果代码”的完整攻略: 什么是表单JS弹出填写提示效果代码 “表单JS弹出填写提示效果代码”是一种利用JavaScript语言实现的技术,可以应用于网站或应用程序中的表单交互中,用于增强用户体验。当用户填写表单时,该代码可以在需要填写的表单字段上进行弹出提示,引导用户进行填写。这种交互方式可以减少用户在表单填写中的错误,提高用…

    css 2023年6月10日
    00
  • React 中使用 Redux 的 4 种写法小结

    React 中使用 Redux 的 4 种写法小结指的是在 React 中集成 Redux 的四种不同的方法。这四种方法分别是: 1.传统的用法(Traditional Way) 2.React-Redux 库的用法(Using React-Redux Library) 3.Redux Hooks 的用法(Using Redux Hooks) 4.Redux…

    css 2023年6月10日
    00
  • div+css布局中的alpha 不透明度使用说明

    现在我来给您详细讲解一下”div+css布局中的alpha 不透明度使用说明” 。 什么是alpha 不透明度? 在CSS中,alpha 不透明度是指设置元素的透明度,其取值范围是从0到1,其值越靠近0,该元素就越透明;值越靠近1,该元素就越不透明。 如何使用alpha 不透明度? 在CSS中,我们可以使用opacity属性来设置元素的alpha 不透明度。…

    css 2023年6月10日
    00
  • JavaScript事件委托

    JavaScript 事件委托是一种常用的编程技巧,它可以避免为每个元素添加事件监听器。事件委托背后的思想是,将事件监听器添加到其父元素上,而不是为每个子元素添加监听器。当事件触发时,事件将从子元素冒泡到其父元素,由父元素的事件监听器处理。这种技巧可以减少代码量,提高性能。 以下是一个完整的 JavaScript 事件委托攻略: 1. 理解事件冒泡和捕获 事…

    Web开发基础 2023年3月30日
    00
  • XHTML1.0与HTML兼容指引16条 小结

    「XHTML1.0与HTML兼容指引16条小结」是一份非常重要的文档,它提供了一些在编写 XHTML 和 HTML 页面时需要注意的指导原则,确保我们的代码能够在各种浏览器和平台中顺利运行,并且可以达到良好的可访问性和可维护性。本文将详细讲解这份指引中的 16 条原则,并提供一些示例说明。 原则1:文档类型声明 在 Web 页面的顶部添加文档类型声明(DOC…

    css 2023年6月9日
    00
  • 原生javascript实现无间缝滚动示例

    下面我将详细讲解如何用原生JavaScript实现无间缝滚动的攻略。 步骤一:准备HTML文件结构 首先,我们需要准备一个包含滚动内容的HTML结构。示例结构可以是一组图片,如下所示: <div class="scroll-wrapper"> <ul class="scroll-content"&gt…

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