2012-06-21 2 views
2

Я пытаюсь отрицательно позиционировать :before и :after псевдо элементы на <hr>, но IE10 является упрямство и просто не показывает эти элементы.IE10 псевдо элементы на качестве <hr> с отрицательным позиционирование не работает

Вот мой пример: http://jsfiddle.net/Shpigford/HyVMR/

Это, кажется, работает хорошо во всех браузерах за исключением IE10. Он не показывает левый и правый блоки.

Он отлично работает с <div>, но с использованием <hr> вызывает левые элементы псевдо не отображаться на всех

CSS:

hr { 
    background:red; 
    margin:0 150px; 
    height:50px; 
    position:relative; 
} 
hr:before { 
    content: ''; 
    position:absolute; 
    height:50px; 
    left:-150px; 
    width:150px; 
    background:green; 
} 
hr:after { 
    content: ''; 
    position:absolute; 
    height:50px; 
    right:-150px; 
    width:150px; 
    background:blue; 
} 

+0

Вы не должны быть в состоянии сделать это - я осмелюсь сказать, IE10 в настоящее время соответствуют стандартам здесь, и все другие браузеры нарушают спецификацию. – BoltClock

+0

Что конкретно говорится в спецификации? – Shpigford

+2

Наличие ': before' и': after' на пустых элементах является темой горячих дебатов, но [spec] (http://www.w3.org/TR/CSS21/generate.html#before-after-content), кажется, запрещает его ... 'hr', поскольку элемент void не может иметь содержимое дерева документа, поэтому в любом случае браузер не сможет вставлять сгенерированный контент. Известно, что вы * можете * вставлять содержимое ': before' и': after' даже для таких элементов, как элементы формы, и только в некоторых браузерах, но не в других. – BoltClock

ответ

15

Try переполнения: видимый; на <hr>

hr { 
background:red; 
margin:0 150px; 
height:50px; 
position:relative; 
overflow:visible; 

}

+0

Спасибо. Это помогло решить мой вопрос и по этому вопросу. Короткие и сладкие. – lislis