有没有人告诉我,如果我想要一个顶部的三角形而不是底部的三角形,这里需要做哪些修改?角形、告诉我、有没有人、不是

2023-09-03 11:53:46 作者:校园装逼少女i

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
.a {
  /* you can change this variable */
  --arrow-width: 30px;
  
  width: 100%;
  height: 300px;
  --mask: linear-gradient(#000, #000) 0 0/100% calc(100% - var(--arrow-width)) no-repeat, 
          linear-gradient(to top right, transparent 0 50%, #000 50.1% 100%) calc(50% - var(--arrow-width) / 2) 100% / var(--arrow-width) var(--arrow-width) no-repeat, 
          linear-gradient(to top left, transparent 0 50%, #000 50.1% 100%) calc(50% + var(--arrow-width) / 2) 100% / var(--arrow-width) var(--arrow-width) no-repeat;
  -webkit-mask: var(--mask);
  mask: var(--mask);
  background: url(https://picsum.photos/id/600/360) 50% 50% / cover;
}
<div class="a"></div>

有没有人告诉我,如果我想要一个顶部的三角形而不是底部的三角形,这里需要做哪些更改?

推荐答案

基本上您需要更改各种渐变的位置。

解决问题一个等腰三角形的底角是30度廷底边上的高把它对折后得到两个直角三角形每个三角形中两个锐角分别是多少度先画图再解答

第一个箭头的垂直位置应从箭头宽度开始。

其他两个垂直位置都应设置为0,而不是100%。

您还需要将最后两个渐变的方向从";更改为顶部";,再更改为底部";,这样箭头将指向上方。

最后,您还应在";箭头宽度";var的高度处添加";padding-top";,以避免图像大小损失太多。

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
.a {
  /* you can change this variable */
  --arrow-width: 30px;
  padding-top: var(--arrow-width);
  margin-top: calc(var(--arrow-width) * -1); /* added to make the image aligned to the top */
  width: 100%;
  height: 300px;
  --mask: linear-gradient(#000, #000) 0 var(--arrow-width)/100% calc(100% - var(--arrow-width)) no-repeat, 
          linear-gradient(to bottom right, transparent 0 50%, #000 50.1% 100%) calc(50% - var(--arrow-width) / 2) 0 / var(--arrow-width) var(--arrow-width) no-repeat, 
          linear-gradient(to bottom left, transparent 0 50%, #000 50.1% 100%) calc(50% + var(--arrow-width) / 2) 0 / var(--arrow-width) var(--arrow-width) no-repeat;
  -webkit-mask: var(--mask);
  mask: var(--mask);
  background: url(https://picsum.photos/id/600/360) 50% 50% / cover;
}
<div class="a"></div>