You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目中Div及其内部元素居中问题求助

Django页面内容居中问题修复方案

问题需求

做第一个Django项目,需要实现:

  • 一个承载除导航栏外所有内容的div容器,位于屏幕正中央,宽度占比50%
  • 容器内所有元素也需居中显示

当前页面效果:
当前页面显示效果

原模板代码

<html><style>
    body {
        margin: 0;
        padding: 0;
    }
    img[src="/media/images/crate_bar.png"] {
        margin: 0;
        padding: 0;
        display: block;
        width: 100%;
        height: auto;
        box-sizing: border-box;
    }
    img[src="/media/images/logo.png"] {
        position: absolute;
        display: block;
        width: auto;
        height: auto;
        left: 50%;
        transform: translateX(-50%);
        top: 0;
    }
    #logo {
        display: flex;
        justify-content: center;
        align-items: center;
        text-align: center;
    }
    #main_container {
        display: flex;
        justify-content: center;
        align-items: center;
    }
    #second_container {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 50%;
    }
</style><div id="logo">
    <img src="/media/images/crate_bar.png">
    <a href="{% url 'mainapp:home_view' %}"><img src="/media/images/logo.png" alt="logo"></a>
</div><h1>
    {% if user.is_superuser %}
    <a href="{% url 'mainapp:new_article' %}"><button type=" button">New article</button></a>
    {% endif %}
    {% block content %}
    <div id="main_container">
        <div id="second_container">
            <ul>
                {% for article in list_of_articles %}
                {% if article.article_image %}
                <img src="{{article.article_image.url }}" height="200" width="450">
                {% endif %}
                <p>{{article.publication_date}}</p>
                <h1><a href="{% url 'mainapp:article_view' article.id %}">{{article.title}}</a></h1>
                {% endfor %}
            </ul>
        </div>
        {% endblock %}
    </div></html>

问题分析

  1. #second_container使用flex布局后,内部的ul会被强制横向排列,导致内容布局混乱
  2. #main_container的align-items: center会让容器内容垂直居中,若内容高度超过容器,会出现溢出或布局异常
  3. body未设置min-height,没有足够的布局高度上下文
  4. <h1>标签错误嵌套在{% block content %}外部,导致HTML结构混乱

修改后的代码

<html>
<style>
    body {
        margin: 0;
        padding: 0;
        min-height: 100vh; /* 确保body占满视口高度 */
    }
    img[src="/media/images/crate_bar.png"] {
        margin: 0;
        padding: 0;
        display: block;
        width: 100%;
        height: auto;
        box-sizing: border-box;
    }
    img[src="/media/images/logo.png"] {
        position: absolute;
        display: block;
        width: auto;
        height: auto;
        left: 50%;
        transform: translateX(-50%);
        top: 0;
    }
    #logo {
        display: flex;
        justify-content: center;
        align-items: center;
        text-align: center;
        position: relative; /* 让绝对定位的logo相对于导航栏容器定位 */
    }
    #main_container {
        display: flex;
        justify-content: center; /* 仅水平居中容器 */
        padding: 20px 0; /* 上下留白,避免内容紧贴导航栏 */
    }
    #second_container {
        width: 50%; /* 占屏幕宽度的50% */
        text-align: center; /* 让内部所有元素水平居中 */
    }
    /* 清除列表默认样式,避免偏移 */
    #second_container ul {
        list-style: none;
        padding: 0;
        margin: 0;
    }
    /* 文章图片自适应容器宽度,防止溢出 */
    #second_container img {
        max-width: 100%;
        height: auto;
    }
</style>
<div id="logo">
    <img src="/media/images/crate_bar.png">
    <a href="{% url 'mainapp:home_view' %}"><img src="/media/images/logo.png" alt="logo"></a>
</div>
{% if user.is_superuser %}
<div style="text-align: center; margin: 10px 0;">
    <a href="{% url 'mainapp:new_article' %}"><button type="button">New article</button></a>
</div>
{% endif %}
{% block content %}
<div id="main_container">
    <div id="second_container">
        <ul>
            {% for article in list_of_articles %}
            {% if article.article_image %}
            <img src="{{article.article_image.url }}">
            {% endif %}
            <p>{{article.publication_date}}</p>
            <h1><a href="{% url 'mainapp:article_view' article.id %}">{{article.title}}</a></h1>
            {% endfor %}
        </ul>
    </div>
</div>
{% endblock %}
</html>

修改说明

  • 给body添加min-height: 100vh,确保页面布局有足够高度上下文
  • 给#logo设置相对定位,让内部绝对定位的logo不会脱离导航栏区域
  • 简化#main_container样式,仅保留水平居中,去掉垂直居中避免内容布局异常
  • 将#second_container改为块级布局,用text-align: center实现内部元素水平居中
  • 清除列表默认的内边距和项目符号,避免布局偏移
  • 让文章图片自适应容器宽度,防止超出50%宽度的容器范围
  • 调整"New article"按钮的位置,修正HTML结构错误并设置居中显示

内容的提问来源于stack exchange,提问作者Ravdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:55:55