CSS实现DIV的水平与垂直居中

2023-11-12

使用CSS样式实现DIV的水平与垂直居中。

1、使用<div>标签的 align 属性实现水平居中

HTML中的 <div> 标签的 align 属性用于规定 div 元素中的内容的水平对齐方式。所有浏览器都支持 align 属性。

语法:

<div align="value">

属性值:

描述
left 左对齐内容。
right 右对齐内容。
center 居中对齐内容。
justify 对行进行伸展,这样每行都可以有相等的长度(就像在报纸和杂志中)。

示例:使用<div>标签的align属性实现页面内容水平居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<div align="center">
    请输入登录信息
    <form method="post" name="form1">
        <table>
            <tr>
                <td>用户:</td>
                <td><input name="user" style="width:200px" type="text"/></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input name="password" style="width:200px" type="password"/></td>
            </tr>
            <!-- 以下是提交、取消按钮 -->
            <tr>
                <td>
                    <input type="submit" value="登录"/>
                </td>
                <td>
                    <input type="reset" value="取消"/>
                </td>
            </tr>
        </table>
    </form>
</div>
</body>
</html>

执行结果:

注意:该方法虽然简单,但是存在兼容性问题,在 HTML 4.01 中,不赞成使用 div 元素的 align 属性;在 XHTML 1.0 Strict DTD 中,不支持 div 元素的 align 属性。请使用 CSS 代替。

 

2、使用CSS中 vertical-align 属性

2.1 CSS中 vertical-align 属性的介绍

定义:

vertical-align 属性设置元素的垂直对齐方式。所有浏览器都支持 vertical-align 属性。

说明:

该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

示例:垂直对齐一幅图像。

img { vertical-align:text-top; }

可能的值:

描述
baseline 默认。元素放置在父元素的基线上。
sub 垂直对齐文本的下标。
super 垂直对齐文本的上标。
top 把元素的顶端与行中最高元素的顶端对齐。
text-top 把元素的顶端与父元素字体的顶端对齐。
middle 把此元素放置在父元素的中部。
bottom 把元素的顶端与行中最低的元素的顶端对齐。
text-bottom 把元素的底端与父元素字体的底端对齐。
length  
%  使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
inherit 规定应该从父元素继承 vertical-align 属性的值。

注意:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。

2.2 CSS中 text-align 属性的介绍

定义:

text-align 属性规定元素中的文本的水平对齐方式。

该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。通过允许用户代理调整行内容中字母和字之间的间隔,可以支持值 justify;不同用户代理可能会得到不同的结果。

可能的值:

描述
left 把文本排列到左边。默认值:由浏览器决定。
right 把文本排列到右边。
center 把文本排列到中间。
justify 实现两端对齐文本效果。
inherit 规定应该从父元素继承 text-align 属性的值。

注意:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。

2.3 使用 vertical-align 属性实现DIV的水平与垂直居中

步骤:

(1)父div外层配置一个div,同时设置为表格元素 (display: table),宽度为100%。

(2)父div配置为表格单元格元素 (display: table-cell)。

(3)父div配置居中属性(vertical-align: middle),使子div上下居中。

(4)子div通过margin配置左右居中(margin-left:auto; margin-right:auto)。

示例:使用 vertical-align 属性实现DIV的水平与垂直居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用 vertical-align 属性实现DIV的水平与垂直居中</title>

    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .warp {
            display: table;
            width: 100%;
        }

        .father {
            display: table-cell;
            vertical-align: middle;
        }

        .son {
            margin: auto;
        }
    </style>
</head>
<body>
<div class="warp">
    <div class="father" style="width: 100%; height: 500px; border: 1px solid rebeccapurple;">
        <div class="son" style="width: 300px; height: 100px; border: 1px solid rebeccapurple;">
            <h3 style="text-align: center">请输入登录信息</h3>
            <form method="post" name="form1">
                <table>
                    <tr>
                        <td>用户:</td>
                        <td><input name="user" style="width:200px" type="text"/></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td><input name="password" style="width:200px" type="password"/></td>
                    </tr>
                    <!-- 以下是提交、取消按钮 -->
                    <tr>
                        <td>
                            <input type="submit" value="登录"/>
                        </td>
                        <td>
                            <input type="reset" value="取消"/>
                        </td>
                    </tr>
                </table>
            </form>
        </div>
    </div>
