gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:58:02 27 4
gpt4 key购买 nike

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

在我创建重复区域之前,侧边栏没有问题,它没有移动或任何东西。我创建了一个包含页面和 css 文件的 fiddle 。如果我错过了什么,请告诉我,因为我以前没有使用过 fiddle 。谢谢。

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

<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<meta charset="utf-8"/>
<link rel="stylesheet" href="IndexStyle.css"/>
<meta name="viewport" content="width= device-width, intial-scale=1.0">
</head>
<body class="body">
<header class="MainHeader">
<img src="images/header-image-5.jpg">
<nav><ul>
<li class="active"><a href="index.php">Home</a></li>
<li><a href="Product.php">Products</a></li>
<li><a href="AboutUs.php">About Us</a></li>
<li><a href="ContactUs.php">Contact Us</a></li>
</ul>
</nav>
</header>
<div class="MainBody">
<h1>Products
</h1>
<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>
<?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>
</div>
<aside class="SideBar">
<?php include ("/includes/catalogue.php"); ?>
</aside>
<Footer class="Footer">
<p>Copyrights reserved
</p>

</Footer>
</body>
</html>

enter image description here

enter image description here

最佳答案

在您的代码中,您检查此条件 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>

请注意,您没有在 while 循环内关闭 div,因此它会生成无效的 HTML 结构,并将 放在一边循环产生的未闭合的 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 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>

请注意,如果您只需要一个 products wrapper div,则应将代码更改为:

<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>

这将导致以下结构:

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

关于html - 如何防止侧边栏移动到中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768716/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com