Ebbinghaus Illusion

Open fullscreen view :root { --p: orange; --s: teal; overflow: hidden; margin: 0; height: 100vh; &::before, &::after { --size: 4em; content: ""; font-size: 1vmin; position: absolute; width: 50em; aspect-ratio: 1; top: 50%; left: calc(50% - min(55em, 50vw)); translate: 0 -50%; background: var(--circles), radial-gradient(var(--p) var(--size), #0000 0); transition: top, left, translate; transition-duration: 1s; } &::before { --size2: calc(var(--size) / 2); --dist: calc(var(--size) * 1.7); --distNo: calc(var(--dist) * -1); --dist2: calc(var(--size) * 1.23); --dist2No: calc(var(--dist2) * -1); --circles: radial-gradient(var(--s) calc(--size2), #0000 0) 0 var(--dist), radial-gradient(var(--s) calc(--size2), #0000 0) 0 var(--distNo), radial-gradient(var(--s) calc(--size2), #0000 0) var(--dist) 0, radial-gradient(var(--s) calc(--size2), #0000 0) var(--distNo) 0, radial-gradient(var(--s) calc(--size2), #0000 0) var(--dist2) var(--dist2), radial-gradient(var(--s) calc(--size2), #0000 0) var(--dist2) var(--dist2No), radial-gradient(var(--s) calc(--size2), #0000 0) var(--dist2No) var(--dist2), radial-gradient(var(--s) calc(--size2), #0000 0) var(--dist2No) var(--dist2No); } &::after { left: calc(50% + min(55em, 50vw)); translate: -100% -50%; --size2: calc(var(--size) * 2.1); --size2No: calc(var(--size) * -2); --dist: calc(var(--size) * 3); --distNo: calc(var(--dist) * -1); --dist2: calc(var(--size) * 1.23); --dist2No: calc(var(--dist2) * -1); --circles: radial-gradient(var(--s) calc(var(--size2)), #0000 0) 15.5% -11% / 50% 50% no-repeat, radial-gradient(var(--s) calc(var(--size2)), #0000 0) 84.5% -11% / 50% 50% no-repeat, radial-gradient(var(--s) calc(var(--size2)), #0000 0) -16% 50% / 50% 50% no-repeat, radial-gradient(var(--s) calc(var(--size2)), #0000 0) 15.5% 111% / 50% 50% no-repeat, radial-gradient(var(--s) calc(var(--size2)), #0000 0) 84.5% 111% / 50% 50% no-repeat, radial-gradient(var(--s) calc(var(--size2)), #0000 0) 116% 50% / 50% 50% no-repeat } &:hover { &::before, &::after { left: 50%; top: 50%; translate: -50% -50%; } } @media(aspect-ratio < 1) { &::before { font-size: 1.2vmin; left: 50%; top: calc(50% - min(55em, 50vh)); translate: -50% 0%; } &::after { font-size: 1.2vmin; left: 50%; top: calc(50% + min(55em, 50vh)); translate: -50% -100%; } } }

About This Illusion

Which orange circle is larger: the one on the right or the one on the left? It is a trick question: both are the same size. However, having smaller surrounding elements gives the impression that one is larger.

Try This