icss学习之单行居中,多行居左,超过省略

<div class="container">
	<h2><p><em>我是单行标题居中</em></p></h2>
	<h2><p><em>我是两行标题两行标题两行标题居左</em></p></h2>
	<h2><p><em>我是超过两行的标题最后点号省略我是超过两行的标题最后点号省略我是超过两行的标题最后点号省略省略省略</em></p></h2>
</div>

#第一种方法#
##首先是单行居中,多行居左##

<h2><p>单行居中,多行居左</p></h2>

我们让内层 p 居左 text-align:left,外层 h2 居中 text-align:center,并且将 p 设置为 display:inline-block ,利用 inline-block 元素可以被父级 text-align:center 居中的特性,这样就可以实现单行居中,多行居左,CSS 如下:

p {
    display: inline-block;
    text-align: left;
}

h2{
    text-align: center;
}

在这里插入图片描述
##超出两行省略##
完成了第一步,接下来要实现的是超出两行显示省略符号

多行省略是有专门的新 CSS 属性可以实现的,但是有些兼容性不大好。主要用到如下几个:

display: -webkit-box; // 设置display,将对象作为弹性伸缩盒子模型显示
-webkit-line-clamp: 2; // 限制在一个块元素显示的文本的行数
-webkit-box-orient: vertical; // 规定框的子元素应该被水平或垂直排列

上述 3 条样式配合 overflow : hidden 和 text-overflow: ellipsis 即可实现 webkit 内核下的多行省略。好,我们将上述说的一共 5 条样式添加给 p 元素

p {
//inline-block 元素可以被父级 text-align:center 居中的特性
    display: inline-block;
    text-align: left;
    
    overflow : hidden;
    //显示省略符号来代表被修剪的文本。
    text-overflow: ellipsis;
    //将对象作为弹性伸缩盒子模型显示
    display: -webkit-box;
    //限制在一个块元素显示的文本的行数
    -webkit-line-clamp: 2;
    //规定框的子元素应该被水平或垂直排列
    -webkit-box-orient: vertical;
}

h2{
    text-align: center;
}

在这里插入图片描述

原因在于我们第一个设置的 display: inline-block ,被接下来设置的 display: -webkit-box 给覆盖掉了,所以不再是 inline-block 特性的内部 p 元素占据了一整行,也就自然而然的不再居中,而变成了正常的居左展示。

再添加多一层标签,如下:

<h2><p><em>单行居中,多行居左<em></p></h2>

设置 em 为 display: -webkit-box
设置 p 为 inline-block
设置 h2 为 text-align: center
在这里插入图片描述
#第二种方法#

<div class="container">
    <h2>
        <p>我是单行标题居中</p>
        <p class="pesudo">我是单行标题居中</p>
    </h2>
</div>

这里,新添加了一行 class 为 pesudo 的 p 标签,标签内容与文本内容一致,但是我们限定死 class=“pesudo” 的 p 标签高度 height 与上面的 p 的行高 line-height一致,并设置 overflow:hidden ,那么这个 p 标签最多只能能展示出一行文本,接下来使用绝对定位,定位到 h2 的顶部,再设置 text-align:center 以及背景色与 h2 背景色一致。

这样最多显示单行且样式为居中的 class=“pesudo” p 标签就重叠到了原本的 p 标签之上。表现为单行居中,多行时第一行则铺满,解决了我们的问题。多行省略与方法一相同。

h2{
    position:relative;
    line-height:30px;
}
p{
    overflow : hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.pesudo{
    position:absolute;
    width:100%;
    height:30px;
    overflow:hidden;
    top:0;
    background:#ddd;
    text-align:center;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值