搜尋
首頁web前端css教學CSS技巧分享:純CSS實作表格響應式佈局

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

CSS技巧分享:純CSS實作表格響應式佈局

今天,遇到了一个很有意思的问题,一名群友问我,仅仅使用 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"

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

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

      完整的DEMO,你可以戳這裡:CodePen Demo -- Simple Responsive Table in CSS

      原文網址:https://www .cnblogs.com/coco1s/p/16422777.html

      #作者:ChokCoco

      (學習影片分享:web前端

  • 以上是CSS技巧分享:純CSS實作表格響應式佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
    @KeyFrames vs CSS過渡:有什麼區別?@KeyFrames vs CSS過渡:有什麼區別?May 14, 2025 am 12:01 AM

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

    使用頁面CMS進行靜態站點內容管理使用頁面CMS進行靜態站點內容管理May 13, 2025 am 09:24 AM

    我知道,我知道:有大量的內容管理系統選項可用,而我進行了幾個測試,但實際上沒有一個是一個,y&#039;知道嗎?怪異的定價模型,艱難的自定義,有些甚至最終成為整個&

    鏈接HTML中CSS文件的最終指南鏈接HTML中CSS文件的最終指南May 13, 2025 am 12:02 AM

    鏈接CSS文件到HTML可以通過在HTML的部分使用元素實現。 1)使用標籤鏈接本地CSS文件。 2)多個CSS文件可通過添加多個標籤實現。 3)外部CSS文件使用絕對URL鏈接,如。 4)確保正確使用文件路徑和CSS文件加載順序,優化性能可使用CSS預處理器合併文件。

    CSS Flexbox與網格:全面評論CSS Flexbox與網格:全面評論May 12, 2025 am 12:01 AM

    選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

    如何包括CSS文件:方法和最佳實踐如何包括CSS文件:方法和最佳實踐May 11, 2025 am 12:02 AM

    包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

    Flexbox vs Grid:我應該學習兩者嗎?Flexbox vs Grid:我應該學習兩者嗎?May 10, 2025 am 12:01 AM

    是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

    軌道力學(或我如何優化CSS KeyFrames動畫)軌道力學(或我如何優化CSS KeyFrames動畫)May 09, 2025 am 09:57 AM

    重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

    CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

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

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    熱工具

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強大的PHP整合開發環境

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    VSCode Windows 64位元 下載

    VSCode Windows 64位元 下載

    微軟推出的免費、功能強大的一款IDE編輯器

    SublimeText3 Linux新版

    SublimeText3 Linux新版

    SublimeText3 Linux最新版

    SublimeText3 英文版

    SublimeText3 英文版

    推薦:為Win版本,支援程式碼提示!