Имитация вывода кода в текстовом редакторе на чистом CSS

T
На сайте с 09.05.2015
Offline
0
778

Здравствуйте!

Недавно писал статью для ресурса BestFREE.ru и там потребовалось организовать вывод фрагмента кода в читабельном виде. В Интернете нашел несколько готовых JS-плагинов для красивой разметки различных языков программирования (вроде, Snippet). Однако, эти плагины довольно громоздкие и, думаю, что нет особой нужды в них, если разметка требуется не так часто. Посему, решил обойтись чистым CSS.

Вот CSS-код, который у меня получился:


.codesheet{
background-color: #FFFCEF;
display:inline-block;
padding: 10px 15px 10px 15px;
border: 1px dashed #E3D3AD;
border-radius: 5px
}
.codesheet p{
font-size:1em;
font-family: monospace;
counter-increment: section;
display:table-row
}
.codesheet p:nth-child(even){
background: #f0f0f0
}
.codesheet p:nth-child(odd){
background: #FFFCEF
}
.codesheet p:before{
content: counter(section) " ";
background-color: #FFFCEF;
color:#808080;
padding-right: 10px;
display:table-cell;
-moz-user-select: -moz-none;
-o-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
user-select: none
}
.codesheet p:after{
margin-right: 10px;
content:" ";
padding: 0 10px;
display:table-cell;
-moz-user-select: -moz-none;
-o-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
user-select: none
}

А вот пример разметки текста под него:


<div class="codesheet">
<p>&lt;IfModule mod_gzip.c></p>
<p>mod_gzip_on Yes</p>
<p>mod_gzip_item_include file \.js$</p>
<p>mod_gzip_item_include file \.css$</p>
<p>mod_gzip_item_include file \.php$</p>
<p>&lt;/IfModule></p>
</div>

Результат можно посмотреть на этой страничке: http://www.bestfree.ru/uslugi/web/page-speed.php

А теперь, собственно, вопросы:

1. Не получается выровнять див с кодом по центру (не помогают ни margin: 0 auto, ни text-align: center).

2. Не получается сделать отступ основного текста кода от столбика с цифрами. Пробовал добавлять margin-right для псевдокласса :before, но он не срабатывает, хотя паддинг отображается корректно (пока решил за счет того, что задал столбику с цифрами цвет фона блока, однако, хотелось бы имитировать серенький фон, как в текстовом редакторе).

3. Наверное, этот вопрос вытекает из предыдущего: не получается также сделать отступ справа от текста (решил вставкой пробела через псевдокласс :after, но подозреваю, что это огромный костыль...)

Чтоб было понятнее, чего мне нужно, вот скриншот:

Также буду благодарен, если Вы укажете мне на чисто эстетические нюансы, поскольку, дизайнер из меня не ахти какой :)

S1
На сайте с 28.03.2010
Offline
72
#1

Ну на первый вопрос здесь ответ очевиден, это инлайн элемент, значит нужно для родительского элемента указать text-align:center;

ICQ: 3533966 | Skype: spider13software | E-Mail: admin@spider13.net | Telegram: spider13software| Разработчик Node.js (https://spider13.net/) | Заметки онлайн (https://notes.spider13.net/)
T
На сайте с 09.05.2015
Offline
0
#2
spider13:
нужно для родительского элемента указать text-align:center;

Родительским элементом там является блок со статьей. Если я задам выравнивание для него, то весь текст статьи выровняется по центру :(

S1
На сайте с 28.03.2010
Offline
72
#3
TRos:
Родительским элементом там является блок со статьей. Если я задам выравнивание для него, то весь текст статьи выровняется по центру :(

Без правки html с подобной структурой никак нельзя сделать.

Ayavryk
На сайте с 11.10.2003
Offline
209
#4

А чем вам <PRE> не угодил?

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий