jenkins 构建单个_使用单个HTML元素构建图标

jenkins 构建单个

随着超高清屏幕的出现(认为视网膜),新的设计挑战出现了。 我们需要找到适应所有设备的方法。 以显示图标为例。 我们可以依靠200%的图像或使用SVG来提供图像,但仅凭CSS即可构建数量惊人的图形。 让我们用一个HTML元素构建一个精美的图标。


开始之前需要了解的有用资料

单个元素的主要问题在于以下事实:我们仅限于可以使用的“构建块”的数量。 幸运的是,有一些技巧:

伪元素

伪元素(也称为生成的内容 )在文档标记本身( DOM )中不存在,但由CSS创建。 它们为您提供了将另外两个可以(或多或少)使用相同属性的元素添加到默认元素的可能性。

例如,使用以下标记:

<div class="square"></div>

然后应用以下样式规则:

.square {
	position: relative;
	background: blue;
	width: 50px;
	height: 50px;
}
.square::before {
	position: absolute;
	left: -50px;	
	content: '';
	height: 50px;
	width: 50px;
	display: block;
	background: green;
}
.square::after {
	position: absolute;
	left: 50px;
	content: '';
	height: 50px;
	width: 50px;
	display: block;
	background: red;	
}

在本练习中,我们将使用像素值,尽管通常建议使用灵活的度量单位,例如ems。

注意:与单个冒号相反,双冒号( :: :)是CSS3语法。 它将伪元素与伪选择器区分开,例如:hover

我们给了自己更多的两个构建基块,但是值得注意的是,某些CSS3属性不适用于生成的内容:

  • 转场
  • 动画制作

要知道的另一件事是,生成的内容将显示在默认元素的顶部,除非它们具有z-index:-1 。 浏览器将其解释为当它们存在于默认的元素 。 如果我们用实际的标记来表示伪元素,则代码如下:

<div class="square">
	<div class="before"></div>
	<div class="after"></div>
</div>
.square {
	background: blue;
	width: 50px;
	height: 50px;
	position: relative;
}
.square .before {
	left: -50px;
	position: absolute;
	content: '';
	height: 50px;
	width: 50px;
	display: block;
	background: green;
}
.square .after {
	content: '';
	height: 50px;
	width: 50px;
	background: red;
	position: absolute;
	left: 50px;
}

盒子阴影

如果仅伪元素不能为您提供足够的“块”来构建图标,则还可以使用框阴影。 此技术将使您可以创建所需数量的“克隆”。 让我们看一个带有圆圈的例子:

<div class="circle"></div>
.circle {
	position: relative;
	background: blue;
	width: 50px;
	height: 50px;
	border-radius:50%;
	box-shadow: -110px 0 0 -20px purple,
				-60px 0 0 -10px red,
				80px 0 0 10px green,
				180px 0 0 20px orange;
}

如您所见,方框阴影使您可以减小或增大初始形状的大小,并将其放置在所需的位置。

属性详细信息box-shadow: 80px 5px 1px 10px green可以按以下方式分解:

  • 80px-> offset-x这使您可以沿x轴放置阴影,并以原始形状的中心为原点
  • 5px-> offset-y这允许您沿y轴放置阴影,以原始形状的中心为原点
  • 1px-> blur-radius此值越大,模糊越大,因此阴影变大和变亮
  • 10px-> spread-radius正值将导致阴影扩大并变大,负值将导致阴影缩小
  • 绿色->颜色您的形状的颜色:)

注意:定义的第一个阴影将始终出现在后续阴影之上。

插入值还允许各种可能性:

<div class="ball"></div>
.ball {
	position: relative;
	background: blue;
	width: 50px;
	height: 50px;
	border-radius: 50%;
	box-shadow: inset 20px 0 0 -10px yellow,inset -20px 0 0 -10px red;
}

渐变色

对于那些对Internet Explorer感兴趣的人来说,值得注意的是CSS渐变仅与IE10兼容 。 对于其他浏览器,请记住适当的供应商前缀。

像阴影一样,渐变可以组合并独立放置。 使用渐变创建形状比以前的属性要复杂一些,因此让我们关注一个“简单”的示例。

在此示例中,我们将使用径向渐变创建四个不同的圆,并将它们分布在父元素内。

