分享好友 前端技术首页 频道列表

css水平垂直居中 css水平垂直居中对齐

css教程  2023-03-08 16:270

1.CSS的水平居中,

  1.1 父元素是块状元素,子元素为行内元素的居中,直接设置text-aglin: center ,常见的文本,span 标签,button,img等行内元素都是可以使其水平居中的

    

.box{
            text-align: center;
        }

<div class="box">
        <span>11111</span>
        <button>123</button>
    </div>

  1.2 父元素为块状元素,子元素也为块状元素

    1.2.1 子元素宽度已知,则可以设置子元素 margin 0 auto,就可以使子元素相对于父元素水平居中

<style>
        .box{
            background-color: pink;
        }
        .con-box{
            width: 300px;
            margin: 0 auto;
            height: 30px;
            background-color: aqua;
        }
    </style>

<div class="box">
        <div class="con-box">

        </div>
    </div>

  1.3  父元素为块状元素,子元素为块状元素宽度不定,直接设置子元素display:inline,  然后设置 父元素的text-aglin:center

<style>
        .box{
            background-color: pink;
            text-align: center
        }
        .con-box{
            display: inline;
        }
    </style>
<div class="box">
        <div class="con-box">
            111111
        </div>
    </div>

 

    注: 使用弹性布局,使用定位,都是可以使子元素相对于父元素水平居中的

2.垂直居中

  2.1 父元素为块状元素,子元素为行内元素,如单行文本,直接设置父元素的line-height 等于父元素的高度,

<style>
        .box{
            background-color: pink;
            height: 50px;
            line-height: 50px;
        }
        .con span{
            line-height: 50px;
        }
    </style>

<div class="box">
        <span> 111111</span>
    </div>

  2.2 父元素为块状元素,子元素为多行文本,则设置父元素的line-height 等于父元素高度除于行数,

.box{
            background-color: pink;
            height: 50px;
            line-height: 25px;
        }
        .con span{
            line-height: 50px;
        }

<div class="box">
        <span> 111111</span><br>
        <span> 111111</span><br>
    </div>

  2.3 父元素为块状元素,子元素也为块状元素,

    2.3.1 子元素高度未知,改变父元素的display 属性 设置为 table-cell,然后设置vertical-align:middle;

<style>
        .box{
            background-color: pink;
            height: 50px;
            display: table-cell;
            vertical-align:middle;
        }
        .box .con-box{
            background-color: aqua;
        }
    </style>

<div class="box">
        <div class="con-box"> 
            1111
        </div>
    </div>

    2.3.2 子元素高度已知,则设置margin-top,元素高度减去子元素高度除于2; 记住一定要设置父元素的overflow: hidden; 

      (相邻块状元素 margin会共享,取最大值,不设置overflow: hidden,子元素的margin-top:10px 会跑到父元素上)

<style>
        .box{
            background-color: pink;
            height: 50px;
            overflow: hidden;           
     }
        .box .con-box{
            margin-top: 10px;
            height: 30px;
            line-height: 30px;
            background-color: aqua;
        }
    </style>

<div class="box">
        <div class="con-box"> 
            1111
        </div>
    </div>

    2.3.3 子元素为图片,直接可以设置父元素display: table-cell; vertical-align: middle;

<style>
        .box{
            background-color: pink;
            height: 450px;
            display: table-cell; 
            vertical-align: middle;         
     }
</style>

  2.3.4 子元素为多个,比如图片,外加别的行内元素,使用2.3.3,文本可以不用改变,必读给图片加 vertical-align: middle;

    <style>
        .box{
            background-color: pink;
            height: 450px;
            display: table-cell; 
            vertical-align: middle;         
     }
     img{
         vertical-align: middle
     }
    </style>

<div class="box">
        <img src="../xunguang-4.jpg" alt="">
        <span>12123123</span>
        1111111
    </div>

3.CSS 水平垂直居中 上面两两组和使可以实现的,我们主要看一下定位和flex 实现水平垂直居中

  3.1子元素高度未知,高度已知的块状元素水平垂直居中,(宽度未知,块状元素肯定使占满整行的,就不存在水平居中了)

    3.1.1使用定位配置,配合margin 0 auto ,top 50%,宽度未知,只能使用transform:translateY(-50%);

  <style>
        .box{
            background-color: pink;
            height: 450px;  
            position: relative; // relative 默认沾满整行,absolute话,未设置宽度则由子元素撑开    
            overflow: hidden; 
        }
        .box .con-box{
            position: relative;
            width: 300px;
            margin: 0 auto;
            background-color: aqua;
            top:50%;
            transform: translateY(-50%);
        }

    </style>
