Вы можете использовать фоновые градиенты для этого эффекта. Для вашего примера просто добавьте следующие строки (это просто так много кода, потому что вам нужно использовать префиксы поставщика):
background-image:
-moz-linear-gradient(top, #000 10px, transparent 10px),
-moz-linear-gradient(bottom, #000 10px, transparent 10px),
-moz-linear-gradient(left, #000 10px, transparent 10px),
-moz-linear-gradient(right, #000 10px, transparent 10px);
background-image:
-o-linear-gradient(top, #000 10px, transparent 10px),
-o-linear-gradient(bottom, #000 10px, transparent 10px),
-o-linear-gradient(left, #000 10px, transparent 10px),
-o-linear-gradient(right, #000 10px, transparent 10px);
background-image:
-webkit-linear-gradient(top, #000 10px, transparent 10px),
-webkit-linear-gradient(bottom, #000 10px, transparent 10px),
-webkit-linear-gradient(left, #000 10px, transparent 10px),
-webkit-linear-gradient(right, #000 10px, transparent 10px);
background-image:
linear-gradient(top, #000 10px, transparent 10px),
linear-gradient(bottom, #000 10px, transparent 10px),
linear-gradient(left, #000 10px, transparent 10px),
linear-gradient(right, #000 10px, transparent 10px);
Нет необходимости в ненужной разметке.
Если вы просто хотите иметь двойную границу, вы можете использовать контур и границу вместо границы и заполнения.
Хотя вы также можете использовать псевдоэлементы для достижения желаемого эффекта, я бы не советовал этого делать. Псевдоэлементы - это очень мощный инструмент, который предоставляет CSS. Если вы «тратите» их на такие вещи, вы, вероятно, их где-то еще пропустите.
Я использую псевдоэлементы только в том случае, если другого выхода нет. Не потому, что они плохие, совсем наоборот, потому что я не хочу тратить свой Джокер.