全屏
<p>鼠标悬停 ↓</p>
<div class="avatars">
  <a href="https://twitter.com/jaffathecake/" title="Jake on Twitter"><img alt="Profile image for Jake Archibald" class="avatar" height="96" width="96" src="avatar_jake.jpg"></a>
  <a href="https://twitter.com/bramus/" title="Bramus on Twitter"><img alt="Profile image for Bramus" class="avatar" height="96" width="96" src="avatar_bramus.jpg"></a>
  <a href="https://twitter.com/una/" title="Una on Twitter"><img alt="Profile image for Una Kravets" class="avatar" height="96" src="avatar_una.jpg"></a>
  <a href="https://twitter.com/argyleink/" title="Adam on Twitter"><img alt="Profile image for Adam Argyle" class="avatar" height="96" width="96" src="avatar_adam.jpg"></a>
</div>
<div class="warning">
  <p>ℹ️ 浏览器版本低,不支持 You are using Chrome but need at least version 107 to check this demo</p>
</div>
root {
	--color-core-primary: #3740ff;
	--color-core-tertiary: #6001ff;
	--color-core-bg: #fff;
	
	--color-avatars-background: #f8f9fa;
}

.avatars {
	--gap: 0.35em;
	--avatar-size: 5em;
	--overlap-size: 2em;
	--hover-overlap-size: 4em; /* Best to keep lower than --avatar-size so that there is still some overlap on hover */
	--border-size: 0.4em;
	--num-children: 4; /* Value is automatically updated based on the number of children. See :has() below. Does not work in Firefox though. */
	--num-children-1: calc(var(--num-children) - 1);

	background: var(--color-avatars-background);
	border-radius: var(--avatar-size);
	
	display: grid;
	gap: var(--gap);
	padding: var(--gap);
	margin: 0 auto;
	
	
	grid-auto-flow: column;
	grid-template-columns: repeat(var(--num-children), var(--grid-cell-size-to-use));
/* 	grid-auto-columns: var(--grid-cell-size-to-use); */
	width: calc(var(--grid-cell-size-to-use) * var(--num-children-1) + var(--gap) * var(--num-children) + var(--avatar-size) + var(--border-size));
	transition: all ease-in-out 0.25s;

	border: calc(var(--border-size) / 2) solid rgb(0 0 0 / 0.3);
}

.avatars {
	--grid-cell-size-to-use: var(--overlap-size);
}


:is( /* Wrapped in an :is() to not break Firefox which does not support :has() */
  .avatars:hover,
  .avatars:not(hover):has(> :focus) /* Also grow when tabbing into the list */
) {
	--grid-cell-size-to-use: var(--hover-overlap-size, var(--avatar-size));
}

.avatars > * {
	width: var(--avatar-size);
	aspect-ratio: 1;
	height: auto;
	
	clip-path: circle(calc(var(--avatar-size) / 2 + var(--border-size) * 2));
	outline: none;
}

.avatars img {
	width: 100%;
	height: auto;
	
	--border-color: var(--color-core-primary);
	outline: var(--border-size) solid var(--border-color);
	outline-offset: calc(var(--border-size) * -2 + 1px); /* 1px extra to cater for rounding errors */
	
	border: var(--border-size) solid var(--color-avatars-background);
	border-radius: var(--avatar-size);
	
	transition: all ease-in-out 0.15s;
}

.avatars :is(:hover, :focus) > img {
	--border-color: var(--color-core-tertiary);
	scale: 1.1;
}

/* Update --num-children based on the number of children .avatars has */
.avatars:where(:has(> *:nth-of-type(1):last-child)) {
	--num-children: 1;
}
.avatars:where(:has(> *:nth-of-type(2):last-child)) {
	--num-children: 2;
}
.avatars:where(:has(> *:nth-of-type(3):last-child)) {
	--num-children: 3;
}
.avatars:where(:has(> *:nth-of-type(4):last-child)) {
	--num-children: 4;
}
.avatars:where(:has(> *:nth-of-type(5):last-child)) {
	--num-children: 5;
}


/* General styles */
body {
	display: grid;
	place-content: center;
}

p {
	text-align: center;
}

html, body {
	margin: 0;
	padding: 0;
	height: 100%;
	width: 100%;
	background: var(--color-core-bg);
}

.warning {
  display: none;
}
const showWarningInChromiumWithNoSupport = () => {
  if (!navigator.userAgentData || !navigator.userAgentData.brands) return;

  const chromium = navigator.userAgentData.brands.filter(
    (b) => b.brand == "Chromium"
  );
  if (!chromium) return;

  if (chromium[0].version >= 107) return;
  document.querySelector(".warning").style.display = "block";
};

showWarningInChromiumWithNoSupport();
返回