</div>
</body>
</html>

 

3、绝对定位

3.1 CSS中 position 属性的介绍

定义:

position 属性规定元素的定位类型。

这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。

可能的值:

描述
absolute

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

relative

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
inherit 规定应该从父元素继承 position 属性的值。

示例:定位 h2 元素。

h2 {
  position:absolute;
  left:100px;
  top:150px;
}

3.2 绝对定位(方式一)

利用定位属性(top、left、right、bottom)百分比的模式。若为100%,则代表偏移的长度为父div的高度(宽度)的100%。

步骤:

(1)父div标记下定位(position:relative|absolute|fixed)。

(2)子div绝对定位(position:absolute)。

(3)子div上下居中:top:50%;margin-top:-h/2 或是 bottom:50%;margin-bottom:-h/2。

(4)子div左右居中: left:50%;margin-left:-w/2 或是 right:50%;margin-right:-w/2。

示例:使用绝对定位(方式一)实现DIV的水平与垂直居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用绝对定位(方式一)实现DIV的水平与垂直居中</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .father {
            position: relative;
        }

        .son {
            position: absolute;
            bottom: 50%;
            margin-bottom: -80px;
            left: 50%;
            margin-left: -150px;
        }
    </style>
</head>
<body>

<div class="father" style="width: 100%; height: 500px; border: 1px solid rebeccapurple;">
    <div class="son" style="width: 300px; height: 160px; border: 1px solid rebeccapurple;">
        <h3 style="text-align: center">请输入注册信息</h3>
        <form method="post" name="form1">
            <table>
                <tr>
                    <td>用户:</td>
                    <td><input style="width:200px" type="text"/></td>
                </tr>
                <tr>
                    <td>密码:</td>
                    <td><input style="width:200px" type="password"/></td>
                </tr>
                <tr>
                    <td>昵称:</td>
                    <td><input style="width:200px" type="text"/></td>
                </tr>
                <tr>
                    <td>性别:</td>
                    <td><input style="width:200px" type="text"/></td>
                </tr>
                <!-- 以下是提交、取消按钮 -->
                <tr>
                    <td>
                        <input type="submit" value="提交"/>
                    </td>
                    <td>
                        <input type="reset" value="取消"/>
                    </td>
                </tr>
            </table>
        </form>
    </div>
</div>
</body>

3.3 绝对定位(方式二)

定位属性top和bottom(或是left和right)值分别设置为0,但子div有固定高度(宽度),并不能达到上下(左右)间距为0,此时给子div设置margin:auto会使它居中显示。

步骤:

父div标记下定位(position:relative|absolute|fixed|sticky)。

子div绝对定位(position:absolute)。

子div上下居中:top:0;bottom:0;margin-top:auto;margin-bottom:auto。

子div左右居中:left:0;right:0;margin-left:auto;margin-right:auto。

例子:使用绝对定位(方式二)实现DIV的水平与垂直居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用绝对定位(方式二)实现DIV的水平与垂直居中</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .father {
            position: relative;
        }

        .son {
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto
        }
    </style>
</head>
<body>
<div class="father" style="width: 100%; height: 400px; border: 1px solid rebeccapurple;">
    <div class="son" style="width: 300px; height: 160px; border: 1px solid rebeccapurple;">
        <h3 style="text-align: center">请输入注册信息</h3>
        <form method="post" name="form1">
            <table>
                <tr>
                    <td>用户:</td>
                    <td><input style="width:200px" type="text"/></td>
                </tr>
                <tr>
                    <td>密码:</td>
                    <td><input style="width:200px" type="password"/></td>
                </tr>
                <tr>
                    <td>昵称:</td>
                    <td><input style="width:200px" type="text"/></td>
                </tr>
                <tr>
                    <td>性别:</td>
                    <td><input style="width:200px" type="text"/></td>
                </tr>
                <!-- 以下是提交、取消按钮 -->
                <tr>
                    <td>
                        <input type="submit" value="提交"/>
                    </td>
                    <td>
                        <input type="reset" value="取消"/>
                    </td>
                </tr>
            </table>
        </form>
    </div>
