电子商务网站项目未在响应式 tablet/mobile 视图中正确显示

Ecommerce site items not shown properly in responsive tablet/mobile view

我在一个小型电子商务网站上工作。

这是网络浏览器上的视图:

它并不完美,但足以满足我的需求。

问题出在使用较小的设备浏览网页时。 这是将浏览器宽度减小到平板电脑尺寸的视图:

正在合并项目。

这是网站的代码:

<?php
//index.php
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Sdocks</title>
        <script src="js/jquery.min.js"></script>
        <link rel="stylesheet" href="css/bootstrap.min.css" />
        <script src="js/bootstrap.min.js"></script>
        <style>
        .popover
        {
            width: 100%;
            max-width: 800px;
        }
        </style>
    </head>
    <body>
        <div class="container">
            <br />
            <h3 align="center"><a href="#">Sdocks</a></h3>
            <br />
            <nav class="navbar navbar-default" role="navigation">
                <div class="container-fluid">
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
                        <span class="sr-only">Menu</span>
                        <span class="glyphicon glyphicon-menu-hamburger"></span>
                        </button>
                        <a class="navbar-brand" href="/">Cart</a>
                    </div>
                    
                    <div id="navbar-cart" class="navbar-collapse collapse">
                        <ul class="nav navbar-nav">
                            <li>
                                <a id="cart-popover" class="btn" data-placement="bottom" title="Shopping Cart">
                                    <span class="glyphicon glyphicon-shopping-cart"></span>
                                    <span class="badge"></span>
                                    <span class="total_price">$ 0.00</span>
                                </a>
                            </li>
                        </ul>
                    </div>
                    
                </div>
            </nav>
            <div id="popover_content_wrapper" style="display: none">
                <span id="cart_details"></span>
                <div align="right">
                    <a href="#" class="btn btn-primary" id="check_out_cart">
                    <span class="glyphicon glyphicon-shopping-cart"></span> Check out
                    </a>
                    <a href="#" class="btn btn-default" id="clear_cart">
                    <span class="glyphicon glyphicon-trash"></span> Clear
                    </a>
                </div>
            </div>

            <div id="display_item">


            </div>
            
        </div>
    </body>
</html>

<script>  
$(document).ready(function(){

    load_product();

    load_cart_data();
    
    function load_product()
    {
        $.ajax({
            url:"fetch_item.php",
            method:"POST",
            success:function(data)
            {
                $('#display_item').html(data);
            }
        });
    }

    function load_cart_data()
    {
        $.ajax({
            url:"fetch_cart.php",
            method:"POST",
            dataType:"json",
            success:function(data)
            {
                $('#cart_details').html(data.cart_details);
                $('.total_price').text(data.total_price);
                $('.badge').text(data.total_item);
            }
        });
    }

    $('#cart-popover').popover({
        html : true,
        container: 'body',
        content:function(){
            return $('#popover_content_wrapper').html();
        }
    });

    $(document).on('click', '.add_to_cart', function(){
        var product_id = $(this).attr("id");
        var product_name = $('#name'+product_id+'').val();
        var product_price = $('#price'+product_id+'').val();
        var product_quantity = $('#quantity'+product_id).val();
        var action = "add";
        if(product_quantity > 0)
        {
            $.ajax({
                url:"action.php",
                method:"POST",
                data:{product_id:product_id, product_name:product_name, product_price:product_price, product_quantity:product_quantity, action:action},
                success:function(data)
                {
                    load_cart_data();
                    alert("Item has been Added into Cart");
                }
            });
        }
        else
        {
            alert("lease Enter Number of Quantity");
        }
    });

    $(document).on('click', '.delete', function(){
        var product_id = $(this).attr("id");
        var action = 'remove';
        if(confirm("Are you sure you want to remove this product?"))
        {
            $.ajax({
                url:"action.php",
                method:"POST",
                data:{product_id:product_id, action:action},
                success:function()
                {
                    load_cart_data();
                    $('#cart-popover').popover('hide');
                    alert("Item has been removed from Cart");
                }
            })
        }
        else
        {
            return false;
        }
    });

    $(document).on('click', '#clear_cart', function(){
        var action = 'empty';
        $.ajax({
            url:"action.php",
            method:"POST",
            data:{action:action},
            success:function()
            {
                load_cart_data();
                $('#cart-popover').popover('hide');
                alert("Your Cart has been clear");
            }
        });
    });
    
});

</script>

这是创建每个项目视图布局的 php 文件:

<?php

//fetch_item.php

include('database_connection.php');

$query = "SELECT * FROM tbl_product ORDER BY id DESC";

$statement = $connect->prepare($query);

