如何防止侧边栏移动到中间?

时间:2017-05-03 19:45:37

标签: html css

我有一个侧栏,其中有一个产品类别列表,在主体中我创建了一个重复区域,根据点击的类别显示这些产品。如果我选择一个空的类别,设计保持不变,但是当我选择一个包含产品的类别时,侧边栏会出现在页面中间,甚至页脚也会变小。

在创建重复区域之前我没有侧边栏的问题,它没有移动或任何东西。我创造了一个小提琴,其中包含页面& css文件。如果我错过任何事情,请告诉我,因为我之前没有使用过小提琴。感谢。

https://jsfiddle.net/w4rhvbL0/1/

$ cat firstAcc.c 

#include <stdio.h>
#include <openacc.h>
#include <stdlib.h>
#include <time.h>

#define GB 50

static double wallclock()
{
  double ans = 0;
  struct timespec tp;
  if (0==clock_gettime(CLOCK_REALTIME, &tp))
      ans = (double) tp.tv_sec + 1e-9 * (double) tp.tv_nsec;
  return ans;
}

int main()
{
  int *a;

  size_t n = (size_t)GB*1024*1024*1024/sizeof(int);
  size_t s = n * sizeof(int);
  printf("n = %lu, GB = %.3f\n", n, (double)s/(1024*1024*1024));
  a = (int *)malloc(s);
  if (!a) { printf("Failed to malloc.\n"); return 1; }

  setbuf(stdout, NULL);
  double t0 = wallclock();
  printf("Initializing ... ");
  for (long i = 0; i < n; ++i) {
    a[i] = i%7-3;
  }
  double t1 = wallclock();
  printf("done in %f (single CPU thread)\n", t1-t0);
  t0=t1;

  int sum=0.0;
  #pragma acc parallel loop reduction (+:sum)
  for (long i = 0; i < n; ++i) {
    sum+=a[i];
  }
  t1 = wallclock();
  printf("Sum is %d and it took %f\n", sum, t1-t0);
  free(a);
  return 0;
}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

在您的代码中,您可以检查此条件if ($totalRows_ProductsData > 0) {

但是你没有正确关闭你的标签。这是您的代码生成的HTML:

<div class="productsresult">
    <div class="products"><p>.....</p>
        <div class="products"><p>.....</p>
            <div class="products"><p>.....</p>
</div>
<aside class="SideBar"></aside>

请注意,您不要在div循环内关闭while,因此会生成无效的HTML结构,并将aside元素放在未关闭的{{1}内循环导致的标签。

浏览器&#34;修复&#34;这个未封闭的标签通过自动关闭它们,因此您最终可以得到以下结构:

div

要解决此问题,您需要更改以下内容:

<div class="productsresult">
    <div class="products"><p>.....</p>
        <div class="products"><p>.....</p>
            <div class="products"><p>.....</p></div>
            <aside class="SideBar"></aside>
            <Footer class="Footer">....</Footer>
       </div>
   </div>
</div>

上面的代码将产生以下代码:

<div class="productsresult">
<?php if ($totalRows_ProductsData > 0) { // Show if recordset not empty ?>
    <?php do { ?>
        <div class="products"> 
            <p>
                <?php echo $row_ProductsData['product_name']; ?>
                <?php echo $row_ProductsData['price']; ?>
                <?php echo $row_ProductsData['image']; ?>
            </p>
        </div>
    <?php } while ($row_ProductsData = mysql_fetch_assoc($ProductsData)); ?>
<?php } // Show if recordset not empty ?>
<?php if ($totalRows_ProductsData == 0) { // Show if recordset empty ?>
    There are no products in this category!
<?php } // Show if recordset empty ?>
</div>

<aside class="SideBar">
    <?php include ("/includes/catalogue.php"); ?>
</aside>

请注意,如果您只需要一个产品包装div,则应将代码更改为:

<div class="productsresult">
    <div class="products"><p>.....</p></div>
    <div class="products"><p>.....</p></div>
    <div class="products"><p>.....</p></div>
</div>
<aside class="SideBar"></aside>

这将产生以下结构:

<div class="productsresult">
<?php if ($totalRows_ProductsData > 0) { // Show if recordset not empty ?>
    <div class="products"> 
        <?php do { ?>
            <p>
                <?php echo $row_ProductsData['product_name']; ?>
                <?php echo $row_ProductsData['price']; ?>
                <?php echo $row_ProductsData['image']; ?>
            </p>
        <?php } while ($row_ProductsData = mysql_fetch_assoc($ProductsData)); ?>
    </div>
<?php } // Show if recordset not empty ?>
<?php if ($totalRows_ProductsData == 0) { // Show if recordset empty ?>
    There are no products in this category!
<?php } // Show if recordset empty ?>
</div>