Body Border, Rounded Inside

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Leser Arun schrieb mit einer Frage, wie man einen Body-Rahmen erstellt, der an den Innenseiten abgerundet ist. So wie hier. Wir haben schon Body-Rahmen behandelt, aber das war etwas anders.

Das sieht auf den ersten Blick ziemlich verwirrend aus. Man kann keine bizarren inneren Rundungen wie mit CSS machen, das ist verrückte Rede. Aber wenn man es einfach als ein normales abgerundetes Element betrachtet, das auf einem quadratischen Element sitzt, sieht es weniger seltsam aus. Das ist also Versuch #1.

Check out this Pen!

Aber wenn uns dieses zusätzliche Element nur aus Designgründen stört, könnten wir das tatsächlich mit border-image auf dem <body>-Element erreichen. Denken Sie daran, dass border-image im Wesentlichen nur ein "Nine-Slice"-Scaling ist. Vier fest dimensionierte Ecken, vier Kanten, die auf einer Achse wiederholt werden, und eine dehnbare Mitte.

Ziemlich einfach

body {
  border-image: url(rounded-edge.png) 25% repeat;
  border-width: 25px;
}

Beachten Sie, dass IE (jede Version) border-image nicht unterstützt.

Check out this Pen!

Aber aber aber Scrollen

Wir müssten fragen, wie wichtig es ist, dass der „Body-Rahmen“ immer einen sichtbaren unteren Rahmen hat. Wenn es in Ordnung ist, dass der untere Teil wegscrollt, wenn die Seite länger als das Viewport ist, ist das einfach.

Wir stellen einfach sicher, dass der Körper mindestens so groß ist, aber größer werden kann.

* { box-sizing: border-box; }
html { height: 100%; }
body { min-height: 100%; }
Check out this Pen!

Wenn es nicht in Ordnung ist, dass der untere Rahmen wegscrollt (er muss jederzeit sichtbar sein), müssen wir wieder dieses zusätzliche Element verwenden. Nur wir stellen sicher, dass es vertikal scrollen kann. Diese Scrollleiste könnte jedoch die Rundungen beeinträchtigen, es sei denn, wir sind in WebKit und können dann das Aussehen der Scrollleisten anpassen, um sicherzustellen, dass es in Ordnung ist.

body {
  background: #5bb0ff;
}

.page-wrap {
  position: fixed;
  top: 10px;
  right: 10px;
  left: 10px;
  bottom: 10px;
  background: white;
  border-radius: 10px;
  padding: 20px;
  overflow-y: scroll;
}

::-webkit-scrollbar-track {
  background: none;
}
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-thumb {
  background: #ccc;
  border-radius: 5px;
}
Check out this Pen!

Das ist alles, was ich habe.