absolute在没有最近定位祖先元素

absolute在没有最近定位祖先元素

absolute在没有最近定位祖先元素会认body做爹,这里.banner-slide最近没有定位的祖先元素啊,为什么不以body绝对定位,即为什么图片还是在main盒子里

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕阿莹 2018-07-31 15:43:51

其实这里是以body为绝对定位的,同学可以试一下,给banner-slide加一个:

top:100px;

left:100px;

为了有个参照,我们在给main和banner设置了同级的div:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>图片轮播</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div>123456789</div>
 <div class="main">
  <!-- 图片轮播 -->
  <div>123456789</div>
  <div class="banner">
   <a href="">
    <div class="banner-slide slide-1 slide-active"></div>
   </a>
   <a href="">
    <div class="banner-slide slide-2"></div>
   </a>
   <a href="">
    <div class="banner-slide slide-3"></div>
   </a>
  </div>
 
</body>
</html>

css:

*{
 padding:0;
 margin:0;
}

ul{
 list-style-type: none;
}

body{
 font-family: "Microsoft YaHei";
 color: #14191e;
}

.main{
 width: 1200px;
 height: 460px;
 margin:30px auto;
 overflow: hidden;

}

.banner{
 width: 1200px;
 height: 460px;
 overflow: hidden;
position: relative;
}
.banner-slide{
    width: 1200px;
    height: 460px;
    background-repeat: no-repeat;
    position: absolute;
	top:100px;
	left:100px;
    display: none;
}

.slide-active{
 display: block;
}

.slide-1{
 background-image:url("../images/bg1.jpg");      /*这里不能简写成background 因为简写会覆盖上面的background-repeat属性 然后这里又需要重新写*/
}

.slide-2{
 background-image:url("../images/bg2.jpg");      /*这里不能简写成background 因为简写会覆盖上面的background-repeat属性 然后这里又需要重新写*/
}

.slide-3{
 background-image:url("../images/bg3.jpg");      /*这里不能简写成background 因为简写会覆盖上面的background-repeat属性 然后这里又需要重新写*/
}

你会发现,它是相对于body偏移的。我们可以对比一下给banner加上绝对定位和不加绝对定位的现象:

不给banner添加绝对定位的时候:

http://img1.sycdn.imooc.com//climg/5b6012ed00011bed16750651.jpg


给banner添加绝对定位的时候:

http://img1.sycdn.imooc.com//climg/5b6013190001017f16440697.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


提问者 攻下这座城 2018-07-31 14:23:33

css:

*{
 padding:0;
 margin:0;
}

ul{
 list-style-type: none;
}

body{
 font-family: "Microsoft YaHei";
 color: #14191e;
}

.main{
 width: 1200px;
 height: 460px;
 margin:30px auto;
 overflow: hidden;

}

.banner{
 width: 1200px;
 height: 460px;
 overflow: hidden;

}
.banner-slide{
    width: 1200px;
    height: 460px;
    background-repeat: no-repeat;
    position: absolute;
    display: none;
}

.slide-active{
 display: block;
}

.slide-1{
 background-image:url("../images/bg1.jpg");      /*这里不能简写成background 因为简写会覆盖上面的background-repeat属性 然后这里又需要重新写*/
}

.slide-2{
 background-image:url("../images/bg2.jpg");      /*这里不能简写成background 因为简写会覆盖上面的background-repeat属性 然后这里又需要重新写*/
}

.slide-3{
 background-image:url("../images/bg3.jpg");      /*这里不能简写成background 因为简写会覆盖上面的background-repeat属性 然后这里又需要重新写*/
}

html:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>图片轮播</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
 <div class="main">
  <!-- 图片轮播 -->
  <div class="banner">
   <a href="">
    <div class="banner-slide slide-1 slide-active"></div>
   </a>
   <a href="">
    <div class="banner-slide slide-2"></div>
   </a>
   <a href="">
    <div class="banner-slide slide-3"></div>
   </a>
  </div>
 
</body>
</html>

好帮手慕阿莹 2018-07-31 12:02:04

老师在2分40秒有讲,老师在它的父元素banner上加了绝对定位。建议同学再看一下。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 攻下这座城 #1
    老师我的意思是 当我没给父元素加banner加绝对定位时他还是在main盒子里面,这是为什么呢
    2018-07-31 14:11:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师