<div class="box">
        <div class="con-box">
            123123123123
            <br>
            1222222222
        </div>
    </div>

    3.1.2,使用定位,子元素 left 0 right 0 top 0 bottom 0 margin auto (一定要注意父子元素的定位属性)

<style>
        .box{
            background-color: pink;
            height: 450px;  
            position: relative; /* 父元素一定为relative */   
            overflow: hidden; 
        }
        .box .con-box{
            position: absolute; /*  *子元素一定 为absolete*/
            width: 300px;
            background-color: aqua;
            top:0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
        }
    </style>
<div class="box">
        <div class="con-box">
            123123123123
            <br>
            1222222222
        </div>
    </div>

  3.2 ,子元素宽度,高度都已知,3.1 上的两种方法都适用宽度高度已经的子元素水平垂直居中

    3.2.1 margin-top: -width/2 具体的值, transform: translateY(-50%) 这个有兼容性问题,需要ie9以上,具体宽度值则无兼容性问题,

<style>
                .box{
            background-color: pink;
            height: 450px;  
            position: relative; 
            overflow: hidden; 
        }
        .box .con-box{
            position: relative;
            width: 300px;
            height: 400px;
            margin: 0 auto;
            background-color: aqua;
            top:50%;
            margin-top: -200px
        }


    </style>

<div class="box">
        <div class="con-box">
            123123123123
            <br>
            1222222222
        </div>
    </div>

    上面方法的变化版

<style>
                .box{
            background-color: pink;
            height: 450px;  
            position: relative; 
            overflow: hidden; 
        }
        .box .con-box{
            position: relative;
            width: 300px;
            height: 400px;
            background-color: aqua;
            top:50%;
            left: 50%;
            margin-top: -200px;
            margin-left: -150px;
        }


    </style>

<div class="box">
        <div class="con-box">
            123123123123
            <br>
            1222222222
        </div>
    </div>

4 flex 水平垂直居中

  flex 主轴上居中,交叉轴上居中,flex 有很大的兼容性问题,一般用于移动端,很简单

<style>
                .box{
            background-color: pink;
            height: 450px;  
            display: flex;
            justify-content: center;
            align-items: center
        }
        .box .con-box{
            width: 300px;
            height: 400px;
            background-color: aqua;
        }


    </style>
<div class="box">
        <div class="con-box">
            123123123123
            <br>
            1222222222
        </div>
    </div>

     多个子元素也一样实现

    子元素可以单独设置对其方式

<style>
                .box{
            background-color: pink;
            height: 450px;  
            display: flex;
            justify-content: center;
            align-items: center
        }
        .box .con-box{
            width: 200px;
            height: 400px;
            background-color: aqua;
        }
        .box .con-box2{
            width: 200px;
            height: 400px;
            background-color: lightcyan;
        }
        .box .con-box3{
            width: 200px;
            height: 400px;
            background-color: gold;
            align-self: flex-end;
        }

    </style>
<div class="box">
        <div class="con-box">
            123123123123
            <br>
            1222222222
        </div>
        <div class="con-box2">
            123123123123
            <br>
            1222222222
        </div>
        <div class="con-box3">
            123123123123
            <br>
            1222222222
        </div>
    </div>

   总结 

   1.水平居中,能使用margin: 0 auto ,这最简单的,不能的话就把子元素转化成inline,然后使用text-aglin:center,无兼容性问题。

    上面达不到需求,可以考虑使用定位,移动端能使用flex 就使用flex

     2. 垂直居中,单行文本,使用line-height 等于父元素高度,如果不行,就可以设置父元素display:table-cell,vertical-align: middle;

    能解决一大部分问题,如果还不行就考虑定位配合margin-top:-width/2,使用margin。移动端能使用flex 就使用flex.

  如果您还有更好的方法,欢迎给我留言,共同学习,共同进步。up

查看更多关于【css教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
css实现弹出框 css弹出菜单
弹出框也是前端里面经常使用的一个应用场景了,最开始想到的是用js实现这个效果,看到codepen上面有用css实现的。其实就是用到了css里面的一个:target选择器+visibility属性。URL 带有后面跟有锚名称 #,指向文档内某个具体的元素。这个被链接的元素就是目标

0评论2023-03-08519

