2014-10-10 39 views
-1

我正在嘗試製作帶有拖尾欄的標題。我使用了僞元素::after帶僞元素的標題上的背景色

我的問題是標題的背景顏色應該「阻擋」位於標題本身「下」的::after元素的部分 - 但它不會。

HTML:

<div> 
    <h3>TEST</h3> 
    <p>blah blah blah blah blah blah blah blah blah blah blah</p> 
    <h3>TEST 2</h3> 
    <p>blah blah blah blah blah blah blah blah blah blah blah</p> 
</div> 

CSS:

body{ 
    font-size: 0.9em; 
    font-family: Arial; 
} 
div{ 
    width: 300px; 
    margin: 0 auto; 
} 
h3{ 
    font-size: 200%; 
    background-color: hsl(0, 0%, 100%); 
    margin: 0px; 
    display: inline-block; 
    padding-right: 20px; 
} 
h3::after{ 
    content: ''; 
    display: block; 
    width: 300px; 
    height: 1.3rem; 
    background: hsl(200, 30%, 20%); 
    margin-top: -1.7rem; 
} 

jsFiddle

+0

u能張貼你在找什麼截圖? – Aru 2014-10-10 09:15:46

+0

你想要後背景顏色在默認的h3背景顏色後面嗎? – 2014-10-10 09:18:35

回答

1

絕對定位僞元素......它也是更乾淨的CSS。

JSfiddle Demo

CSS

body{ 
    font-size: 0.9em; 
    font-family: Arial; 
} 

div{ 
    width: 300px; 
    margin: 0 auto; 
} 
h3{ 
    font-size: 200%; 
    background-color: hsl(0, 0%, 100%); 
    margin: 0px; 
    position: relative; 
    overflow: hidden; 
} 
h3::after{ 
    content: ''; 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    margin-left: 20px; 
    background: hsl(200, 30%, 20%); 

}

+0

保利,我接受你的答案,因爲它實際上回答我的問題,而不是提供替代解決方案:) 感謝您的快速響應! – 2014-10-10 09:23:20

+0

不客氣,但**詹姆斯唐納利**並沒有錯,所以你可能也想提高這個答案...即使你選擇接受這個答案。 – 2014-10-10 09:26:52

2

它就會簡單得多(和支持更廣泛的瀏覽器),你只內包裝您的文字span元件:

<h3><span>TEST</span></h3> 

然後給h3元素的block顯示器所需的背景色,然後給你的span元素的inline-block顯示與疊加顏色:

h3{ 
    font-size: 200%; 
    background: hsl(200, 30%, 20%); 
    margin: 0px; 
    display: block; 
    padding-right: 20px; 
} 

h3 span { 
    background: hsl(0, 0%, 100%); 
    display: inline-block; 
} 

JSFiddle demo

然後,您可以通過給予您的span元素所需的padding來抵消這一點。

+0

我同意..更簡單。有一件事..默認情況下不要標題爲「display:block」? – 2014-10-10 09:21:42