法二: 伪元素单行绝对定位障眼法

是的,还有第二种方法……

上面我们为了让第一行居中,使用了三层嵌套标签。

这次我们换一种思路,只使用两层标签,但是我们加多一行。结构如下:

XHTML

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

1
2
3
4
5
6
<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
如下:

XHTML

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

1
2
3
4
5
6
<div class="container">
    <h2>
        <p>我是单行标题居中</p>
        <p class="pesudo">我是单行标题居中</p>
    </h2>
</div>

-webkit- 内核下 Demo 戳我

See the Pen textlayout2 by
Chokcoco (@Chokcoco) on
CodePen.

所有题目汇总在我的 Github ,发到博客希望得到更多的交流。

到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

打赏支持我写出更多好文章,谢谢!

打赏作者

你需要知道的三个 CSS 技巧

2013/03/05 · CSS ·
CSS

英文原文:Three CSS features you need to know
about ,翻译:外刊IT评论

澳门微尼斯人手机版 1

各种浏览器之间的竞争的白热化意味着越来越多的人现在开始使用那些支持最新、最先进的W3C
Web标准的设备,以一种更具交互性的方式来访问互联网。这意味着我们终于能够利用更强大更灵活的CSS来创造更简洁,更好维护的浏览器前端代码。现在让我们来看一看一些也许你还不知道的让人兴奋的CSS
功能

在CSS中用attr()显示HTML属性值

attr()功能早在CSS
2.1标准中就已经出现,但现在才开始普遍流行。它提供了一个巧妙的方法在CSS中使用HTML标签上的属性,在很多情况下都能帮你省去了以往需要Javascript处理的过程。

要想使用这个功能,你需要用到三种元素:一个:before 或 :after CSS伪类样式, .content属性,和一个带有你想使用的HTML属性名称的attr()表达式。例如,想去显示<h3>标题上的data-prefix属性的值,你可以写成这样:

CSS

h3:before { content: attr(data-prefix) ” “; } <h3 data-prefix=”Custom
prefix”>This is a heading</h3>

1
2
3
4
5
h3:before {
    content: attr(data-prefix) " ";
    }
 
    <h3 data-prefix="Custom prefix">This is a heading</h3>

显然,这个例子并没有展示它有多大用处,只是展示了它的基本用法。让我们来试一个更有用的例子,attr()的一个极好的应用就是当用户打印页面时将页面链接显示出来。为了实现这个,你可以这样写:

CSS

@media print { a:after { content: ” (link to ” attr(href) “) “; } }
<a href=” our home page</a>

1
2
3
4
5
6
7
@media print {
    a:after {
    content: " (link to " attr(href) ") ";
    }
    }
 
    <a href="http://example.com">Visit our home page</a>

一旦你知道了这个技巧,你就会吃惊于很多时候它能给你的工作带来的方便!

提示:在新版的CSS3标准中,attr()功能被扩展,可以用在各种CSS标记中。

使用counter()在列表中自动添加序号

另外一个在CSS
2.1在就已经支持的功能是counter(),使用它,你能方便的在页面标题,区块和其它各种连续出现的页面内容上添加序号。有了它,你就不必限制于只能使用<ol>来实现这个效果,你可以更灵活的在页面上使用自定义数字序列。

关键就是它真的很简单:在:before伪类里的content属性加入counter():

CSS