jfinal框架页面找不到相关css,js文件404
在JFinalConfig中添加配置: @Overridepublic void configHandler(Handlers handlers) {handlers.add(new ContextPathHandler());}页面中添加:base href="${CONTEXT_PATH}/"/之前页面找不到资源,把tomcat工程路径去掉了(path=""),这样暂时解决了问题推荐

0评论2023-03-08576

移动端CSS底部固定和fixed定位在ios上的bug
fixed定位在ios上的bugcss三栏布局假设我们页面的 HTML 结构是这样: div class="wrapper"div class="content"!-- 页面主体内容区域 --/divdiv class="footer"!-- 需要做到 Sticky Footer 效果的页脚 --/div/div方法1.:absolute通过绝对定位处理应该是常见的

0评论2023-03-08624

css实现图片翻转 css使图片旋转
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"html xmlns="http://www.w3.org/1999/xhtml"headmeta http-equiv="Content-Type" content="text/h

0评论2023-03-08577

CSS3中的px,em,rem,vh,vw辨析 css3 vw
1、px:像素,精确显示2、em:继承父类字体的大小,相当于“倍”,如:浏览器默认字体大小为16px=1em,始终按照div继承来的字体大小显示,进场用于移动端          em换算工具:http://www.runoob.com/tags/ref-pxtoemconversion.html3、rem:与em类似,

0评论2023-03-08902

gulp自动化构建工具--自动编译less为css--学习笔记
 1.安装      命令:npm install gulp-less 或者 cnpm install gulp-less2.编写文件 //获取gulpvar gulp = require('gulp')//获取gulp-less模块var less = require("gulp-less")//编译less//在命令行输入gulp less启动此任务gulp.task('less',function(){

0评论2023-03-08411

关于动画Animate.css的使用方法
    首先贴个官网:https://daneden.github.io/animate.css/  1、引入animate css文件 1 head2 link rel="stylesheet" href="animate.min.css"3 /head   2、给指定的元素加上指定的动画样式名div class="animated bounceOutLeft"/div    这里包

0评论2023-03-08673

selenium Firefox禁用js,css.falsh,缓存,设置请求头和代理ip
1 profile = FirefoxProfile() 2 #请求头 3 #profile.set_preference("general.useragent.override", util.http_agent_insert(xinhuaUtil.agent_path)) 4 # 激活手动代理配置(对应着在 profile(配置文件)中设置首选项) 5 profile.set_preference("network

0评论2023-03-08777

CSS--容易混淆的.class1.class2与.class1 .class2的区别
容易混淆的.class1.class2与.class1 .class2的区别:第一个中间没空格的,匹配的是同时拥有class1和class2的元素。第二个中间有空格的,匹配的是父节点是class1类,子节点是class2类的元素。

0评论2023-03-08554

页面css样式找不到问题 页面css样式找不到问题怎么解决
出现了一个页面没有样式的问题:问题:  1.路径不对, 可以打开页面f12看样式是否找到  检查路径是否正确。  2.样式没引全或者没引对。查看引入的样式是否正确或缺少样式。  3.路径明明写对了却404找不到。可以试一试把${pageContext.request.context

0评论2023-03-08414

学习前端页面css定位 网页前端设计css
一、相对定位:absolute  相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。position:relative;同时可以设置上下左右位置偏移;rela

0评论2023-03-08782

css-移动端模拟hover效果 css移动端适配
:hover 在移动端中,点击后一直处于hover状态,不会切换。为此解决:通过:active模拟!-- * @Author: lingxie * @Date: 2020-04-23 13:35:57 * @Descripttion: -- templatediv class="about"h1This is an about page/h1div class="btn-hole"按钮/div/div/templ

0评论2023-03-08409

css固定定位,不随滚动条滚动 css固定在底部
!DOCTYPE htmlhtml lang="en"headmeta charset="UTF-8"meta http-equiv="X-UA-Compatible" content="IE=edge"meta name="viewport" content="width=device-width, initial-scale=1.0"titleDocument/titlestyleb

0评论2023-03-08745

(转)JAVA中解决Filter过滤掉css,js,图片文件等问题
在加入过滤器时,会出现网页可以加载,但是网页中的js,css等文件无法加载的问题。因为在网页加载时,先将整个网页加载,然后加载网页中的js,css等文件,而在进行js,css文件加载时,会被过滤器过滤掉。因此在过滤器中加入一个对css,js等文件的判断,就可以

0评论2023-03-08794

CSS3 Flexbox轻松实现元素的水平居中和垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Fl

0评论2023-03-08774

css3多行文本溢出显示省略号… css3行超出省略号
.title {width: rem(210);overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;}

0评论2023-03-08638

更多推荐