解題不考慮相容性,題目天馬行空,想到什麼說什麼,如果解題中有你感覺到生僻的 CSS 屬性,趕緊去補習一下吧。
不斷更新,不斷更新,不斷更新,重要的事情說三次。
這題就厲害了我的哥。
題目就是如上要求,使用純CSS,完成單行文字居中顯示文字,多行居左顯示,最多兩行超過用省略號結尾,效果如下:
#不願意看長篇大論的可以先看看效果:-webkit- 內核下Demo 戳我
##接下來就一步一步來實現這個效果。
#居中需要用到 text-align<a href="http://www.php.cn/wiki/870.html" target="_blank">:center </a>,居左是預設值也就是
text-align:left<a href="http://www.php.cn/wiki/974.html" target="_blank"></a>。如合讓兩者結合達到單行居中,多行居左呢?這需要多一個標籤,假設一開始我們定義如下:
<h2>单行居中,多行居左</h2>
現在,我們在 h2 中間,嵌套多一層標籤
p :
<h2></h2><p>单行居中,多行居左</p>
我們讓內層 p 居左
text-align:left,外層
h2置中
text-align:center,並且將
p 設定為
display<a href="http://www.php.cn/wiki/927.html" target="_blank">:inline-block</a> ,利用
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; // 限制在一個區塊元素顯示的文字的行數
上述 3 条样式配合 <a href="http://www.php.cn/wiki/923.html" target="_blank">overflow</a> : hidden
和 <a href="http://www.php.cn/wiki/868.html" target="_blank">text-overflow</a>: ellipsis
即可实现 webkit
内核下的多行省略。好,我们将上述说的一共 5 条样式添加给 p
元素
p { display: inline-block; text-align: left; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } h2{ text-align: center; }
看看效果如下:
(在 -webkit- 内核浏览器下)发现,虽然超出两行的是被省略了,但是第一行也变回了居左,而没有居中。
看回上面的 CSS 中的 p
元素,原因在于我们第一个设置的 display: inline-block
,被接下来设置的display: -webkit-box
给覆盖掉了,所以不再是 inline-block
特性的内部 p
元素占据了一整行,也就自然而然的不再居中,而变成了正常的居左展示。
记得上面我们解决单行居中,多行居左时的方法吗?上面我们添加多了一层标签解决了问题,这里我们再添加多一层标签,如下:
<h2></h2><p><em>单行居中,多行居左<em></em></em></p>
这里,我们再添加一层 em
标签,接下来,
设置 em
为 display: -webkit-box
设置 p
为 inline-block
设置 h2
为 text-align: center
嘿!通过再设置多一层标签,解决 display 的问题,完美解决问题,再看看效果,和一开始的示意图一样:
-webkit- 内核下 Demo 戳我
是的,还有第二种方法......
上面我们为了让第一行居中,使用了三层嵌套标签。
这次我们换一种思路,只使用两层标签,但是我们加多一行。结构如下:
<p> </p><h2> </h2><p>我是单行标题居中</p> <p>我是单行标题居中</p>
这里,新添加了一行 class 为 pesudo
的 p
标签,标签内容与文本内容一致,但是我们限定死class="pesudo"
的 p
标签高度 height 与上面的 p
的行高 <a href="http://www.php.cn/wiki/864.html" target="_blank">line-height</a>
一致,并设置 overflow:hidden
,那么这个 p
标签最多只能能展示出一行文本,接下来使用绝对定位,定位到 h2
的顶部,再设置 text-align:center
以及背景色与 h2
背景色一致。
这样最多显示单行且样式为居中的 class="pesudo"
p 标签就重叠到了原本的 p
标签之上。表现为单行居中,多行时第一行则铺满,解决了我们的问题。多行省略与方法一相同。CSS 如下:
<p> </p><h2> </h2><p>我是单行标题居中</p> <p>我是单行标题居中</p>
以上是詳解CSS中單行居中,兩行居左,超過兩行用省略號結尾的詳細內容。更多資訊請關注PHP中文網其他相關文章!