search
HomeWeb Front-endCSS TutorialCSS Tips Sharing: Pure CSS to Implement Table Responsive Layout

如何利用纯CSS实现表格响应式布局?下面本篇文章就来给大家分享超 Nice 的表格响应式布局小技巧,希望对大家有所帮助!

CSS Tips Sharing: Pure CSS to Implement Table Responsive Layout

今天,遇到了一个很有意思的问题,一名群友问我,仅仅使用 CSS,能否实现这样一种响应式的布局效果:

简单解析一下效果:

  • 在屏幕视口较为宽时,表现为一个整体 Table 的样式

  • 而当屏幕视口宽度较小时,原 Table 的每一行数据单独拆分为一个 Table 进行展示

很有意思的一个响应式布局,让信息在小屏幕下得到了一种不错的展示。

那么,仅仅使用 CSS 的话,能否实现这样一个布局呢?答案是可以的。【推荐学习:css视频教程

首先,肯定会用到媒体查询,这个不难看出。另外,我们观察下拆分后的每一组数据:

都会存在一组原本整体一个 Table 时的表头信息,主要的难点就是在这里,我们如何在拆分成一个一个的子 Table 展示时,同时展示这些表头信息?

基本结构的实现

首先,我们先实现常规宽屏下的 HTML 及对应的 CSS。

