z-index似乎不起作用

时间:2014-04-12 11:46:24

标签: html5 css3

我使用以下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: '';
}

2 个答案:

答案 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而不是5JSFiddle