Для цього можна використовувати фонові градієнти. Для вашого прикладу просто додайте наступні рядки (це просто стільки коду, тому що ви повинні використовувати префікси постачальників):
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. Якщо ви "витратите" їх на подібні речі, ви, мабуть, пропустите їх десь ще.
Я використовую псевдоелементи лише тоді, коли іншого шляху немає. Не тому, що вони погані, а навпаки, бо я не хочу марнувати свого Джокера.