if($statement->execute())
{
    $result = $statement->fetchAll();
    $output = '';
    foreach($result as $row)
    {
        $output .= '
        <div class="col-md-3" style="margin-top:12px;">  
            <div style="border:1px solid #333; background-color:#f1f1f1; border-radius:5px; padding:16px; height:350px;" align="center">
                <img src="../administrar/application/admin/productos/'.$row["image"].'" class="img-responsive" /><br />
                <h4 class="text-info">'.$row["name"].'</h4>
                <h4 class="text-danger">$ '.$row["price"] .'</h4>
                <input type="text" name="quantity" id="quantity' . $row["id"] .'" class="form-control" value="1" />
                <input type="hidden" name="hidden_name" id="name'.$row["id"].'" value="'.$row["name"].'" />
                <input type="hidden" name="hidden_price" id="price'.$row["id"].'" value="'.$row["price"].'" />
                <input type="button" name="add_to_cart" id="'.$row["id"].'" style="margin-top:5px;" class="btn btn-success form-control add_to_cart" value="Add to Cart" />
            </div>
        </div>
        ';
    }
    echo $output;
}


?>

为了在 tablet/mobile UI 中获得更好的项目布局,应该更改代码中的哪些内容?

这是因为产品项目容器有 css 属性 个 height: 350px,但 img 未正确调整大小。

我建议您的图片保持相同的大小,但如果不能,您可以使用 object-fit: cover 来解决问题。

.item-content {
  border: 1px solid #333;
  background-color: #f1f1f1;
  border-radius: 5px;
  padding: 16px;
  height: 350px;
}

.img-container>img {
  width: 100%;
  max-height: 150px;
  object-fit: cover;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<div class="row">
  <div class="col-md-3" style="margin-top:12px;">
    <div class="item-content" align="center">
      <div class="img-container">
        <img src="https://via.placeholder.com/640x480.png?text=640x480" />
      </div>
      <h4 class="text-info">Awesome Product 1</h4>
      <h4 class="text-danger">$ 12.00</h4>
      <input type="text" name="quantity" id="quantity_1" class="form-control" value="1" />
      <input type="hidden" name="hidden_name" id="name_1" value="" />
      <input type="hidden" name="hidden_price" id="price_1" value="" />
      <input type="button" name="add_to_cart" id="1" style="margin-top:5px;" class="btn btn-success form-control add_to_cart" value="Add to Cart" />
    </div>
  </div>
  <div class="col-md-3" style="margin-top:12px;">
    <div class="item-content" align="center">
      <div class="img-container">
        <img src="https://via.placeholder.com/320x640.png?text=320x640" />
      </div>
      <h4 class="text-info">Awesome Product 2</h4>
      <h4 class="text-danger">$ 15.00</h4>
      <input type="text" name="quantity" id="quantity_2" class="form-control" value="1" />
      <input type="hidden" name="hidden_name" id="name_2" value="" />
      <input type="hidden" name="hidden_price" id="price_2" value="" />
      <input type="button" name="add_to_cart" id="2" style="margin-top:5px;" class="btn btn-success form-control add_to_cart" value="Add to Cart" />
    </div>
  </div>
  <div class="col-md-3" style="margin-top:12px;">
    <div class="item-content" align="center">
      <div class="img-container">
        <img src="https://via.placeholder.com/100x100.png?text=100x100" />
      </div>
      <h4 class="text-info">Awesome Product 3</h4>
      <h4 class="text-danger">$ 2.00</h4>
      <input type="text" name="quantity" id="quantity_3" class="form-control" value="1" />
      <input type="hidden" name="hidden_name" id="name_3" value="" />
      <input type="hidden" name="hidden_price" id="price_3" value="" />
      <input type="button" name="add_to_cart" id="3" style="margin-top:5px;" class="btn btn-success form-control add_to_cart" value="Add to Cart" />
    </div>
  </div>
  <div class="col-md-3" style="margin-top:12px;">
    <div class="item-content" align="center">
      <div class="img-container">
        <img src="https://via.placeholder.com/300x1000.png?text=300x1000" />
      </div>
      <h4 class="text-info">Awesome Product 4</h4>
      <h4 class="text-danger">$ 15.00</h4>
      <input type="text" name="quantity" id="quantity_4" class="form-control" value="1" />
      <input type="hidden" name="hidden_name" id="name_4" value="" />
      <input type="hidden" name="hidden_price" id="price_4" value="" />
      <input type="button" name="add_to_cart" id="4" style="margin-top:5px;" class="btn btn-success form-control add_to_cart" value="Add to Cart" />
    </div>
  </div>
</div>