我使用以下HTML5和CSS3代码渲染星形,并在其中显示一些文本。我尝试将p标签的z-index设置为1然后设置为10,但完整的文本不会出现在星形上方。只显示段落中的部分文本。有人可以向我解释原因吗?
HTML5代码:
<!DOCTYPE html>
<html>
<head>
<title>HTML5, CSS3 and JavaScript demo</title>
</head>
<body>
<div id="star-five"><p>Hello Weaver!</p></div>
</body>
</html>
CSS3代码:
p {
font-size: 20px;
color: #000000;
z-index: 10;
}
#star-five {
z-index: 5;
margin: 50px 0;
position: relative;
display: block;
color: red;
width: 0px;
height: 0px;
border-right: 100px solid transparent;
border-bottom: 70px solid red;
border-left: 100px solid transparent;
-moz-transform: rotate(35deg);
-webkit-transform: rotate(35deg);
-ms-transform: rotate(35deg);
-o-transform: rotate(35deg);
}
#star-five:before {
z-index: 5;
border-bottom: 80px solid red;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
position: absolute;
height: 0;
width: 0;
top: -45px;
left: -65px;
display: block;
content: '';
-webkit-transform: rotate(-35deg);
-moz-transform: rotate(-35deg);
-ms-transform: rotate(-35deg);
-o-transform: rotate(-35deg);
}
#star-five:after {
z-index: 5;
position: absolute;
display: block;
color: red;
top: 3px;
left: -105px;
width: 0px;
height: 0px;
border-right: 100px solid transparent;
border-bottom: 70px solid red;
border-left: 100px solid transparent;
-webkit-transform: rotate(-70deg);
-moz-transform: rotate(-70deg);
-ms-transform: rotate(-70deg);
-o-transform: rotate(-70deg);
content: '';
}
答案 0 :(得分:3)
z-index
不适用于position:static
(即没有position
设置的元素。由于您的p
没有position
,因此它不会考虑z-index
。
在position:relative
上设置p
。
或者,在z-index
元素上使用否定:before
,就像在Benio的回答中一样 - 这是有效的,因为&#34;容器&#34; #star-five
定义了堆叠上下文(通过拥有自己的z-index
)。否则,否定z-index
会将其移至<body>
!
答案 1 :(得分:2)
一切正常,你只需要写-5
而不是5
。
JSFiddle