0

0

HTML布局技巧:如何在表格旁并排显示图片与表单

DDD

DDD

发布时间:2025-10-07 10:05:50

|

565人浏览过

|

来源于php中文网

原创

HTML布局技巧:如何在表格旁并排显示图片与表单

本文旨在解决HTML元素默认堆叠问题,特别是如何在现有表格的右侧放置图片和表单。我们将通过详细的教程,重点介绍如何利用Bootstrap的网格系统实现这种并排布局,并提供示例代码和最佳实践,帮助您构建结构清晰、响应式的网页界面。

理解HTML默认布局行为

html中,大多数元素(如<div>、<p>、<table>、<form>) 默认是块级元素。块级元素会独占一行,并尽可能占据父容器的全部可用宽度,导致后续元素默认从新的一行开始显示。这就是为什么当您在表格之后添加图片或另一个表单时,它们会出现在表格下方的原因。要实现并排布局,我们需要借助css布局技术来改变元素的默认流向。

使用Bootstrap Grid实现表格与旁侧元素的并排布局

鉴于您在现有代码中已经使用了Bootstrap框架(通过row和col-md等类),最推荐且最便捷的解决方案是继续利用Bootstrap的强大网格系统。Bootstrap Grid提供了一个响应式、移动优先的弹性布局方案,能够轻松实现复杂的页面结构。

核心思想: 将表格和您希望放置在右侧的内容(例如图片和第二个表单)包裹在一个共同的div容器中,并为这个容器应用row类。然后,在这个row内部创建两个列(col-md-*),一个用于表格,另一个用于右侧内容。通过调整col-md-*中的数字,您可以控制它们在不同屏幕尺寸下的相对宽度。

实现步骤:

  1. 创建主行容器: 在您的表格上方或下方(根据您的整体布局需求),创建一个新的div,并为其添加class="row"。这个row将作为表格和右侧内容的父容器。
  2. 定义表格列: 在row内部,为您的表格创建一个div,并为其添加适当的Bootstrap列类,例如class="col-md-8"。这将使表格占据中等及以上屏幕尺寸下行的8个网格单位。
  3. 定义右侧内容列: 紧接着表格列,创建另一个div,并为其添加剩余的列类,例如class="col-md-4"。这个div将用于容纳您希望在表格右侧显示的所有内容(图片、第二个表单等)。
  4. 放置内容: 将您的现有表格代码放入第一个列div中。将图片和第二个表单的代码放入第二个列div中。

示例代码:

以下是一个修改后的HTML片段,展示了如何使用Bootstrap Grid将表格与右侧的图片和表单并排显示。请注意,为了演示,我添加了占位图片和第二个表单的结构。

立即学习前端免费学习笔记(深入)”;

{% extends 'login/basic.html' %}
{% block title %}Approval of count{% endblock title %}
{% block body %}

<!-- 顶部表单 (您的现有代码) -->
<form action="/approval" method="post">{% csrf_token %}
    <div class="row g-2">
        <div class="col-md">
            <div class="form-floating">
                <input type="date" class="form-control" id="floatingInputGrid" name="date">
                <label for="floatingInputGrid">Shift Date</label>
            </div>
        </div>
        <div class="col-md">
            <div class="form-floating">
                <select name="serverName" class="form-select" id="floatingSelectGrid">
                    <option selected>Server Name</option>
                    {% for server in serverLst %}
                    <option value="{{server}}">{{server}}</option>
                    {% endfor %}
                </select>
                <label for="floatingSelectGrid">Select your server</label>
            </div>
        </div>
        <div class="col-md">
            <div class="form-floating">
                <button type="submit" class="btn btn-primary mx-5 my-2" id="floatingInputGrid">Submit</button>
            </div>
        </div>
    </div>
</form>

