23
2019
12

::before ::after伪元素下特有content属性和用法

css3为了区分伪类和伪元素,伪元素采用双冒号写法。

常见伪类   :hover,:link,:active,:target,:not(),:focus。

常见伪元素   ::first-letter,::first-line,::before,::after,::selection。

::before和::after下特有的content,用于在css渲染中向元素逻辑上的头部或尾部添加内容。

这些添加不会出现在DOM中,不会改变文档内容,不可复制,仅仅是在css渲染层加入。

所以不要用:before或:after展示有实际意义的内容,尽量使用它们显示修饰性内容,例如图标。

比如:有些网站的联系电话,希望在它们前加一个icon,就可以使用:before伪元素,如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
	.ui::before {
	content:'\260E';
    font-size: 15px;
	}
		</style>
	</head>
	<body>
		<div class="uu">
			<p class="ui">13977011111</p>
		</div>
	</body>
</html>

注意:这些特殊字符的html,js和css的写法是不同的,具体可查看html特殊字符的html,js,css写法汇总。

二、content属性

::before和::after必须配合content属性来使用,content用来定义插入的内容,content必须有值,至少是空。默认情况下,伪类元素的display是默认值inline,可以通过设置display:block来改变其显示。

content可取以下值。

1、string

使用引号包一段字符串,将会向元素内容中添加字符串。如:a:after{content:""}

比如:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
	p::before{
    content: "《";
    color: blue;
	}
	p::after{
    content: "》";
    color: blue;
	}
		</style>
	</head>
	<body>
		<div class="uu">
			<p class="ui">content属性和用法</p>
		</div>
	</body>
</html>

2、attr()

通过attr()调用当前元素的属性,比如将图片alt提示文字或者链接的href地址显示出来。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
	a::after{
    content: "(" attr(href) ")";
	}
		</style>
	</head>
	<body>
		<div class="uu">
			<a href="https://www.qiquanji.com/">期权记</a>
		</div>
	</body>
</html>

3、url()/uri()

用于引用媒体文件。

例如:“期权记”前面给出一张图片,后面给出href属性。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
	a::before{
    content: url("https://www.qiquanji.com/data/img/dmj/201903021551541417148425.jpg");
}
	a::after{
    content:"("attr(href)")";
	}
	a{
    text-decoration: none;
	}
		</style>
	</head>
	<body>
		<div class="uu">
			<a href="https://www.qiquanji.com/">期权记</a>
		</div>
	</body>
</html>

调用计数器,可以不使用列表元素实现序号功能。

配合counter-increment和counter-reset属性使用:

h2:before { counter-increment: chapter; content: "Chapter " counter(chapter) ". " }

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
	body{
    counter-reset: section;
}
h1{
    counter-reset: subsection;
}
h1:before{
    counter-increment:section;
    content:counter(section) "、";
}
h2:before{
    counter-increment:subsection;
    content: counter(section) "." counter(subsection) "、";
}
		</style>
	</head>
	<body>
<h1>Html/Css</h1>
<h2>........</h2>
<h2>........</h2>
<h2>........</h2>

<h1>JavaScript</h1>
<h2>........</h2>
<h2>........</h2>

<h1>jQuery</h1>
<h2>........</h2>
<h2>........</h2>
	</body>
</html>

三、使用

1、清除浮动

清除浮动方法有多种,现在最常用的就是下面这种方法,仅需要以下样式即可在元素尾部自动清除浮动

.cf:before,
.cf:after {
    content: " ";
    display: table; 
}
.cf:after {
    clear: both;
}
.cf {
    *zoom: 1;
}

2、模拟float:center的效果

float没有center这个取值,但是可以通过伪类来模拟实现。

这个效果实现很有意思,左右通过::before float各自留出一半图片的位置,再把图片绝对定位上去。

核心css如下:

#page-wrap { width: 60%; margin: 40px auto; position: relative; }
#logo { position: absolute; top: 0; left: 50%; margin-left: -125px; }
#l, #r { width: 49%; }
#l { float: left; }
#r { float: right; }
#l:before, #r:before { content: ""; width: 125px; height: 250px; }
#l:before { float: right; }
#r:before { float: left; }

