元素水平垂直居中--分为行内元素和块级元素的情况

直接上code:

HTML文档

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>居中设置</title>
    <link href="../css/居中设置.css" rel="stylesheet" />
</head>
<body>
    <h1>居中样式</h1>
    <p>行内元素和块级元素的垂直居中、水平居中都不一样</p>
    <hr />
    <h2>两个块级元素怎么垂直水平居中</h2>
    <div class="box1">
        <div class="box2"></div>
    </div>
    <br />

    <div class="box3">
        <div class="box4"></div>
    </div>
    <br />

    <div class="box1">
        <div class="box6"></div>
    </div>
    <br />
    <h3>对于块级子元素宽高未知的情况下</h3>
    <div class="box7">
        <div class="box8"></div>
    </div>
    <br />
    <div class="box9">
        <div class="box10"></div>
    </div>

    <br />
    <h2>内联元素和行内块元素的居中设置</h2>
    <p>注意:内联元素(行内元素)不能设置宽高</p>
    <div class="box11">
        <a href="##">这是一条用来上下左右居中的链接--请勿点击</a>
    </div>
    <br />
    <div class="box12">
        <img src="../images/config.png" alt="Alternate Text" />
    </div>
    <br />
    <div class="box11">
        <p>可以将那些行内元素转换为块级元素,这样利用块级元素设置水平垂直居中</p>
    </div>
    <br />

    <h2>来看看img元素</h2>
    <p>
        img属于行内替换元素。height/width/padding/margin均可用。效果等于块元素。类似的元素还有input等。
        行内非替换元素,例如, height/width/padding top、bottom/margin top、bottom均无效果。只能用padding left、right和padding left、right改变宽度。
    </p>
    <div class="box11">
        <img src="../images/config.png" alt="Alternate Text" />
    </div>
    <br />
    <div class="box13">
        <img src="../images/config.png" alt="Alternate Text" />
    </div>
    <br />
    <div class="box14">
        <img src="../images/config.png" alt="Alternate Text" />
    </div>
</body>
</html>

  css样式:

body {
    padding:0px;
    margin:0px;
}

/*第一种方法将位置都写死了,有的时候很不方便*/
.box1{
    width:200px;
    height:200px;
    background-color:#e0cbcb;
    position:relative;
}
.box2 {
    width: 50px;
    height: 50px;
    background-color: red;

    /**margin设置的时候只能水平居中,不能做到垂直居中*/
    /*margin: 0 auto; */

    /*使用定位进行水平垂直居中*/
    position: absolute;
    top: 50%;
    left:50%;
    /*向上移动自身高度的一半*/
    margin-top:-25px;

    /*向左移动自身宽度的一半*/
    margin-left:-25px;
}

/*第二种方法,利用css3的transform属性*/
/*这个方法比较方便*/
.box3 {
    width: 200px;
    height: 200px;
    background-color: #e0cbcb;
}
.box4{
    width:50px;
    height:50px;
    background-color:red;
    position:relative;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%)
}

/*第三种方法*/
/*position: absolute; left: 0; right: 0; top: 0; bottom: 0;这是自动填充父元素的可用空间。然而给子元素设定了宽高,那么多余的空间,会被margin:auto平均分配。*/
.box6 {
    width: 50px;
    height: 50px;
    background-color: red;
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    margin:auto;
}

/*第四种方法*/
/*利用表格的特性,将子元素看成行内元素,实现元素中的文字(文字可以是单行的,也可以是多行的)或图片水平垂直居中*/
.box7 {
    width:100px;
    height:100px;
    background-color:red;
    display:table;
}
.box8 {
    background-color: yellow;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}

/*第五种方法,强烈推荐这种计算*/
/*弹性布局 display: flex。在已知或未知元素宽高的情况下,都能使元素居中显示。*/
.box9 {
    width: 100px;
    height: 100px;
    background-color: red;
    display: flex;

    /*align-items属性适用于所有的flex容器,它是用来设置每个flex元素在侧轴上的默认对齐方式。*/
    align-items: center;
    /*内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。*/
    justify-content: center;
}
.box10 {
    width: 30px; /*宽度可以省略*/
    height: 30px; /*高度可以省略*/
    background-color:yellow;
}

/*第六种方法:一般情况行内元素的水平垂直居中,将样式写在父元素就行*/
.box11{
    width:100%;
    height:100px;
    background-color:#000000;
    color:white;
    text-align:center;      /*行内元素水平居中*/
    line-height:100px;      /*行内元素垂直居中*/
}
.box11>a{
    color:white;
    text-decoration:none;
}

/*第七种方法:img元素有点特殊,它并不是单纯的行内元素,可以设置宽高*/
.box12 {
    width: 100%;
    height: 100px;
    background-color: #000000;
    text-align:center;      /*img元素可以居中*/
    line-height:140px;     /*这里需要进行调整,因为img元素对齐的方式有点不一样*/
}
.box12>img{
    width:50px;
}

/*第八种方法:行内元素转成块级元素*/
/*可以将图片转换为块级元素,然后利用块级元素进行调整*/
.box11 > img {
    /*img只设置宽高中的一个属性,另一个会自动调整成原来比列,保证不变形*/
    /*单位是%的话,会根据父元素进行调整*/
    height: 50%;
    display: block;
    /*第二种方法*/
    position: relative;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%)
}

/*第九种方法:父元素使用display:table-cell*/
/*这个方法十分方便快捷,可以放心使用*/
.box13 {
    width: 500px;
    height: 150px;
    background-color: antiquewhite;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
.box13>img{
    height:50%;
}

/*第十种方法:给div设置text-align,给img设置transform,这样也能居中*/
.box14 {
    width: 500px;
    height: 150px;
    background-color: antiquewhite;
    text-align:center;
}
.box14 > img {
        height: 50%;
        /*vertical-align:150px;   这句话放在这没有起到作用*/

        /*可以使用margin-top调整垂直位置,但是比较死板*/

        /*margin-top:50px;*/
        /*使用transform沿着Y轴移动50%,就能够垂直居中*/
        transform:translateY(50%);
    }

  这里只尝试了div包一个div、div包一个img元素这两种情况,后续学习div包一个input的情况!

转载于:https://www.cnblogs.com/baojinjin/p/9141998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值