添加具有响应的 CSS 的三角形

Adding triangles with CSS that are responsive

我正在努力创建绿色背景的上述设计,两个白色三角形和三角形点上的蓝点。

我必须使用 W3School 教程创建两个三角形,但它们没有响应导致问题。我在 PS 中创建了带有白色三角形和蓝色圆点的绿色背景,但无法让图像在不同屏幕尺寸下都位于同一位置。

使用 HTML/CSS 创建上述内容的任何帮助都会很棒。

您可以在伪元素上使用 clip-path 在另一个伪元素上创建图形之字形和背景图像以放置蓝点。

重要的是要注意,一切都必须以相对的方式进行,例如%s,这样整体就有反应了。

虽然这对于锯齿形来说非常简单,但必须对点的放置进行调整,因为东西是相对于它们的左上角而不是相对于它们的中心放置的,这正是我们对圆圈的要求.

'background' 的高度(之字形加上绿色下方一点点以容纳底部的圆圈)也必须根据宽度指定。最终 CSS 宽高比对此很有用,但目前并非所有浏览器都支持它,因此此代码段使用了众所周知的技巧,即根据填充定义元素的高度(单位始终是宽度)。

* {
  padding: 0;
  margin: 0;
}

.graphbg {
  background: white;
  width: 100vw;
  height: 100vh;
  position: relative;
  margin: 0;
  padding: 0;
}

.graphbg::before,
.graphbg::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  overflow: hidden;
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1;
  overflow: hidden;
  --w: 4;
  /* set these so --w/--h is the proportion of width to height you want this background to have */
  --h: 1;
  /* soon you will be able to use aspect-ratio: 4 / 1 but currently, August 2021, Safari IOS does not support it */
  height: 0;
  padding-top: calc( var(--h) / var(--w) * 100%);
  /* to force the element to have the right height */
}

.graphbg::before {
  background: green;
  clip-path: polygon(0 0, 98% 0, 50% 95%, 25% 50%, 0 95%);
}

.graphbg::after {
  background-image: radial-gradient(circle, blue 0 70%, transparent 70% 100%), radial-gradient(circle, blue 0 70%, transparent 70% 100%), radial-gradient(blue 0 70%, transparent 70% 100%), radial-gradient(blue 0 70%, transparent 70% 100%);
  background-repeat: no-repeat;
  background-size: 2% 8%;
  background-position: -1% 99%, 24.5% 50%, 50% 97%, 99% -4%;
}
<div class="graphbg"></div>