<!-- 新增的行容器,用于并排显示表格和右侧内容 -->
<div class="row mt-4"> <!-- mt-4 为顶部外边距,使内容与上方表单有间距 -->

    <!-- 左侧列:放置表格 -->
    <div class="col-md-8"> <!-- 表格占据8/12的宽度 -->
        <table class="table" style="width:100%"> <!-- 表格宽度调整为100%以适应列宽 -->
            <thead>
                <tr>
                    <th scope="col">User name</th>
                    <th scope="col">Starting</th>
                    <th scope="col">Ending</th>
                    <th scope="col">Bonus</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <th scope="row">1</th>
                    <td>Mark</td>
                    <td>Otto</td>
                    <td>@mdo</td>
                </tr>
                <tr>
                    <th scope="row">2</th>
                    <td>Jacob</td>
                    <td>Thornton</td>
                    <td>@fat</td>
                </tr>
                <tr>
                    <th scope="row">3</th>
                    <td colspan="2">Larry the Bird</td>
                    <td>@twitter</td>
                </tr>
            </tbody>
        </table>
    </div>

    <!-- 右侧列:放置图片和第二个表单 -->
    <div class="col-md-4"> <!-- 右侧内容占据4/12的宽度 -->
        <div class="d-flex flex-column align-items-center"> <!-- 使用Flexbox垂直堆叠图片和表单 -->
            <h5>相关图片</h5>
            <img src="https://via.placeholder.com/150" alt="Placeholder Image 1" class="img-fluid mb-3">
            <img src="https://via.placeholder.com/150" alt="Placeholder Image 2" class="img-fluid mb-3">

            <h5 class="mt-4">第二个表单</h5>
            <form action="/another_action" method="post" class="w-100">{% csrf_token %}
                <div class="mb-3">
                    <label for="inputField1" class="form-label">输入字段 1</label>
                    <input type="text" class="form-control" id="inputField1" name="field1">
                </div>
                <div class="mb-3">
                    <label for="inputField2" class="form-label">输入字段 2</label>
                    <input type="text" class="form-control" id="inputField2" name="field2">
                </div>
                <button type="submit" class="btn btn-success w-100">提交表单 2</button>
            </form>
        </div>
    </div>

</div> <!-- 结束 row -->

{% endblock %}

代码说明:

百宝箱
百宝箱

百宝箱是支付宝推出的一站式AI原生应用开发平台,无需任何代码基础,只需三步即可完成AI应用的创建与发布。

下载
  • div class="row mt-4": 创建了一个新的行,mt-4是Bootstrap提供的外边距工具类,增加了顶部外边距,使这部分内容与上面的表单保持一定距离。
  • div class="col-md-8": 这个列用于容纳表格。col-md-8表示在中等(md)及以上屏幕尺寸下,该列将占据父行12个网格单位中的8个。
  • div class="col-md-4": 这个列用于容纳右侧内容(图片和第二个表单)。col-md-4表示在中等(md)及以上屏幕尺寸下,该列将占据父行12个网格单位中的4个。8 + 4 = 12,正好填满一行。
  • table style="width:100%": 将表格的宽度设置为100%,使其能够完全填充其父列(col-md-8)的可用空间。
  • d-flex flex-column align-items-center: 在右侧列内部,我使用了Bootstrap的Flexbox工具类。d-flex使其成为一个Flex容器,flex-column使内部项目垂直堆叠,align-items-center使内部项目在交叉轴(这里是水平方向)上居中。
  • img-fluid: Bootstrap提供的图片响应式类,确保图片宽度不超过其父容器,并随容器尺寸缩放。
  • mb-3,mt-4,w-100: 这些是Bootstrap的间距和宽度工具类,用于控制元素之间的距离和宽度。

非Bootstrap环境下的CSS Flexbox/Grid方案

如果您不在Bootstrap项目中使用,或者需要更精细的控制,纯CSS的Flexbox或Grid是实现并排布局的强大工具。

1. CSS Flexbox (弹性盒子)

Flexbox 是一种一维布局模型,适用于将项目排列成一行或一列。

<style>
    .container-flex {
        display: flex; /* 声明为Flex容器 */
        justify-content: space-between; /* 子项之间留有空间,或使用 flex-start/end */
        align-items: flex-start; /* 子项顶部对齐 */
        gap: 20px; /* 子项之间的间距 */
    }
    .table-wrapper {
        flex: 2; /* 表格占据更多空间 */
        min-width: 0; /* 允许收缩 */
    }
    .side-content {
        flex: 1; /* 旁侧内容占据较少空间 */
        min-width: 0; /* 允许收缩 */
        display: flex;
        flex-direction: column;
        gap: 15px;
    }
    .side-content img {
        max-width: 100%;
        height: auto;
    }
