cari
Rumahhujung hadapan webhtml tutorialCSS之水平垂直居中_html/css_WEB-ITnose

在css的世界里,如果我们想让一个块级元素水平居中,想必大家都知道利用margin:0 auto;嘛,这样就可以让块级元素在它的父元素中水平居中了。

列如这样:

<!DOCTYPE html>    <head>        <title>center</title>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <style>                .parent {                width:50%;                height:100px;                border:1px solid black;                position:relative;            }            .child {                margin:0 auto;                width:50px;                height:50px;                background:#22B14C;            }            </style>    </head>    <body>        <div class="parent">               <div class="child">                         </div>        </div>    </body></html>

运行效果图如下,绿色方块水平居中于它的父元素

咦,那么问题来了,我们想要绿色方块垂直居中或者水平垂直居中呢?

是不是只要设置margin:auto 0;或margin:auto;就可以了呢?

曾经我也是这么以为的,因为设置margin:0 auto;可以水平居中嘛。

但是垂直居中就不是这么回事啦。

在普通文档流中,倘若你设置margin:auto,其实浏览器解析时,会理解为margin:0 auto;

(将margin-top和margin-bottom设置为0,而margin-left和margin-right设置为左右自适应)。

摘自W3.org

如果你心存顾虑,可以将上面demo中的margin:0 auto;换成margin:auto;,运行后的结果是一样的。

咦,那如果我们现在想让块级元素垂直居中呢,如何处理?

 方法一:

将元素设置为绝对定位absolute,这样就可以让元素脱离普通文档流,且absolute有一特性:会将元素的display设置为block。

然后,再设置绝对定位的坐标(left,top,right,bottom)为0,这样会使浏览器为绝对定位包裹一层新的盒子模型。

再结合margin,就可以你想水平居中(margin:0 auto;)就居中,垂直居中(margin:auto 0;)就居中了,水平垂直居中(margin:auto;)也完美。

下面列举的demo为‘水平垂直居中’:

<!DOCTYPE html>    <head>        <title>center</title>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <style>                .parent {                width:50%;                height:100px;                border:1px solid black;                position:relative;            }            .child {                margin: auto;                position: absolute;                top:0;                left:0;                bottom:0;                right:0;                width:50px;                height:50px;                background:#22B14C;            }            </style>    </head>    <body>        <div class="parent">                   <div class="child">                         </div>        </div>    </body></html>

PS:position:fixed也可以脱离文档流,so它和absolute是一样儿滴,区别就是fixed是相对于浏览器窗口进行定位的。

方法二:

方法一是通过改变元素的文档流,那么除开改变它的文档流呢?

那我们就另辟蹊径,计算元素的宽高嘛。

么子意思?

以‘垂直居中’举例,倘若我们有个子元素child,需要垂直居中于它的父元素parent。如下:

        

                                        图一

那么首先我们得将子元素child以父元素的顶点(top,left=0  如上图所示),往下和右移动父元素宽高的50%;如下图所示:

 

                                        图二

再将子元素Child以parent中心点,往上和左移动自身元素宽高的50%,就垂直居中啦,如下图所示:

     

                                        图三

好了,这个流程我们是理清楚了,那用CSS应该怎么实现呢?

列举2个:

(1)、 margin + absolute

设置child为absolute,将其top、right皆为50%,那么就使得子元素层显上图图二的情况;

再将元素的margin-top,margin-right设置为-50%,那么就可以实现垂直居中啦。

示例代码如下:

<!DOCTYPE html>    <head>        <title>center</title>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <style>                .parent {                width:50%;                height:100px;                border:1px solid black;                position:relative;            }            .child {                position:absolute;                width:50px;                height:50px;                top:50%;                left:50%;                margin-top:-25px;                margin-left:-25px;                background:#22B14C;            }                 </style>    </head>    <body>        <div class="parent">            <div class="child">                             </div>        </div>    </body></html>

(2)、 translate + absolute

设置child为absolute,将其top、right皆为50%,那么就使得子元素层显上图图二的情况;

再通过translate将元素移动50%,50%,也可以得到图三,实现垂直居中。

示例代码如下:

<!DOCTYPE html>    <head>        <title>center</title>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <style>                .parent {                width:50%;                height:100px;                border:1px solid black;                position:relative;            }            .child {                position:absolute;                width:50px;                height:50px;                top:50%;                left:50%;                <!--渐进增强-->                -webkit-transform: translate(-50%,-50%);                    -ms-transform: translate(-50%,-50%);                        transform: translate(-50%,-50%);                background:#22B14C;            }                 </style>    </head>    <body>        <div class="parent">            <div class="child">                             </div>                    </div>    </body></html>

方法三:

利用table-cell属性就可以轻松实现。

将父元素变为table-cell,从而可以使用table的属性vertical-align:middle,使元素垂直居中,再将子元素margin:0 atuo;就可以实现水平居中咯。

PS:table-cell必须包含在display:table元素中,table-cell是属于table滴嘛。

示例代码如下:

<!DOCTYPE html>    <head>        <title>center</title>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <style>                .root {                width:50%;                height:100px;                border:1px solid black;                display:table;            }            .parent {                display:table-cell;                vertical-align:middle;            }             .child {                width:50px;                height:50px;                background:#22B14C;                margin:0 auto;            }                    </style>    </head>    <body>        <div class="root">            <div class="parent">                 <div class="child"></div>            </div>        </div>    </body></html>

好了,css之垂直水平居中就算完了(弹性布局Flex不在本篇讨论范畴)。

晚安,everyone~

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Dari teks ke laman web: Kekuatan HTMLDari teks ke laman web: Kekuatan HTMLApr 13, 2025 am 12:07 AM

HTML adalah bahasa yang digunakan untuk membina laman web, menentukan struktur laman web dan kandungan melalui tag dan atribut. 1) HTML menganjurkan struktur dokumen melalui tag, seperti,. 2) Penyemak imbas menghancurkan HTML untuk membina DOM dan menjadikan laman web. 3) Ciri -ciri baru HTML5, seperti, meningkatkan fungsi multimedia. 4) Kesilapan biasa termasuk label yang tidak terkawal dan nilai atribut yang tidak disebutkan. 5) Cadangan pengoptimuman termasuk menggunakan tag semantik dan mengurangkan saiz fail.