</div>
</body>
</html>

执行结果:

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS实现DIV的水平与垂直居中 的相关文章

  • 使网格项跨越到隐式网格中的最后一行/列

    当我不知道行数时 是否可以使网格项跨度从第一行到最后一行 假设我有以下 HTML 内容 其中包含未知数量的框 我怎样才能做到第三个 box从第一条网格线到最后一条网格线 container display grid grid templat
  • Mobile Safari (iPhone) CSS 垂直居中/行高 CSS 问题

    有一个问题 我一直试图在各个项目中解决 但运气不佳 我有一些divs 内的文本以 CSS 为中心 使用display block and line height 我也尝试过padding和固定的高度 通常 这些设置要么只是标题 要么有时是按
  • 如何在css3中制作曲线风格的菜单?

    是否可以用css3制作曲线 圆弧样式的菜单 我可以使用canvas或HTML5中的其他东西来实现这一点吗 预先感谢 洛根 不幸的是 我不知道有什么优雅的解决方案 特别是当涉及到菜单项时 但弧线本身应该可以在纯 css 和几个 html 元素
  • IE8 中空 div 层的 z-index 问题

    我在 IE8 中遇到 z index 问题 其他尚未测试 以下 JS 创建一些 html css document write img src border 0 document write div style background col
  • 加载背景图像的图像不显示

    我真的很困惑 我正在尝试创建一个带有图标和一些按钮的登陆页面 但我无法设法使我正在使用的背景图像显示出来 即使它是根据 Chrome 的开发工具包加载的 我只有这些行 索引 html div class row div class tryh
  • 在桌面和移动设备上编写 2 列和 3 列的 Flexbox 代码(换行)

    我真的很难弄清楚这个 CSS flexbox 解决方案 基本上有两个问题 一个是 2 列布局 另一个是 3 列布局 2 列 我认为这可能非常简单 3 列 这可能更高级一些 容器类是 嗯 container 而孩子们只是 left right
  • 无法从代码隐藏更改 CSSClass

    这一定是世界上最简单的事情 但它就是行不通 我有一个外部 div 我想对其应用一个类以使其显示样式 none 以便隐藏其中的所有内容 它实际上是一个 asp panel 元素 所以我假设我可以在后面的代码中设置 control CssCla
  • SELECT 元素中的图像[重复]

    这个问题在这里已经有答案了 我知道如何使用 CSS 背景图像属性让图片显示在 HTML 下拉表单元素中的选项旁边 但是 图像不会显示在所选元素上 有什么方法可以做到这一点 最好只使用CSS EDIT 这是列表元素的工作代码的示例 但是 当下
  • 手机上猫头鹰轮播的高度

    我有一个使用 Owl Carousel 覆盖桌面上整个屏幕的图像 当我在手机设备上查看相同的图像时 它仅占用屏幕尺寸的三分之一 我如何调整高度 使其比手机上当前的高度更高 我读过一些帖子 但作为猫头鹰旋转木马的新手 我不确定我是否做错了什么
  • :target 伪类在 Firefox 中无法正常工作

    我正在使用 target 伪类制作一个具有 CSS 灯箱类型效果的页面 当您单击图像时 会弹出一个包含信息的框 当您单击任意位置时 该框会再次消失 它在 Chrome 和 IE 中运行良好 但在 Firefox 中存在一个奇怪的错误当您将鼠
  • 使用过渡+不透明度更改+溢出隐藏时出现问题

    如果您看到我共享的代码示例 您可以看到覆盖层超出了框的范围 我将问题追溯到transition属性 我想删除div之外的内容 溢出没有按预期工作 删除transition有效 但如果可能的话我想保留它 任何帮助表示赞赏 代码笔链接 http
  • Twitter Bootstrap - 多图像(缩略图)轮播 - 一次移动一个缩略图

    我正在尝试 Twitter bootstrap 3 我对 HTML CSS 和 Javascript 还很陌生 我有一个我创建的轮播 它的代码如下所示 div class container div class carousel slide
  • css 字体 twitter 像关闭按钮一样,我错过了什么?

    twitter 有一个关闭按钮 它是单个字符 x 我需要类似的东西 但是在我检查之后 span x span 我按照 firebug 告诉我的那样创建 css 规则 close button font family Tahoma Arial
  • 底部页脚的 css 布局,动态 ajax 内容更改页面高度

    Update 实际上 我现在通过放弃固定页脚设计来解决这个问题 动态内容移动页脚并适当调整容器大小似乎没有问题 除非页脚最初固定在浏览器底部 我希望其他人最终能够提供一个兼具两全其美的出色解决方案 I spent all day tryin
  • CSS:如何在模糊的背景上剪切文本?

    我想重新创建以下样式 我想出了以下内容 问题是剪切不会影响模糊滤镜 我不知道如何解决它 这是我的 HTML 代码 glass width 40 height 100 position absolute background rgba 255
  • 左对齐图像和居中文本在 div 内的同一级别?

    HTML br div class UpperTitle img src align left CableSolve Web Dashboard Version 0 1 1 div br CSS UpperTitle text align
  • CSS calc() 是否可以得到负值?

    假设我们有一个位于视口中心的容器 centered margin 0 auto width 960px 在该容器内 我有另一个容器 其宽度需要为视口宽度的 100 我可以将边距设置为 widest margin 0 480px 例如 问题是
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • tr 元素周围的边框不显示?

    Chrome Firefox 似乎不渲染边框tr 但如果选择器是 它会渲染边框table tr td 如何在 tr 上设置边框 我的尝试 不起作用 table tr border 1px solid black table tbody tr
  • 使用 div 或表格来包含链接列更好吗?

    我的页面底部有 3 列链接 每列都放入一个 div 中 所有三个 div 都包装在页面中央的一个大 div 中 这是更适合桌子的东西还是桌子不适合这项工作 您还可以使用 ul http www w3schools com tags tag