<div class="background"></div>
.background {
	background: radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 10%,transparent 10%,transparent 100%),
				radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 30%,transparent 32%,transparent 100%),
				radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 50%,transparent 52%,transparent 100%),
				radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 60%,transparent 62%,transparent 100%);
	background-color: red;
	background-repeat: no-repeat;
	background-position: 0px 0px, 50px 0px, 50px 50px, 0px 50px;
	background-size: 50px 50px;
	width: 100px;
	height: 100px;
	position: relative;
}

要理解此演示,您必须想象元素上的网格。 网格的每个像元将具有不同的梯度。 在这种情况下,单元格为50px x 50px( background-size: 50px 50px; )。我故意将它们散布在元素中,但请注意,它们也可以叠加。 每个单元格可以放置在单独的x和y轴上,其原点位于基础元素的左上角( background-position: 0px 0px, 50px 0px, 50px 50px, 0px 50px; )。

详细的Gradient属性: background: radial-gradient(center, ellipse cover, rgba(0, 0, 0, 1)

  • 中心->位置 :也可以表示为背景位置(中心= 50%50%)。
  • 椭圆->形状 :可以是圆形或椭圆形,在此示例中两者都做相同的事情...
  • rgba(0,0,0,1)10%->颜色和限制 :增加限制值以扩大圆。
  • 透明10%->颜色和限制 :此限制值定义了先前颜色的结尾。 指定一个略高于上一个限制的限制,以使边缘更平滑。
  • 透明100%->颜色和限制 :渐变从10到100%将是透明的。

为了帮助创建CSS渐变,可以使用Collorzilla的Gradient Editor之类的生成

现在,我们已经了解了如何从单个div创建最多的构建基块,让我们练习吧!

这是我们将仅使用一个div(最后是奖金!)创建的内容:


步骤1:身体

这是本教程的一个HTML行:

<div class="ladybug"></div>

为了使我们的图标易于调整大小,我们将使用灵活的度量单位。 em和%。 因此,您只需更改元素的字体大小,就可以根据需要调整大小。 我是在Chrome中开发的,我将让您根据您的浏览器更改供应商前缀

我们将从为瓢虫的身体赋予形状和颜色开始:

.ladybug {
	position: relative;
	font-size: 60px;
	width: 1.8em;
	height: 2em;
	border-radius: 50%;
	background-color: #E11;
}

现在,让我们使用“径向渐变”属性将这些点应用到身体上。

.ladybug {
	position: relative;
	font-size: 60px;
	width: 1.8em;
	height: 2em;
	border-radius: 50%;
	background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 30%,transparent 33%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 50%,transparent 55%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 50%,transparent 55%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 40%,transparent 43%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 40%,transparent 43%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 45%,transparent 50%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 45%,transparent 50%,transparent 100%);
	background-color: #E11;
	background-repeat: no-repeat;
	background-position: 0.66em 0.2em,0.3em 0.6em,1em 0.6em,0.9em 1.1em,0.4em 1.1em,1.1em 1.5em,0.2em 1.5em;
	background-size: 0.5em 0.5em;
}

出色的工作-目前,我们已经完成了对人体的研究。


步骤2:头部

这部分是最快的。 我们将绘制一个半圆的黑色并将其放置在身体顶部。 为此,我们将使用伪元素::before

.ladybug::before {
	content: '';
	position: absolute;
	display: block;
	height: 0.5em;
	width: 1.2em;
	top: -0.24em;
	background: black;
	left: 0.3em;
	border-radius: 50% 50% 0% 0% / 100% 100% 0 0;
}

步骤3:眼睛

在这里,我们将使用伪元素::after和box shadow属性创建眼睛。 我们首先创建基本圆(瞳Kong),然后将其“克隆”以创建眼睛的白色,轮廓和另一只眼睛。

.ladybug::after {
	content: '';
	position: absolute;
	display: block;
	height: 0.1em;
	width: 0.1em;
	background: black;
	top: -0.1em;
	left: 0.5em;
	border-radius: 50%;
	box-shadow: 0 0 0 0.1em white,0em 0 0 0.13em black,0.7em 0 0 0 black,0.7em 0 0 0.1em white,0.7em 0 0 0.13em black;
}

步骤4:

您必须在思考“我们还有一个剩余要素”。 不用担心,我们将重复使用与眼睛相同的阴影。