Memahami HTML, CSS, dan JavaScript: Panduan PemulaMemahami HTML, CSS, dan JavaScript: Panduan PemulaApr 12, 2025 am 12:02 AM

WebDevelopmentReliesOnhtml, CSS, andjavascript: 1) HtmlStructuresContent, 2) CSSStylesit, dan3) JavaScriptaddsInteractivity, Formingthebasisofmodernwebexperiences.

Peranan HTML: Penstrukturan Kandungan WebPeranan HTML: Penstrukturan Kandungan WebApr 11, 2025 am 12:12 AM

Peranan HTML adalah untuk menentukan struktur dan kandungan laman web melalui tag dan atribut. 1. HTML menganjurkan kandungan melalui tag seperti, menjadikannya mudah dibaca dan difahami. 2. Gunakan tag semantik seperti, dan lain -lain untuk meningkatkan kebolehcapaian dan SEO. 3. Mengoptimumkan kod HTML boleh meningkatkan kelajuan pemuatan laman web dan pengalaman pengguna.

HTML dan Kod: Melihat lebih dekat pada istilahHTML dan Kod: Melihat lebih dekat pada istilahApr 10, 2025 am 09:28 AM

Htmlisaspecifictypeofcodefocusedonstructuringwebcontent, manakala "kod" secara meluas ini

HTML, CSS, dan JavaScript: Alat penting untuk pemaju webHTML, CSS, dan JavaScript: Alat penting untuk pemaju webApr 09, 2025 am 12:12 AM

HTML, CSS dan JavaScript adalah tiga tiang pembangunan web. 1. HTML mentakrifkan struktur laman web dan menggunakan tag seperti, dan sebagainya. 2. CSS mengawal gaya laman web, menggunakan pemilih dan atribut seperti warna, saiz font, dan lain-lain.

Peranan HTML, CSS, dan JavaScript: Tanggungjawab TerasPeranan HTML, CSS, dan JavaScript: Tanggungjawab TerasApr 08, 2025 pm 07:05 PM

HTML mentakrifkan struktur web, CSS bertanggungjawab untuk gaya dan susun atur, dan JavaScript memberikan interaksi dinamik. Ketiga melaksanakan tugas mereka dalam pembangunan web dan bersama -sama membina laman web yang berwarna -warni.

Adakah HTML mudah belajar untuk pemula?Adakah HTML mudah belajar untuk pemula?Apr 07, 2025 am 12:11 AM

HTML sesuai untuk pemula kerana mudah dan mudah dipelajari dan dapat melihat hasilnya dengan cepat. 1) Keluk pembelajaran HTML adalah lancar dan mudah dimulakan. 2) Hanya menguasai tag asas untuk mula membuat laman web. 3) Fleksibiliti yang tinggi dan boleh digunakan dalam kombinasi dengan CSS dan JavaScript. 4) Sumber pembelajaran yang kaya dan alat moden menyokong proses pembelajaran.

Apakah contoh tag permulaan dalam html?Apakah contoh tag permulaan dalam html?Apr 06, 2025 am 12:04 AM

Anexampleofastartartingtaginhtmlis, yangbeginsaparagraph.startingtagsareessentialinhtmlasttheyinitiateelements, definetheirtypes, andarecrucialforstructuringwebpagesandconstructionthedom.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)