完整代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
    <style>
    * {
        margin: 0;
        padding: 0;
    }
    body {
        font: 14px/1.8 Georgia, serif;
    }
        #page-wrap { 
        	width: 60%; margin: 40px auto; position: relative; 
        	}
        #logo { 
        	position: absolute; top: 0; left: 50%; margin-left: -125px;
        	 }
        #l, #r { 
        	width: 49%;
        	 }
        #l { 
        	float: left;
        	 }
        #r { 
        	float: right;
        	 }
        #l:before, #r:before {
        	 content: ""; width: 125px; height: 250px;
        	  }
        #l:before { 
        	float: right; 
        	}
        #r:before {
        	 float: left; 
        	 }
    </style>
</head>
<body>
    <div id="page-wrap">
        <img src="https://www.qiquanji.com/data/img/dmj/201905221558499406355729.jpg" id="logo">
        <div id="l">
            <p>
                随着业务需求的快速发展变化,需求不断增长,迫切需要一种更加快速高效的软件交付方式。微服务可以弥补单体应用不足,是一种更加快速高效软件架构风格。单体应用被分解成多个更小的服务,每个服务有自己的独立模块,单独部署,然后共同组成一个应用程序。把范围限定到单个独立业务模块功能。分布式部署在各台服务器上。本篇我们将介绍如何使用.NET Core打造自己的微服务架构。

Linux是一个多用户、多任务的操作系统,如果要使用系统资源,就必须向系统管理员申请一个用户,通过这个用户进入系统,通过建立不同属性的用户实现不同的作用或权限,可以合理利用和控制系统资源。

我们生成jQuery实例对象后,就可以使用原型上的css(), html()等方法,这就体现了原型继承:由构造函数生成的实例对象,可以继承构造函数的原型对象上的属性和方法。

最近重新开始学习js,在第一章的一个小节里写到了“脚本调用策略”,书上写的这部分不多,但是发现在我之前的(笔)面试中,问到的频率还是比较高的。自己一直习惯于直接把所有js文件写在head里,后来了解到优化后,会把js放在最底部,但并不太懂这样做的好处,而且其他的一些处理方式,自己也并未有过实际的操作。

对实时性要求比较高的场景,使用数据库的分区分表分库。

对实时性要求不高的场景,可以考虑使用索引库(es/solr)或者大数据hadoop平台来解决(如数据分析,挖掘,报表等)或者混合使用(如es+hbase/mongodb)。

当数据量特别大的时候,我们对生产端限流肯定是不科学的,因为有时候并发量就是特别大,有时候并发量又特别少,我们无法约束生产端,这是用户的行为。所以我们应该对消费端限流,用于保持消费端的稳定,当消息数量激增的时候很有可能造成资源耗尽,以及影响服务的性能,导致系统的卡顿甚至直接崩溃。
            </p>
        </div>
        <div id="r">
            <p>
                在这本使用LDAP的Spring Security快速指南中,我们学习了如何使用LDIF配置基本系统并在spring security配置LDAP。

我们之前将敏捷方法与传统的瀑布流方法进行了比较。敏捷这种软件开发领域的项目管理办法,在过去数年有着强劲的发展势头。它解决了产品需求与开发等方面的不确定性。与之相较的瀑布流方法则试图将项目生命周期的各阶段,即启动、计划、执行和收尾等,按照严格的结构顺序进行组织。

你是在分岔口的操作员。当你听到列车来了,你没办法知道这两条路哪一条是正确的。然后呢,你让列车停下来,问列车员哪条路是对的,然后你才转换铁路方向。

之所以叫自制而不叫自研,因为真的没有多少可以称之为研究的东西,完全是拼凑而成。自制的这个driver本身没有多少技术含量,但是需要深入了解docker的运行原理和底层的存储方式,然后寻找一种恰当的方式来解决它。

这可以说是富文本技术实现的麻烦之处(难点)。玩过富文本技术的同学,肯定会想到“document.execCommand()”这个大名鼎鼎的对象。目前市面上的富文本基本都是基于这个对象打造。比如对选区执行一个加粗修饰,你可以直接调用“document.execCommand('bold')”。该API会将用户选择的文本都加上一个"strong"标签。
            </p>
        </div>
    </div>
</body>
</html>

3、做出各种图形效果

例如:一个六角星

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
    <style>
   #dd {
  width: 0;
  height: 0;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;
  border-bottom: 100px solid red;
  position: relative;
}
#dd::after {
  width: 0;
  height: 0;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;
  border-top: 100px solid red;
  position: absolute;
  content: "";
  top: 30px;
  left: -50px;
}
    </style>
</head>
<body>
<div id="dd"></div>
</body>
</html>

#dd的div是一个正三角行,#dd::after是一个倒三角形,通过绝对定位,调整其位置即可实现六角星的效果。

原文链接:https://www.qiquanji.com/post/8692.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。