.ladybug::after {
	content: '';
	position: absolute;
	display: block;
	height: 0.1em;
	width: 0.1em;
	background: black;
	top: -0.1em;
	left: 0.5em;
	border-radius: 50%;
	box-shadow: 0 0 0 0.1em white,0em 0 0 0.13em black,0.7em 0 0 0 black,0.7em 0 0 0.1em white,0.7em 0 0 0.13em black,1.2em 0.5em 0 0.02em black,1.35em 1.1em 0 0.02em black,1.2em 1.65em 0 0.02em black,-0.5em 0.5em 0 0.02em black,-0.65em 1.1em 0 0.02em black,-0.5em 1.65em 0 0.02em black;
}

我们的瓢虫图标终于完成了!


步骤5:红利!

我们实际上还没有完成。 我答应过你,这就是奖金。 动画是CSS相对于SVG的优势之一; 让我们为鼠标悬停时的瓢虫动画。 这是额外CSS代码:

@-webkit-keyframes ladybug
	{
	0%   {
		background-position: 0.66em 0.2em,0.3em 0.6em,1em 0.6em,0.9em 1.1em,0.4em 1.1em,1.1em 1.5em,0.2em 1.5em;
	}

	50% {
		background-position: 0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em;
	}

	100%   {
		background-position: 0.66em 0.2em,0.3em 0.6em,1em 0.6em,0.9em 1.1em,0.4em 1.1em,1.1em 1.5em,0.2em 1.5em;
	}
	}

.ladybug:hover {
	-webkit-animation: ladybug 1s;
}

我们首先定义一些关键帧,我们将其命名为ladybug 。 然后,我们将这些关键帧触发到图标的悬停状态。 每个关键帧都会更改瓢虫斑点的背景位置

最后,下面是完整CSS代码:

.ladybug {
position: relative;
font-size: 60px;
width: 1.8em;
height: 2em;
border-radius: 50%;
background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 30%,transparent 33%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 50%,transparent 55%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 50%,transparent 55%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 40%,transparent 43%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 40%,transparent 43%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 45%,transparent 50%,transparent 100%),-webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 1) 45%,transparent 50%,transparent 100%);
background-color: #E11;
background-repeat: no-repeat;
background-position: 0.66em 0.2em,0.3em 0.6em,1em 0.6em,0.9em 1.1em,0.4em 1.1em,1.1em 1.5em,0.2em 1.5em;
background-size: 0.5em 0.5em;
}

.ladybug:before {
content: '';
position: absolute;
display: block;
height: 0.5em;
width: 1.2em;
top: -0.24em;
background: black;
left: 0.3em;
border-radius: 50% 50% 0% 0% / 100% 100% 0 0;
}

.ladybug::after {
content: '';
position: absolute;
display: block;
height: 0.1em;
width: 0.1em;
background: black;
top: -0.1em;
left: 0.5em;
border-radius: 50%;
box-shadow: 0 0 0 0.1em white,0em 0 0 0.13em black,0.7em 0 0 0 black,0.7em 0 0 0.1em white,0.7em 0 0 0.13em black,1.2em 0.5em 0 0.02em black,1.35em 1.1em 0 0.02em black,1.2em 1.65em 0 0.02em black,-0.5em 0.5em 0 0.02em black,-0.65em 1.1em 0 0.02em black,-0.5em 1.65em 0 0.02em black;
}

@-webkit-keyframes ladybug
{
0%   {
	background-position: 0.66em 0.2em,0.3em 0.6em,1em 0.6em,0.9em 1.1em,0.4em 1.1em,1.1em 1.5em,0.2em 1.5em;
}

50% {
	background-position: 0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em,0.66em 0.8em;
}

100%   {
	background-position: 0.66em 0.2em,0.3em 0.6em,1em 0.6em,0.9em 1.1em,0.4em 1.1em,1.1em 1.5em,0.2em 1.5em;
}
}
.ladybug:hover {
	-webkit-animation: ladybug 1s;
}

结论

我希望通过本教程向您展示CSS的潜力,以及单个HTML元素可能带来的效果。 考虑使用浏览器支持本教程中讨论CSS属性总是明智的,请确保它们正常降级。

如果您想查看使用单个元素创建的其他图标,我邀请您访问我的网站one-div.com 。 谢谢阅读!

翻译自: https://webdesign.tutsplus.com/articles/building-icons-with-a-single-html-element--webdesign-10012

jenkins 构建单个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值