【问题标题】:Creating a metro UI like page创建类似地铁 UI 的页面
【发布时间】:2014-08-25 11:31:53
【问题描述】:

我想创建一个类似于 Windows 8 Metro UI 的设计,如下图所示:

这些跨度中的每一个都链接到我服务器上的一个子页面。磁贴的 URL、内容和背景图像都是从 MySQL 数据库加载的,因此没有任何内容是硬编码的。我正在使用 Twitter Bootstrap 进行设计。

每个图块有三种不同的可能尺寸:

  • 大(跨度 1
  • 中等(跨度 7
  • 小(跨度 2

我可以轻松处理中小型瓷砖,因为它们中的每一个都只跨越一排。小瓷砖使用col-md-3,大中瓷砖使用col-md-6。我可以想到这样的设计所需的标记:

<div class='row'>
    <span class='size-large col-md-6'>span 1</span>
    <span>
        <span class='row'>
            <span class='size-small col-md-3'>span 2</span>
            <span class='size-small col-md-3'>span 3</span>
        </span>
        <span class='row'>
            <span class='size-small col-md-3'>span 4</span>
            <span class='size-small col-md-3'>span 5</span>
        </span>
    </span>
</div>
<div class='row'>
    <span class='size-small col-md-3'>span 6</span>
    <span class='size-medium col-md-6'>span 7</span>
    <span class='size-small col-md-3'>span 8</span>
</div>
<div class='row'>
    <span class='row'>
        <span class='size-medium col-md-6'>span 9</span>
    </span>
    <span>
        <span class='size-small col-md-3'>span 11</span>
        <span class='size-small col-md-3'>span 12</span>
    </span>
    <span class='size-large col-md-6'>span 10</span>
</div>

到目前为止,一切都很容易理解。但这里开始困难的部分:从数据库加载磁贴数据后动态创建标记。

这些是我拥有的值:$size$name$description$background

我是从这个开始的:

$width = 0;
echo "<div class='row'>";
foreach (Project::getAllTiles() as $i => $project) {
    $thisWidth = 0;
    list($size, $name, $description, $image) =
        array($project['size'], $project['name'], $project['description'], $project['background']);
    $thisWidth = $size == 'small' ? 3 : 6; // Width of this tile
    $width += $thisWidth; // Width of current row
    if ($width > 12) {
        echo "</div><div class='row'>"; // Jump to next row
        $width = 0; // Reset width of row
    }
    echo "<div class='col-md-$thisWidth size-$size'>";
        echo $name; // Placeholder
    echo "</div>";
}
echo "</div>";

这适用于中小型瓷砖。但是,我无法想象一种简单的方法来处理跨越两行的大瓷砖。我希望有人能给我一些关于如何做到这一点或一些 sn-ps 的提示,以便我自己尝试一下。

【问题讨论】:

标签: php html css twitter-bootstrap-3


【解决方案1】:

经过更多研究,我发现了一个能够完全实现我想要实现的引导框架。 Gerald Schneider suggested me 使用 Metro Bootstrap,根据我的测试,它并不能真正用于多行图块。

Metro UI 然而是 (working demo)。我仍然无法弄清楚如何通过 PHP 动态创建此标记,因此我将使用更简单的现有 Metro UI。

【讨论】:

    【解决方案2】:

    这可以使用 Metro UI 来完成。 Metro UI 实现将在下一节中逐步介绍。

    第 1 步

    https://github.com/olton/Metro-UI-CSS 下载 Metro-UI-CSS-master zip 文件。 解压这个zip文件,解压后会生成'Metro-UI-CSS-master'文件夹。

    第 2 步

    将“Metro-UI-CSS-master”文件夹复制到所需目录。 我将它复制到我的项目文件夹的css文件夹中 我的项目文件夹:-C:\xampp\htdocs\xampp\doc\ 我的css文件夹:-C:\xampp\htdocs\xampp\doc\user\css

    将“/Metro-UI-CSS-master”复制到 css 文件夹后,文件夹结构如下所示。

    C:/xampp/htdocs/xampp/doc/user/css/Metro-UI-CSS-master/

    第三步

    将 Metro-UI 框架链接到我们的 html 代码。 我将下面的代码复制到“index.tpl”中。“index.tpl”放在文件夹“C:\xampp\htdocs\xampp\doc\user\html”中,它可以工作。

    <link href="css/Metro-UI-CSS-master/build/css/metro.css" rel="stylesheet">
    <link href="css/Metro-UI-CSS-master/build/css/metro-icons.css" rel="stylesheet">
    <script src="http://metroui.org.ua/js/jquery-2.1.3.min.js"></script>
    <script src="css/Metro-UI-CSS-master/build/js/metro.js"></script>
    

    <link href="http://metroui.org.ua/css/metro.css" rel="stylesheet">
    <link href="http://metroui.org.ua/css/metro-icons.css" rel="stylesheet">
    <script src="http://metroui.org.ua/js/jquery-2.1.3.min.js"></script>
    <script src="http://metroui.org.ua/js/metro.js"></script>
    

    完整代码(实现metro UI的示例代码)

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="description" content="Metro, a sleek, intuitive, and powerful framework for faster and easier web development for Windows Metro Style.">
    <meta name="keywords" content="HTML, CSS, JS, JavaScript, framework, metro, front-end, frontend, web development">
    <meta name="author" content="Sergey Pimenov and Metro UI CSS contributors">
    <link rel='shortcut icon' type='image/x-icon' href='../favicon.ico' />
    <title>Sample Metro</title>
    <link href="css/Metro-UI-CSS-master/build/css/metro.css" rel="stylesheet">
    <link href="css/Metro-UI-CSS-master/build/css/metro-icons.css" rel="stylesheet">
    <script src="http://metroui.org.ua/js/jquery-2.1.3.min.js"></script>
    <script src="css/Metro-UI-CSS-master/build/js/metro.js"></script>
    </head>
    <body>
    <h1>Hello world!</h1>
    <div class="countdown" data-role="countdown" data-days="2"></div>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2012-08-16
      相关资源
      最近更新 更多