基于CSS怎样实现六边形图片,思路和方法是什么
Admin 2022-11-29 群英技术资讯 587 次浏览
在CodePen上看到一个有意思的效果:
这个效果的难点在于六边形的绘制, 那么接下来我们就一起来看下作者是怎么实现他的吧
grid
进行布局, 水平、垂直居中显示clip-path: polygon()
来绘制图片六边形transform: translate()
定位六边形的位置filter: grayscale(80%)
对图片进行滤镜, 将图片转为灰度图像都是我们平时开发中不常用到的CSS3属性, 那么我们先来简单的介绍下吧
grid
兼容性查看
要使 HTML 元素变成一个网格容器,可以将 display
属性设置为 grid
或 inline-grid
。
网格容器内放置着由列和行内组成的网格元素。
属性:
1、grid-template-columns
定义了网格布局中的列的数量,它也可以设置每个列的宽度。
2、grid-template-rows
定义了网格布局中的行的数量,它也可以设置每一行的高度。
3、grid-areas
指定网格元素在网格布局中的大小和位置, 是以下属性的简写属性: grid-row-start / grid-column-start / grid-row-end / grid-column-end | itemname;
4、justify-content
属性用于对齐容器内的网格,设置如何分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间。
5、align-content
属性用于设置垂直方向上的网格元素在容器中的对齐方式。
6、place-content
属性指定网格元素水平、垂直方向元素分布方式
var()
函数兼容性查看
定义: var() 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就很有用。
语法: var(custom-property-name, value)
实例:
:root {
--main-bg-color: coral;
}
#div1 {
background-color: var(--main-bg-color);
}
clip-path
兼容性查看
使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏。可以指定一些特定形状。
polygon( , , …, )
定义了每一个点的坐标,起点是从左上角开始计算的,可以用百分百,也可以用px
等单位。
HTML
<div class="gallery-container">
<div class="gallery">
<img
src="https://picsum.photos/id/1040/300/300"
alt="a house on a mountain"
/>
<img src="https://picsum.photos/id/106/300/300" alt="sime pink flowers" />
<img
src="https://picsum.photos/id/136/300/300"
alt="big rocks with some trees"
/>
<img
src="https://picsum.photos/id/1039/300/300"
alt="a waterfall, a lot of tree and a great view from the sky"
/>
<img src="https://picsum.photos/id/110/300/300" alt="a cool landscape" />
<img
src="https://picsum.photos/id/1047/300/300"
alt="inside a town between two big buildings"
/>
<img
src="https://picsum.photos/id/1057/300/300"
alt="a great view of the sea above the mountain"
/>
</div>
</div>
CSS
.gallery-container {
min-height: 100vh;
display: grid;
place-content: center; /* 水平垂直方向居中 */
background: #aabbfb;
}
.gallery {
--s: 150px; /* control the size */
--g: 10px; /* control the gap */
display: grid;
}
.gallery > img {
grid-area: 1/1; /* 规定从第一行第一列开始显示项目 */
width: var(--s);
aspect-ratio: 1.15; /* 宽高比例缩放 */
object-fit: cover; /* 保持图片原有比例, 会有剪切*/
clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0 50%);
transform: translate(var(--_x, 0), var(--_y, 0)) scale(var(--_t, 1)); /* 对图片进行移动和缩放 */
cursor: pointer;
filter: grayscale(80%); /* 灰度滤镜 */
transition: 0.2s linear; /* 过渡效果 */
}
.gallery > img:hover {
filter: grayscale(0);
z-index: 1;
--_t: 1.2;
}
.gallery > img:nth-child(1) {
--_y: calc(-100% - var(--g));
}
.gallery > img:nth-child(7) {
--_y: calc(100% + var(--g));
}
.gallery > img:nth-child(3),
.gallery > img:nth-child(5) {
--_x: calc(-75% - 0.87 * var(--g));
}
.gallery > img:nth-child(4),
.gallery > img:nth-child(6) {
--_x: calc(75% + 0.87 * var(--g));
}
.gallery > img:nth-child(3),
.gallery > img:nth-child(4) {
--_y: calc(-50% - 0.5 * var(--g));
}
.gallery > img:nth-child(5),
.gallery > img:nth-child(6) {
--_y: calc(50% + 0.5 * var(--g));
}
附图一张, 帮助理解元素移动位置
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
滚动条组成1::-webkit-scrollbar滚动条整体部分2::-webkit-scrollbar-thumb滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)3::-webkit-scrollbar-track滚动条的轨道(里面装有Thumb)4::-webkit-scrollbar-button滚动条的轨道的两端按钮,允许
这篇文章主要介绍了通过CSS边框实现三角形和箭头的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
本篇文章给大家带来了关于css的相关知识,其中主要介绍了关于基础css导航栏和下拉菜单的实现属性等相关问题,使用CSS你可以转换成好看的导航栏而不是枯燥的HTML菜单,下面一起来看一下,希望对大家有帮助。
这篇文章主要介绍了20个让你效率更高的CSS代码技巧(整理),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这篇文章主要介绍了前端实现背景虚化但内容清晰且自适应 的实例代码,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008