我需要创建一个水平导航栏,其形状类似于此链接中“团队”和“合作”div 中使用的形状。是否存在一个图书馆?关联
2 回答
该网站使用背景图像来实现外观,更具体地说,它使用了一种称为sprite(或 CSS sprites)的技术。
该技术本质上只是使用包含多个图像的一个图像,每个图像单独使用。使用单个图像的background-position
规则允许您从本质上选择要使用的大图像的哪一部分。该技术的主要目的是减少 HTTP 请求的数量,以加快页面的加载速度。
请参考http://css-tricks.com/css-sprites/以获得更好的解释。
这是他们在您链接到的网站上使用的精灵:
http://hitmo-studio.com/images/sprites-set-1.png
您可以看到精灵图像顶部的四个框。这是第二个盒子(团队)如何使用精灵图像的正确部分的示例
.list-c li.team a {
background-position: -246px 0;
}
你不需要一个库,它只是 CSS。
在您链接到该站点的页面中,似乎使用图像精灵作为背景图像来创建扭曲(插入/外置三角形)形状的错觉,但可以使用可以处理伪元素的兼容浏览::before
器来模拟这种错觉::after
:
.box {
width: 150px; /* or whatever */
height: 150px;
background-color: #f90; /* adjust to your taste */
padding: 0.5em;
position: relative; /* required to position the pseudo elements */
margin: 0 auto; /* used to move the box off the edge of the page, adjust to taste */
}
.box::before {
content: ''; /* required in order for the ::before to be visible on the page */
position: absolute;
top: 50%;
left: 0;
margin: -25px 0 0 0; /* to position it vertically centred */
border-right: 25px solid transparent;
border-bottom: 25px solid transparent;
border-top: 25px solid transparent;
border-left: 25px solid #fff; /* forms the triangular shape on the left */
}
.box::after{
content: '';
position: absolute;
top: 50%;
right: 0;
margin: -25px -50px 0 0;
border-right: 25px solid transparent;
border-bottom: 25px solid transparent;
border-top: 25px solid transparent;
border-left: 25px solid #f90;
}
请注意,使用这种方法存在问题:
页面的背景无法通过左侧的三角形显示(因为它是纯白色),如果您制作该三角形,
transparent
那么您将通过边框看到,但只能看到.box
div
元素的背景颜色。定位
::before
和::after
伪元素position: absolute
意味着这些元素出现在div
. 所以你可能需要调整padding
那个div
和border-width
伪元素来减少这个问题,这只是一个演示。