随机推荐

  • Vue拖拽排序(el-table ajax返回数据)

  • Unity Bolt使用协程等待

    使用Unity bolt插件可以进行一些简单逻辑开发 本质上相当于把C 接口以图形化的方式进行调用 但是怎么使用协程进行等待呢 经过一些研究 可以使用继承WaitUnit的组件方式进行扩展 下面是具体的操作步骤 1 等待组件扩展 经过查找
  • 安装MMDetection

    文章目录 前言 MMDetection介绍 MMDetection 整体构建流程和思想 其他信息 参考博客 前言 记录安装MMDetection MMDetection介绍 MMDetection 整体构建流程和思想 这里引用知乎回答图片
  • 企业微信自建应用通过PHP进行收发消息

    我们在企业微信的使用中肯定会用到自建应用 自建应用使用最多的功能就是消息的推送 使用的场景也有很多 例如 在公司内网的程序 可以监控员工在什么时候进行了敏感操作 比如某管理员删除了帐号或者其他内容 可以在进行操作时候推送一条消息到自建应用上
  • 基于GPU的三维体素化

    详情请看我的个人博客的体素化Voxelization 基于GPU的三维体素化
  • Power BI区域可视化(中国、各省市、各区县)

    1 制作SVG地图元件 Axure 复制到 Axure 的全国 含省 市 区 SVG 地图元件 PNG TO SVG 从复制到 Axure 的全国 含省 市 区 SVG 地图元件上截图 另存为PNG PNG TO SVG 设置SVG pat
  • Linux运维面试精选题库(一)

    运维精选面试题 1 什么是数据库 DB DataBase 数据库 依照某种数据模型进行组织并存放到存储器的数据集合 DBMS DataBase Management System 数据库管理系统 用来操纵和管理数据库的大型服务 软件 DBS
  • 手把手教你使用USB的CDC+MSC复合设备(基于stm32f407)- 2

    接上文 手把手教你使用USB的CDC MSC复合设备 基于stm32f407 此文主要是记录一下usb枚举时抓取的一些数据以及usb msc涉及的部分scsi协议 USB MSC协议 主要包括usb协议 msc类协议 scsi协议 SDIO
  • Python序列化protobuf中的repeated数据

    基本数据类型 append追加数据即可 clientRequestBody ids append 1 clientRequestBody ids append 2 如果ids需要的数据类型是列表 用extend 方法即可 具体参见exten
  • 【网络编程】揭开套接字的神秘面纱

    文章目录 1 peach 简单理解TCP UDP协议 peach 2 peach 网络字节序 peach 3 peach socket编程接口 peach 3 1 apple socket 常见API apple 3 2 apple soc
  • 激光雷达处理简介

    目录 1 什么是激光雷达 2 什么是点云 3 激光雷达的类型 4 激光雷达技术的优势 5 激光雷达处理概述 6 激光雷达技术的应用 1 什么是激光雷达 激光雷达 即激光探测和测距 是一种三维激光扫描方法 激光雷达传感器提供有关环境的三维结构
  • 如何将PC电脑变成web服务器:将内网主机映射到外网实现远程访问

    如何将PC电脑变成web服务器 将内网主机映射到外网实现远程访问 我是艾西 今天跟大家分享内容还是比较多人问的一个问题 如何将PC电脑变成web服务器 内网主机作为web服务器 内容包括本地内网映射 多层内网映射解决方案 绕过电信80端口封
  • C++运算符重载(简单易懂)

    一 运算符重载 对已有的运算符进行重新定义 赋予另一种功能以适用不同的数据类型 1 加号运算符 重载 创建类 Person class Person public 1 成员函数重载 号 本质 Person p3 p1 operator p2
  • 结构体(struct)继承——[C++语言中]

    在C 语言中 struct对C语言中的strcut进行了扩充 已经不仅仅是一个包含不同数据类型的数据结构体了 在C 语言中 strcut可以包含成员函数 可以实现继承 可以实现多态 在C 语言中 结构体struct与类class的最本质区别
  • JavaScript设计模式(二)——简单工厂模式、抽象工厂模式、建造者模式

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 正逐渐往全干发展 个人状态 研发工程师 现效力于中国工业软件事业 人生格言 积跬步至千里 积小流成江海 推荐学习 前端面试宝典 Vue2 Vue3 Vue2 3项目实战 Node js
  • Git查看和编辑配置并设置默认编辑器为VSCode

    1 查看已有配置 使用命令 git config list show origin 查看已有的配置 file D Git etc gitconfig diff astextplain textconv astextplain file D
  • 如何剪辑视频?方法来了,零基础也能学会!

    视频怎么剪辑呀 刚刚用录屏软件录制了一段视频 但是录进去了很多不需要的画面 需要进行修改 可是不知道视频怎么剪辑 有没有人知道剪辑视频的方法 推荐一下 剪辑视频是一门重要的技能 无论是在日常生活中还是工作中 都需要用到 从个人Vlog到专业
  • 给我写一段nginx代码

    server listen 80 server name example com location root var www example index index html index htm
  • (Struts2学习篇)Struts2标签库(表单标签)

    一 jsp页面代码 index jsp
  • CSS实现DIV的水平与垂直居中

    使用CSS样式实现DIV的水平与垂直居中 1 使用 div 标签的 align 属性实现水平居中 HTML中的 div 标签的 align 属性用于规定 div 元素中的内容的水平对齐方式 所有浏览器都支持 align 属性 语法 div