css居中的一些方法

水平居中

1.行内元素水平居中,外面的父级块元素设置样式text-align:center;

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
    </head>
    <style type="text/css">
        div{
            width: 400px;
            height: 400px;
            background: lightblue;
            margin:200px auto;
            text-align: center;
        }
    </style>
    <body>
        <div>
            <span>
                我是行内元素
            </span>
        </div>
    </body>
</html>

效果图如下:

2.块级元素的水平居中
方法一:设置左右两边的margin为auto即可

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
    </head>
    <style type="text/css">
        .wrap{
            width: 400px;
            height: 400px;
            background: lightblue;
            margin:200px auto;
        }
        .inter{
            width: 100px;
            height: 100px;
            margin: 0 auto;
            border: 1px solid red;
        }
    </style>
    <body>
        <div class="wrap">
            <div class="inter">
                我是内部的块级元素
            </div>
        </div>
    </body>
</html>

效果图如下:

方法二:css3新属性fit-content意思是宽度缩小到和内容一样宽配合margin:auto;

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <style type="text/css">
            .parent{
                width:fit-content;/* 表示宽度自适应缩小到内容的宽度*/
                margin: 0 auto;
            }
            .son{
                float: left;
                border: 1px solid #F08080;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="son">
                我是内部的元素
            </div>
        </div>
    </body>
</html>

效果图如下:

方法三:弹性盒子布局flex

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <style type="text/css">
            .parent{
                width: 400px;
                height: 400px;
                background: lightblue;
                display: flex;
                justify-content: center;
            }
            .son{
                width: 100px;
                height: 100px;
                border: 1px solid red;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="son">
                我是内部的元素
            </div>
        </div>
    </body>
</html>

效果图如下:

方法四:绝对定位 可以用left50% margin-left负自身的一般和transform和margin三种

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <style type="text/css">
        .parent{
            position: relative;
            width: 400px;
            height: 400px;
            background: lightblue;
        }
        .son{
            position: absolute;
            /* left: 50%; */
            /* margin-left: -50px; */
            /* transform: translate(-50%,0); */
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            width: 100px;
            height: 100px;
            border: 1px solid red;
        }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="son">
                我是内部的元素
            </div>
        </div>
    </body>
</html>

效果图如下:

垂直居中

1.行内元素

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <style type="text/css">
        .parent{
            width: 400px;
            height: 400px;
            line-height: 400px;
            background: lightblue;
        }
        span{
            /* line-height: 400px; */
        }
        </style>
    </head>
    <body>
        <div class="parent">
            <span>
                我是内部的元素
            </span>
        </div>
    </body>
</html>

效果图如下:

2.块级元素 table布局
table布局优缺点:
元素高度可以动态改变, 不需再CSS中定义, 如果父元素没有足够空间时, 该元素内容也不会被截断
IE6~7, 甚至IE8 beta中无效

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <style type="text/css">
        .parent{
            width: 400px;
            height: 400px;
            background: lightblue;
            display: table;
        }
        .son{
            display: table-cell;
            vertical-align: middle;
        }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="son">
                我是内部的元素
            </div>
        </div>
    </body>
</html>

效果如下:

方法二:flex布局
flex布局优缺点:
内容块的宽高任意, 优雅的溢出,可用于更复杂高级的布局技术中
IE8/IE9不支持,需要浏览器厂商前缀,渲染上可能会有一些问题

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <style type="text/css">
        .parent{
            width: 400px;
            height: 400px;
            background: lightblue;
            display: flex;
            align-items: center;
        }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="son">
                我是内部的元素
            </div>
        </div>
    </body>
</html>

效果如下:

方法三:同上的绝对定位的三种方法
transform优缺点:
代码少,简洁
E8不支持, 属性需要追加浏览器厂商前缀, 可能干扰其他 transform 效果, 某些情形下会出现文本或元素边界渲染模糊的现象
margin优缺点:
简单
没有足够空间时, 子元素会被截断, 但不会有滚动条

原文地址:https://www.cnblogs.com/my466879168/p/12095781.html

时间: 2024-11-13 09:05:10

css居中的一些方法的相关文章

理解CSS居中

我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必须理解css的元素分类以及css的盒模型(box model). a. 元素分类. 在css中把元素分为块级元素.内联元素以及内联块级元素. 块级元素最明显的特征就是: { display: block; }  .块级元素独占一行,默认情况元素的width默认为100%,但可以修改元素的height

css居中方法详解

第一种居中方式: 使用margin:auto; 这应该是使用最多的居中方式了,但也有着局限性,居中的元素需要设置宽度,而且是块元素才行,并且只能实现水平居中,这个方法的原理是让浏览器自动去计算左右边距从而实现居中: <div class="big"> <div class="small"></div> </div> .big{ width: 200px; height: 100px; background: blue;

《转》CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

转自大地Dudy的CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳) 本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说的IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法: <!doctype html> <html lang="en&

css居中问题

学习过程中遇到css居中问题 , 也查阅了资料,每个人的方法都不尽相同,而且当时看懂了,过后就记混淆了;so作为一个前端小白,也来写一下俗话说好脑子不如烂笔头,毕竟自己知道的也不多,其实是抱着学习和交流的态度啦.话不多说,直接来(注:本文中的属性都是在chrome浏览器下试验的); 一 : 一个父盒子,一个子盒子如何居中(高度已知) 最简单的一种: 就是使用定位,父盒子relative,子盒子absolute,然后子盒子left和top值各50%;在设置margin值,left和top值是本身盒

css水平居中的各种方法

说到水平居中,大家可能觉得很简单啊,text-align:center 就OK了. 但是,有时候会发现这样写了也没出效果.原因是什么呢?  请往下看. 水平居中:分为块级元素居中和行元素居中 行内元素: 行内元素就是内联元素.例如<span>.<a>.<label>.<em>.<img>等.. 直接构建一个具有 ”text-align:center“样式的容器,那么里面包含的行内元素就会都居中了. <div style="text

CSS居中集合&amp;图片视口最大化

http://www.w3cplus.com/css/vertically-center-content-with-css CSS制作水平垂直居中对齐(分别介绍水平和垂直居中的方法,优缺点分析) http://www.cnblogs.com/rubylouvre/p/3274273.html CSS 居中大全(比较全面的居中方法) http://www.zhangxinxu.com/wordpress/?p=3794 张大神:margin:auto实现绝对定位元素的水平垂直居中 http://w

CSS 垂直居中5种方法

利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器中无效.下面我们看一下使对象垂直集中的5种不同方法,以及它们各自的优缺点.(可以看看测试页面,有简短解释.) 方法一 这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性. Content goes here #wrapper {

css居中那点事儿

css居中那点事儿 在css中对元素进行水平居中是非常简单的,然而使元素垂直居中就不是一件简单的事情了,多年以来,垂直居中已经成为了CSS领域的圣杯,因为它是极其常见的需求,但是在实践中却不是一件简单的事情.下面我会简单介绍水平居中,并着重讨论垂直居中. 第一部分:水平居中 1.实现行内元素的居中.方法:在行内元素外面的块元素的样式中添加:text-align:center; <!DOCTYPE html> <html lang="en"> <head&g

CSS居中demo

<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=de