body { counter-reset: heading; } h4:before { counter-increment: heading;
content: “Heading #” counter(heading) “.”; }

1
2
3
4
5
6
7
8
body {
    counter-reset: heading;
    }
 
    h4:before {
    counter-increment: heading;
    content: "Heading #" counter(heading) ".";
    }

如果你想知道更多关于这个counter归零和自增方法的知识,请参考关于这个主题的Mozilla
Developer
Network页面。里面有个极好的如何使用嵌套counter的例子。

使用calc()做算术

最后,但不是最不重要的,让我们来说说calc()功能。这个函数能让你执行简单的算术计算,例如计算元素的长宽,免去了你写不易维护的Javascript代码。这个函数支持所有简单的基本算术运算,包括加减乘除。

比方说,你想创建一个元素,使它的宽度占满它的父元素,但还要留出一部分像素宽做其它用处:

CSS

.parent { width: 100%; border: solid black 1px; position: relative; }
.child { position: absolute; left: 100px; width: calc(90% – 100px);
background-color: #ff8; text-align: center; }

1
2
3
4
5
6
7
8
9
10
11
12
13
.parent {
    width: 100%;
    border: solid black 1px;
    position: relative;
    }
 
    .child {
    position: absolute;
    left: 100px;
    width: calc(90% – 100px);
    background-color: #ff8;
    text-align: center;
    }

澳门微尼斯人手机版,漂亮吧,不是吗?更详细的介绍请参考W3C CSS calc
规范。

我们可以越来越清楚的发现,CSS已经成熟到在某些方法可以替代javascript,极大的简化了web开发人员的工作。如果你还不开始利用这些功能,那只能说是在犯傻。

赞 1 收藏
评论

澳门微尼斯人手机版 2

语法样式

譬如,:root{background:#000} ,即可将页面背景色设置为黑色。

由于属于 CSS3 新增的伪类,所以也可以作为一种 HACK 元素,只对 IE9+ 生效。

介绍 :root 伪类,是因为在介绍使用 CSS变量 的时候,声明全局CSS变量时 :root 很有用。

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

澳门微尼斯人手机版 3
澳门微尼斯人手机版 4

1 赞 3 收藏
评论

十、结构性伪类选择器(:root,:target,:empty,:not

每一个 CSS
伪类及伪元素的出现,肯定都是为了解决某些先前难以解决的问题而应运而生的。

学习了解它们,是解决许多其他复杂 CSS 问题或者前沿技术的基础。

这里是 4
个基本的结构性伪类选择器,结构性伪类选择器的共同特征是允许开发者根据文档树中的结构来指定元素的样式。

超出两行省略

完成了第一步,接下来要实现的是超出两行显示省略符号。

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

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

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

CSS

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

1
2
3
4
5
6
7
p {
    display: inline-block;
    text-align: left;
}
h2{
    text-align: center;
}

看看效果如下:

澳门微尼斯人手机版 5

(在 -webkit-
内核浏览器下)发现,虽然超出两行的是被省略了,但是第一行也变回了居左,而没有居中

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

记得上面我们解决单行居中,多行居左时的方法吗?上面我们添加多了一层标签解决了问题,这里我们再添加多一层标签,如下:

XHTML

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

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

这里,我们再添加一层 em 标签,接下来,

  • 设置 em 为 display: -webkit-box
  • 设置 p 为 inline-block
  • 设置 h2 为 text-align: center

嘿!通过再设置多一层标签,解决 display
的问题,完美解决问题,再看看效果,和一开始的示意图一样:

澳门微尼斯人手机版 6

See the Pen ALpdLj by Chokcoco
(@Chokcoco) on
CodePen.

-webkit- 内核下 Demo 戳我

有趣的CSS题目(10):结构性伪类选择器

2016/11/17 · CSS ·
选择器

本文作者: 伯乐在线 –
chokcoco
。未经作者许可,禁止转载!
欢迎加入伯乐在线 专栏作者。

有趣的CSS题目(5): 单行居中,两行居左,超过两行省略

2016/09/29 · CSS ·
CSS

本文作者: 伯乐在线 –
chokcoco
。未经作者许可,禁止转载!
欢迎加入伯乐在线 专栏作者。

开本系列,讨论一些有趣的 CSS
题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的
CSS 细节。

解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的
CSS 属性,赶紧去补习一下吧。

不断更新,不断更新,不断更新,重要的事情说三遍。

谈谈一些有趣的CSS题目(1):
左边竖条的实现方法

谈谈一些有趣的CSS题目(2):
从条纹边框的实现谈盒子模型

谈谈一些有趣的CSS题目(3):
层叠顺序与堆栈上下文知多少

谈谈一些有趣的CSS题目(4): 从倒影说起,谈谈 CSS 继承
inherit

所有题目汇总在我的 Github 。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注