2016-11-14 5 views
1

Я хочу использовать ::before для получения своего рода встроенного префикса для <span> -tag.
Этот префикс должен иметь одинаковые размеры (отступы и верхняя часть) как <span>, но с другим фоном.Псевдоэлемент: вертикальное выравнивание линии

При плавании влево он слегка сдвинут и создает немного белого пространства над псевдоэлементом. Все подходы, которые я нашел здесь на SO, упомянули, чтобы установить vertical-align: bottom, но он не работает.

Если я размещаю два <span> -tags рядом друг с другом, все работает, но я хочу использовать псевдоэлемент, так как мне нужен только один <span> -tag, а CSS - чище.

HTML

<span>Some text I want to have here.</span> 

SCSS

span { 
    background-color: #ebebeb; 
    padding: .5em .2em .5em .2em; 

    &::before { 
     content: "Prefix:\00a0"; 
     background-color: #d1d1d1; 
     padding: .5em .2em .5em .2em; 
     float: left; 
    } 
} 

См Демо: http://codepen.io/to7be/pen/yVJYaW

ответ

0

Просто удаление float: left делает его хорошо выглядеть:

preview

CodePen: http://codepen.io/anon/pen/VmjvEQ

Вертикальное выравнивание не работает на плавающих элементов.

Если вы не хотите, что небольшое мало места слева, вы можете сделать margin-left: -2px;:

preview

CodePen: http://codepen.io/anon/pen/bBeVQJ

+0

Сначала я тоже так думал. Но слева находится небольшая светло-серая область, растущая с прокладкой . Приятно знать, что выравнивание по вертикали на плавающих элементах не работает! – to7be

+0

@ to7be Вы проверили полный ответ? * Если вы не хотите, чтобы небольшое небольшое пространство слева, вы можете ... * ** Перезагрузка приятеля! ** Есть два изображения и два кода. –

+1

Перезагрузка работ, кодовые работы. Спасибо :) – to7be