</style>

<div class="container-flex">
    <div class="table-wrapper">
        <!-- 您的表格代码 -->
        <table class="table" style="width:100%">
            <!-- ... -->
        </table>
    </div>
    <div class="side-content">
        <!-- 您的图片和第二个表单代码 -->
        <img src="https://via.placeholder.com/150" alt="Image 1">
        <img src="https://via.placeholder.com/150" alt="Image 2">
        <form action="/another_action" method="post">
            <!-- ... -->
        </form>
    </div>
</div>

2. CSS Grid (网格布局)

CSS Grid 是一种二维布局模型,适用于将项目排列成行和列。

<style>
    .container-grid {
        display: grid; /* 声明为Grid容器 */
        grid-template-columns: 2fr 1fr; /* 定义两列,左侧2份,右侧1份 */
        gap: 20px; /* 列之间的间距 */
        align-items: start; /* 行项目顶部对齐 */
    }
    .grid-table {
        /* 表格本身不需要特殊样式,它会占据第一个网格区域 */
    }
    .grid-side-content {
        display: flex; /* 内部使用Flexbox垂直堆叠 */
        flex-direction: column;
        gap: 15px;
    }
    .grid-side-content img {
        max-width: 100%;
        height: auto;
    }
</style>

<div class="container-grid">
    <div class="grid-table">
        <!-- 您的表格代码 -->
        <table class="table" style="width:100%">
            <!-- ... -->
        </table>
    </div>
    <div class="grid-side-content">
        <!-- 您的图片和第二个表单代码 -->
        <img src="https://via.placeholder.com/150" alt="Image 1">
        <img src="https://via.placeholder.com/150" alt="Image 2">
        <form action="/another_action" method="post">
            <!-- ... -->
        </form>
    </div>
</div>

注意事项与最佳实践

  1. 选择合适的布局方式:
    • Bootstrap项目: 优先使用Bootstrap Grid系统,因为它与您的项目风格统一,并且提供了现成的响应式支持。
    • 非Bootstrap项目或需要高度定制: 推荐使用CSS Flexbox或Grid。Flexbox适用于一维布局(行或列),Grid适用于二维布局(行和列)。
  2. 响应式设计 确保您的布局在不同屏幕尺寸下都能良好显示。Bootstrap Grid天生支持响应式,通过col-sm-*、col-lg-*等类可以进一步细化。Flexbox和Grid也提供了强大的响应式能力,可以通过媒体查询(@media)进行调整。
  3. 图片优化:
    • 使用img-fluid类(Bootstrap)或max-width: 100%; height: auto;(纯CSS)确保图片在其容器内正确缩放。
    • 优化图片文件大小,以提高页面加载速度。
    • 为图片添加有意义的alt属性,提高可访问性。
  4. 表单结构:
    • 确保表单字段有清晰的label,并通过for和id属性正确关联。
    • 使用语义化的HTML标签。
  5. 避免过度使用position: absolute: 尽管position: absolute可以实现元素定位,但它会将元素从正常文档流中移除,可能导致内容重叠或难以维护响应式布局。对于常规的页面布局,应优先考虑Flexbox、Grid或浮动。

总结

实现HTML表格与旁侧元素的并排布局,关键在于改变元素的默认块级显示行为。对于使用Bootstrap框架的项目,利用其强大的网格系统是最简洁高效的方法。通过将表格和旁侧内容分别放置在row内的不同col中,您可以轻松构建出结构清晰、响应式的页面布局。即使在非Bootstrap环境中,CSS Flexbox和Grid也提供了现代且灵活的布局解决方案,帮助您精确控制页面元素的排列。选择最适合您项目需求的布局方法,并始终关注代码的可维护性和用户体验。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

870

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

30

2025.12.06

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

83

2023.11.23

flex教程
flex教程

php中文网为大家带来了flex教程合集,Flex是采用Flex布局的元素,称为Flex容器(flex container),简称"容器",它的所有子元素自动成为容器成员,有三个核心概念: flex项,需要布局的元素;flex容器,其包含flex项;排列方向,这决定了flex项的布局方向。php中文网还为大家带来flex的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

370

2023.06.14

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号