比较简单,这里没有什么特殊之处,使用 <table> 标签或者使用 div、ul 等标签进行模拟一个表格都可以。<pre class="brush:php;toolbar:false"></pre> <table>   <caption>Lorem ipsum !</caption>   <thead>     <tr>       <th>Account</th>       <th>Due Date</th>       <th>Amount</th>       <th>Period</th>     </tr>   </thead>   <tbody>     <tr>       <td>Visa - 3412</td>       <td>04/01/2016</td>       <td>$1,190</td>       <td>03/01/2016 - 03/31/2016</td>     </tr>     // ... 重复多组   </tbody> </table> <p>得到这样一个简单的 Table:</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/cc35c8abe4f601f6e51378f694df082b-2.png?x-oss-process=image/resize,p_40" class="lazy" alt="" loading="lazy"></p> <h2 id="strong-使用媒体查询将单个-Table-拆分成多个-strong"><strong>使用媒体查询将单个 Table 拆分成多个</strong></h2> <p>下一步也很简单,设定合适的阈值(视实际业务情况而定),使用媒体查询将单个 Table 拆分成多个子 Table。</p> <pre class="brush:php;toolbar:false">@media screen and (max-width: 600px) {   table {     border: 0;   }     table thead {     display: none;   }   table tr {     display: block;     margin-bottom: 10px;   }   table td {     border-bottom: 1px solid #ddd;     display: block;   } }</pre> <p>这里做的事情也非常简单:</p> <ul style="list-style-type: disc;"> <li><p>利用媒体查询,设定屏幕宽度小于 <code>600px 的样式

  • 去掉原本表格的 <thead> 表头,直接隐藏即可<li><p>将原本的一行 <code><tr>,设置为 <code>display: block, 并且设置一个下边距,使之每一个分开

  • 将原本的一行内的 <td>,设置为 <code>display: block,这样,它们就会竖向排列,使每一个 <tr> 形成新的一个子 table<p>好,这样,再屏幕宽度小于 <code>600px 时,我们就得到了这样一个 Table:

    借助伪元素及其特性,实现表头信息展示

    下面一步,也就是最为关键的一步,我们如何在子 table 的每一行,也就是 <td> 内,再展示原本的表头信息呢?<p>这里其实也非常简单,只是简单的运用了伪元素,极其可以读取 HTML 标签属性的小特性实现。</p> <p>我们只需要简单改造一下代码,给每个 <code><td> 的 HTML,带上与之对应的表头列描述信息:<pre class="brush:php;toolbar:false"></pre> <table>   // 上方信息保持一致   <tbody>     <tr>       <td>Visa - 3412</td>       <td>04/01/2016</td>       <td>$1,190</td>       <td>03/01/2016 - 03/31/2016</td>     </tr>     <tr>       <td>Visa - 6076</td>       <td>03/01/2016</td>       <td>$2,443</td>       <td>02/01/2016 - 02/29/2016</td>     </tr>     // ... 每个 tr 进行同样的处理   </tbody> </table> <p>接着,借助 td 的伪元素,实现表头信息的展示即可:</p> <pre class="brush:php;toolbar:false">@media screen and (max-width: 600px) {   // ... 保持一致   table td {     position: relative;     display: block;     text-align: right;   }   table td::before {     position: absolute;     left: 10px;     right: 0;     content: attr(data-label);   } }</pre> <p>这里,我们核心的知识点就是利用了元素的伪元素可以在 <code>content 属性里,读取其 HTML 元素内的属性内容,并进行展示的知识点。

    • 假设一个 HTML 标签定义为: <div data-msg="ABC"> <li><p>那么该 div 对应的伪类如果设置了 <code>content: attr(data-msg) ,就可以读取到 data-msg 的值,相当于 content:"ABC"

    • 这样,我们在小屏幕下,就得到了这样一种效果:

      完整的效果,即如题图所示:

      For the complete DEMO, you can click here: CodePen Demo -- Simple Responsive Table in CSS

      Original address: https://www .cnblogs.com/coco1s/p/16422777.html

      Author: ChokCoco

      (Learning video sharing: web front-end)

  • The above is the detailed content of CSS Tips Sharing: Pure CSS to Implement Table Responsive Layout. For more information, please follow other related articles on the PHP Chinese website!

    Statement
    This article is reproduced at:博客园. If there is any infringement, please contact admin@php.cn delete
    @keyframes vs CSS Transitions: What is the difference?@keyframes vs CSS Transitions: What is the difference?May 14, 2025 am 12:01 AM

    @keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

    Using Pages CMS for Static Site Content ManagementUsing Pages CMS for Static Site Content ManagementMay 13, 2025 am 09:24 AM

    I know, I know: there are a ton of content management system options available, and while I've tested several, none have really been the one, y'know? Weird pricing models, difficult customization, some even end up becoming a whole &

    The Ultimate Guide to Linking CSS Files in HTMLThe Ultimate Guide to Linking CSS Files in HTMLMay 13, 2025 am 12:02 AM

    Linking CSS files to HTML can be achieved by using elements in part of HTML. 1) Use tags to link local CSS files. 2) Multiple CSS files can be implemented by adding multiple tags. 3) External CSS files use absolute URL links, such as. 4) Ensure the correct use of file paths and CSS file loading order, and optimize performance can use CSS preprocessor to merge files.

    CSS Flexbox vs Grid: a comprehensive reviewCSS Flexbox vs Grid: a comprehensive reviewMay 12, 2025 am 12:01 AM

    Choosing Flexbox or Grid depends on the layout requirements: 1) Flexbox is suitable for one-dimensional layouts, such as navigation bar; 2) Grid is suitable for two-dimensional layouts, such as magazine layouts. The two can be used in the project to improve the layout effect.

    How to Include CSS Files: Methods and Best PracticesHow to Include CSS Files: Methods and Best PracticesMay 11, 2025 am 12:02 AM

    The best way to include CSS files is to use tags to introduce external CSS files in the HTML part. 1. Use tags to introduce external CSS files, such as. 2. For small adjustments, inline CSS can be used, but should be used with caution. 3. Large projects can use CSS preprocessors such as Sass or Less to import other CSS files through @import. 4. For performance, CSS files should be merged and CDN should be used, and compressed using tools such as CSSNano.

    Flexbox vs Grid: should I learn them both?Flexbox vs Grid: should I learn them both?May 10, 2025 am 12:01 AM

    Yes,youshouldlearnbothFlexboxandGrid.1)Flexboxisidealforone-dimensional,flexiblelayoutslikenavigationmenus.2)Gridexcelsintwo-dimensional,complexdesignssuchasmagazinelayouts.3)Combiningbothenhanceslayoutflexibilityandresponsiveness,allowingforstructur

    Orbital Mechanics (or How I Optimized a CSS Keyframes Animation)Orbital Mechanics (or How I Optimized a CSS Keyframes Animation)May 09, 2025 am 09:57 AM

    What does it look like to refactor your own code? John Rhea picks apart an old CSS animation he wrote and walks through the thought process of optimizing it.

    CSS Animations: Is it hard to create them?CSS Animations: Is it hard to create them?May 09, 2025 am 12:03 AM

    CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

    See all articles

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Article

    Hot Tools

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Linux new version

    SublimeText3 Linux new version

    SublimeText3 Linux latest version

    MantisBT

    MantisBT

    Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    Integrate Eclipse with SAP NetWeaver application server.