이 시리즈는 몇 가지 흥미로운 CSS 주제를 논의하는 첫 번째 시리즈이며, 일부 주제는 문제 해결을 위한 아이디어를 넓히기 위해 고안되었습니다. 또한 쉽게 간과할 수 있는 몇 가지 CSS 세부 사항도 포함합니다.
문제 해결 시 호환성은 고려되지 않습니다. 질문이 거칠고 제약이 없습니다. 문제 해결에서 익숙하지 않다고 생각되는 CSS 속성이 있으면 빨리 공부하세요. .
계속 업데이트하고, 계속 업데이트하고, 계속 업데이트하고, 중요한 것을 세 번 말하세요.
흥미로운 CSS 주제에 대해 이야기해 보세요(1)-왼쪽에 수직 막대를 구현하는 방법
흥미로운 CSS 주제에 대해 이야기하기(2) - 줄무늬 테두리 구현에서 상자 모델에 대해 이야기하기
흥미로운 CSS 주제에 대해 이야기해 보세요(3) - 스택 순서와 스택 컨텍스트에 대해 얼마나 알고 있나요
흥미로운 CSS 주제에 대해 이야기하기(4) - 반사부터 시작하여 CSS 상속에 대해 이야기
모든 주제는 내 Github에 요약되어 있습니다.
이 질문은 내 동생에게 정말 멋진 질문입니다.
질문은 다음과 같습니다. 순수 CSS를 사용하면 중앙에 한 줄의 텍스트가 표시되고 왼쪽에 여러 줄의 텍스트가 줄임표로 끝나야 합니다. :
긴 기사를 읽고 싶지 않다면 먼저 효과를 살펴보세요. -webkit- 커널 아래 데모를 클릭하세요
다음 단계는 이 효과를 단계별로 달성하는 것입니다.
은 text-align:center
을 중심으로 정렬해야 하며, 왼쪽 중심이 기본값인 text-align:left
입니다. 두 개를 결합하여 가운데에 한 줄, 왼쪽에 여러 줄을 만들면 어떻게 될까요? 이를 위해서는 태그가 하나 더 필요합니다. 처음에 다음과 같이 정의한다고 가정해 보겠습니다.
<h2>单行居中,多行居左</h2>
이제 h2
중간에 p
태그 레이어를 하나 더 중첩합니다.
<h2><p>单行居中,多行居左</p></h2>
내부 레이어 p
를 왼쪽에 text-align:left
두고, 외부 레이어 h2
를 중앙에 text-align:center
두고, p
를 display:inline-block
로 설정하여 inline-block
요소가 be parented text-align:center
중앙 정렬 기능으로 단일 행을 중앙에 배치하고 여러 행을 남길 수 있습니다. CSS는 다음과 같습니다.
p { display: inline-block; text-align: left; } h2{ text-align: center; }
得到的效果如下:
完成了第一步,接下来要实现的是超出两行显示省略符号。
多行省略是有专门的新 CSS 属性可以实现的,但是有些兼容性不大好。主要用到如下几个:
上述 3 条样式配合 overflow : hidden
和 text-overflow: ellipsis
即可实现 webkit
内核下的多行省略。好,我们将上述说的一共 5 条样式添加给 p
元素
p { display: inline-block; text-align: left; } h2{ text-align: center; }
看看效果如下:
(在 -webkit- 内核浏览器下)发现,虽然超出两行的是被省略了,但是第一行也变回了居左,而没有居中。
看回上面的 CSS 中的 p
元素,原因在于我们第一个设置的 display: inline-block
,被接下来设置的display: -webkit-box
给覆盖掉了,所以不再是 inline-block
特性的内部 p
元素占据了一整行,也就自然而然的不再居中,而变成了正常的居左展示。
记得上面我们解决单行居中,多行居左时的方法吗?上面我们添加多了一层标签解决了问题,这里我们再添加多一层标签,如下:
<h2><p><em>单行居中,多行居左<em></p></h2>
这里,我们再添加一层 em
标签,接下来,
em
为 display: -webkit-box
p
为 inline-block
h2
为 text-align: center
嘿!通过再设置多一层标签,解决 display 的问题,完美解决问题,再看看效果,和一开始的示意图一样:
-webkit- 内核下 Demo 戳我
是的,还有第二种方法......
上面我们为了让第一行居中,使用了三层嵌套标签。
这次我们换一种思路,只使用两层标签,但是我们加多一行。结构如下:
<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
标签之上。表现为单行居中,多行时第一行则铺满,解决了我们的问题。多行省略与方法一相同。CSS 如下:
<div class="container"> <h2> <p>我是单行标题居中</p> <p class="pesudo">我是单行标题居中</p> </h2> </div>
-webkit- 内核下 Demo 戳我
所有题目汇总在我的 Github ,发到博客希望得到更多的交流。
到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。