Rounded avatar

by Julien Roche

HTML

<body>
  <section class="avatar" data-url="https://images.pexels.com/photos/1398195/pexels-photo-1398195.jpeg?cs=srgb&dl=architecture-bay-bridge-1398195.jpg&fm=jpg"></section>
</body>

CSS

:root {
  --avatarTransitionDuration: 0.3s;
  --avatarTransitionTiming: ease-out;
  --avatarSize: 5rem;
}

body {
  background-color: white;
  margin: 3rem;
}

.avatar {
  background-image: attr(data-url url);
  background-position: 50% 50%;
  background-size: cover;
  border-radius: 10rem;
  cursor: pointer;
  height: var(--avatarSize);
  transition: filter var(--avatarTransitionDuration) var(--avatarTransitionTiming);
  position: relative;
  width: var(--avatarSize);
}

.avatar:hover {
  filter: contrast(80%);
}

.avatar::before {
  border: 1px solid lightgrey;
  border-radius: calc(var(--avatarSize) * 2);
  content: '';
  height: var(--avatarSize);
  left: -1px;
  position: absolute;
  transition: left var(--avatarTransitionDuration) var(--avatarTransitionTiming), top var(--avatarTransitionDuration) var(--avatarTransitionTiming), border var(--avatarTransitionDuration) var(--avatarTransitionTiming);
  top: -1px;
  width: var(--avatarSize);
  z-index: -1;
}

.avatar:hover::before {
  border-width: 4px;
  left: -4px;
  top: -4px;
}