关于肚腩的问题
来源:2-11 汉克狗的腿和脚
是鹿呦呦呀
2020-05-16 11:03:00
老师您好,这是我的代码,我觉得通过设置.body和.leg的z-index属性就可以实现遮盖 不需要用肚腩 可是z-index似乎没起作用,我不知道问题出在哪里,请您帮我看一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="css/dog.css">
<style>
:root{
--hl: #1b2f90;
--bg: #f9f9f6;
--t:1.5s;
}
body{
background: url(img/bg.png) no-repeat center top;
background-size: cover;
}
.dog{
width: 300px;
height: 400px;
position: relative;
top: 380px;
}
.center{
position: absolute;
left:50%;
transform: translate(-50%,0);
}
.forehead{
width: 102px;
height: 48px;
background: var(--bg); /*调用CSS变量的方法 */
border-radius: 51px / 40px 40px 8px 8px;
z-index: 1;
}
.face{
width: 110px;
height: 68px;
background: var(--bg);
top: 20px;
border-radius: 50%;
z-index: 1;
}
.chin{
z-index: 1;
width: 104px;
height: 36px;
background: var(--bg);
top: 60px;
border-radius: 52px / 0 0 36px 36px;
}
.ear{
width: 16px;
height: 70px;
background: var(--hl);
border-radius: 50%;
position: absolute;
left: 50%;
top: 34px;
transform: translate(-42px,0) rotate(10deg);
z-index: 0;
transform-origin: 50% 0;
animation:rotate var(--t) ease-out infinite;
}
.ear.right{
transform: scale(-1,1) translate(-26px,0) rotate(10deg) ;
animation:rotate-r var(--t) ease-out infinite;
}
.eye{
width: 24px;
height: 24px;
background: var(--bg);
border-radius: 12px/13px 12px 12px 2px;
position: absolute;
left: 50%;
top: 20px;
transform-origin: 50% 0;
transform: translate(-42px,0) rotate(10deg);
z-index: 2;
box-shadow: 1px 0 0 0 #000 inset,-1px 0 5px 1px #ddd;
overflow: hidden;
}
.birthmark{
width: 30px;
height: 36px;
background: var(--hl);
border-radius: 15px/17px 23px 2px 13px;
position: absolute;
left: 50%;
top: 10px;
transform: translate(13px,0) rotate(-10deg);
z-index: 1;
transform-origin: 50% 0;
}
.pupil{
width: 26px;
height: 26px;
background: #e79101;
border-radius: 50%;
position: absolute;
left: 4px;
top: 1px;
box-shadow: 0 0 8px 0 #000 inset;
animation: translate var(--t) ease-out infinite;
}
.pupil::before{
content: '';
width: 18px;
height: 18px;
background-color: #000;
border-radius: 50%;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
.pupil::after{
content: '';
width: 5px;
height: 5px;
background-color: #fff;
border-radius: 50%;
position: absolute;
left: 3px;
top: 7px;
}
.eye.right{
transform: scale(-1,1) translate(-16px,0) rotate(10deg);
box-shadow: 1px 0 0 0 #000 inset;
}
.nose{
width: 62px;
height: 32px;
position: absolute;
top: 42px;
background-color: #363035;
z-index: 3;
border-radius: 31px/10px 10px 22px 22px;
}
.nose:before {
content: '';
width: 60px;
height: 12px;
opacity: 0.8;
opacity: .6;
background: linear-gradient(30deg, #fff 0%, #fff 8%, #b1aeb1 15%, #b1aeb1 50%, #544d53 100%);
position: absolute;
left: 1px;
top: 1px;
border-radius: 30px / 10px 10px 2px 2px;
}
.nostril{
position: absolute;
width: 15px;
height: 4px;
background: linear-gradient(347deg, #363035 0%, #000 50%, #000 100%);
box-shadow: -1px -1px 3px 0px #363035 inset;
left: 10px;
top: 22px;
transform: rotate(39deg);
border-radius: 8px / 2px 4px 0px 2px;
animation: resize var(--t) ease-out infinite;
}
.nostril.right{
transform: scale(-1,1) translate(-27px,0) rotate(39deg);
animation: resize var(--t) ease-out infinite;
}
.mouth {
width: 68px;
height: 27px;
position: absolute;
left: 151px;
top: 62px;
border-radius: 36px / 0px 0px 27px 27px;
background: #671316;
box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.6) inset;
animation: mouth var(--t) ease-out infinite;
z-index: 2;
}
.mouth:before {
content: '';
width: 68px;
height: 12px;
background: var(--bg);
position: absolute;
left: 0px;
top: 0px;
border-radius: 36px / 0px 0px 5px 5px;
box-shadow: -1px 7px 8px 2px rgba(155, 155, 155, 0.2);
z-index: 3;
}
.tongue {
width: 34px;
height: 14px;
background: #a2504f;
border-radius: 17px / 0px 0px 7px 7px;
position: absolute;
left: 50%;
top: 7px;
margin: 0 0 0 -17px;
box-shadow: 0px 0px 4px 0px rgba(143, 32, 33, 1) inset;
animation: tongue var(--t) ease-out infinite;
z-index: 2;
}
.teen {
width: 8px;
height: 3px;
border-radius: 4px/0 0 0px 1px;
background: var(--bg);
position: absolute;
left: 50%;
top: 12px;
transform: translate(-8px,0);
border-right: .5px solid #ddd;
z-index: 3;
}
.teen.right{
transform: scale(-1,1);
}
.body{
width: 66px;
height: 70px;
background:var(--bg);
top: 89px;
z-index: 2; /* 这个属性没有起作用 */
border-radius: 50%;
}
.arm{
width: 26px;
height: 40px;
background: var(--bg);
top: 8px;
left: 50%;
position: absolute;
border-radius: 13px / 20px 0 14px 20px;
transform: translate(-43px,0) rotate(21deg);
}
.arm::before{
content: '';
width: 5px;
height: 20px;
border-radius: 5px/10px 0 0 10px;
box-shadow: -1px 0px 0px 0px #b1aeb1;
position: absolute;
right: 9px;
top: 10px;
transform: rotate(-5deg);
}
.arm.right{
transform: scale(-1,1) translate(-19px,0) rotate(21deg);
}
.leg{
width: 29px;
height: 50px;
position: absolute;
left: 50%;
z-index: 0; /* 这个属性没有起作用 */
top: 40px;
background: linear-gradient(-90deg, #eee 0%,#eee 20%,var(--bg) 20%,var(--bg) 100%);
border-radius: 15px / 5px 5px 15px 45px;
transform: translate(-32px,4px);
}
.leg.right{
transform: scale(-1, 1) translate(-3px,4px);
}
.foot{
width: 29px;
height: 15px;
background: linear-gradient(227deg, #ddd 0%, #fff 30%,#fff 100%);
border-radius: 15px / 10px 10px 5px 5px;
transform: translate(-1px,36px);
position: absolute;
}
.belly{
z-index: 2;
width: 60px;
height: 36px;
position: absolute;
bottom: 0px;
left: 33px;
background: linear-gradient(0deg, #ddd 0%, var(--bg) 20%, var(--bg) 100%);
border-radius: 33px / 0px 0px 35px 35px;
}
@keyframes rotate {
0%{
transform:translate(-42px,0) rotate(10deg);
}
50%{
transform:translate(-42px,0) rotate(30deg);
}
100%{
transform:translate(-42px,0) rotate(10deg);
}
}
@keyframes rotate-r {
0%{
transform: scale(-1,1) translate(-26px,0) rotate(10deg);
}
50%{
transform: scale(-1,1) translate(-26px,0) rotate(30deg);
}
100%{
transform: scale(-1,1) translate(-26px,0) rotate(10deg);
}
}
@keyframes translate {
0%{
left: 3px;
}
50%{
left: 6px;
}
100%{
left: 3px;
}
}
@keyframes resize{
0%{
height: 4px;
}
50%{
height: 3px;
}
100%{
height: 4px;
}
}
@keyframes tongue{
0%{
height: 14px;
}
50%{
height: 20px;
}
100%{
height: 14px;
}
}
@keyframes mouth{
0%{
height: 27px;
}
50%{
height: 20px;
}
100%{
height: 27px;
}
}
</style>
</head>
<body>
<div class="dog center">
<div class="forehead center"></div>
<div class="face center"></div>
<div class="chin center"></div>
<div class="ear"></div>
<div class="ear right"></div>
<div class="eye">
<div class="pupil">
</div>
</div>
<div class="birthmark"></div>
<div class="eye right">
<div class="pupil">
</div>
</div>
<div class="nose center">
<div class="nostril"></div>
<div class="nostril right"></div>
</div>
<div class="mouth center">
<div class="teen"></div>
<div class="teen right"></div>
<div class="tongue"></div>
</div>
<div class="body center">
<div class="arm"></div>
<div class="arm right"></div>
<div class="leg">
<div class="foot"></div>
</div>
<div class="leg right">
<div class="foot"></div>
</div>
<!-- <div class="belly center"></div> 为了测试z-index属性就注释掉了 -->
</div>
</div>
</body>
</html>1回答
同学你好,关于你的问题,回答如下:
1、z-index正常是设置兄弟元素直接的层级的。而这里是父子元素,不能直接设置。
2、不过父子元素设置的话,可以将子元素设置为-1,降低层级,父级就可以覆盖到子元素上,可以参考如下:

3、不过,这样的方式并不适用于本节的代码,是因为代码中使用了,transform。
同时使用z-index和transform会让z-index失效。
建议:可以使用课程中的方式实现。
祝学习愉快~
相似问题