php - 在 tbody 内具有垂直滚动的程式化 HTML 表格

标签 php html css

今天我试验了 HTML 表格并从 MySQL 数据库中填充它们。我的代码很好地满足了我的需要,表格看起来像这样:

http://codepen.io/anon/pen/ogYRwj

但是,在将它实际集成到我的网站时,我遇到了一个主要问题。我使用 include 语句来显示我的表格以及我的菜单以在我的所有网页之间交换。表格显示如下:

what the actual heck!?

所以我试验了 tbody.td 的宽度元素,我最终更改了这段代码:

thead th,tbody td {
    width: 20%;
    float: left;
    border-right: 1px solid black;
}

为此:

tbody td{
    width: 10%;
    float: left;
    border-right: 1px solid black;
}

thead th {
    width: 20%;
    float: left;
    border-right: 1px solid black;
}

不知何故,它真的奏效了!但是 thead.th 之间的线条元素没有与 tbody.td 的行对齐其他设备(例如我的 android)上的元素,但它有效:

enter image description here

当我使用 PHP 语句 include /path/to/file.php 包含它时,该代码有效, 但现在如果我尝试直接查看/path/to/file.php 它看起来真的很奇怪,类似于上面的第一张图片!

现在我想不通第一个版本有什么问题,如何在Android等其他设备上正常显示?

请拯救 CSS 和 PHP 向导!

(编辑:


  • HTML output与本地几乎相同,除了 使用 MySQL 数据库的结果。

  • 表格被放入一个 PHP 文件中,我在其中使用

  • 链接到 CSS 文件

<link rel="stylesheet" type="text/css" href="path/to/style.css">

  • 我有一个主要的 PHP 文件 (index.php),我使用名为 getPage 的函数将包含 HTML 表 (logs.php) 的 PHP 文件包含在其中。

这是 index.php 的代码:

<?php
require_once(dirname(__FILE__) . '/functions/functions.php');

getPage('includes','home');
?>
<html>
    <head>
        <title>Fågelmatare</title>
    </head>
    <body>
        <h3>Fågelmatare</h3>
        <hr />

        <a href="?page=home">Home</a> |
        <a href="?page=logs">Logs</a> |
        <a href="?page=videos">Videos</a> |
        <a href="?page=about">About</a>
        <hr />

        <?php
            if(!isset($_GET['page'])){
                getPage('includes','home');
            }else{
                getPage('includes',$_GET['page'], 'home');
            }
        //switch($_GET['page']{
        ?>
    </body>
</html>

我点击 <a href="?page=logs">Logs</a>显示我的表格的超链接(在 logs.php 中)。

在 functions.php 中

<?php

function getPage($dir, $filename, $default = false){
    $root = $_SERVER['DOCUMENT_ROOT'];
    $path = $root . '/' . $dir;
    if(is_dir($path)){
        if(file_exists($path . '/' . $filename . '.php')){
            include $path . '/' . $filename . '.php';
            return true;
        }

        if(file_exists($path . '/' . $filename . '.html')){
            include $path . '/' . $filename . '.html';
            return true;
        }

        if($default){
            if(file_exists($path . '/' . $default . '.php')){
                include $path . '/' . $default . '.php';
                return true;
            }

            if(file_exists($path . '/' . $default . '.html')){
                include $path . '/' . $default . '.html';
                return true;
            }
        }
    }
    return false;
}
?>

这是 logs.php 的源代码

  • 我使用 nginx 作为我的网络服务器,在 Raspberry Pi 上运行。

)

最佳答案

我有另一种方法,尽管跨浏览器支持仍然不是很好。它使用 position:sticky,因此您需要在 Safari 中进行测试或为 position:sticky 启用实验性标志。

这是实验: http://codepen.io/jpdevries/pen/vLVbpQ?editors=1100

这个想法是你包装 <table><div> , 设置 <div>position:relative然后简单地设置 <thead>position:sticky;top:0; .

然后您可以设置 max-heightoverflow在 wrapper 上 <div>使它可滚动。当它滚动时,<thead>会坚持到顶部。

不可否认,这是一种“廉价技巧”,因为正如您在下面看到的那样,滚动条从 <table> 的顶部开始。 , 不是 <tbody> 的顶部.它既快速又简单,一旦浏览器支持稳定下来应该会更相关。

screenshot of table with sticky thead and scrollbars

关于php - 在 tbody 内具有垂直滚动的程式化 HTML 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839228/

相关文章:

php - 如何使用数据库中的数据动态创建新表(php)?

php - 为什么我的 SELECT 代码不起作用?

html - 图像未在导航栏中正确调整大小。 { Bootstrap }

javascript - 使用 CSS 动画和 javascript 构建自定义 slider

html - 如何将其中一列的文本居中

html - 响应式菜单问题 - 单击时不打开

PHP - 将由 CSV 制成的二维数组重新格式化为适合 MYSQL 导入的模式

php - 在 Woocommerce 单品中将价格移动到简短描述下方

html - Bootstrap Collapsing Navbar 在 Chrome for Android 上出错

html - 在图像上居中文本