老师又有问题了!

老师又有问题了!

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
	margin:0;
	padding:0;
	border:none;
}
body{
	font-family:微软雅黑;
	font-size:12px;
}
a{
	text-decoration: none;
}
a:link{
	color:black;
}
/*top部css*/
.main{
	margin: 0 auto;
	width:100%;
	height:auto;
}
.head{
	background:#f3f5f7;
	width:100%;
}
.top{
	width: 1200px;
	height:auto;
	margin:0 auto;
	border-bottom: 1px solid gray;
	line-height: 40px; 
}
/*top栏左边登录部分*/
.top .login{
	color: red;
}
.top a{
	margin-left:10px;	
}
.top a:hover{
	color:red;
}
/*top栏右边导航栏部分*/
.ftopright{
	display: inline-block;
	float: right;
}
.ftopright>div{;
	float: left;
	width:100px;
	position: relative;
	z-index:2;
}
.ftopright>div>div{
	width:100px;
	display:none;
	position: absolute;
	z-index: 2;
}
.ftopright>div>div>p{
	padding-left: 10px;
}
.toprightblock{
	position: absolute;
}
/*logo区css*/
/*左边logo部分*/
.navs{
	width:1200px;
	height:125px;
	margin:0 auto;
	position: relative;
}
.navsimg{
	background: url(素材/logo.png) no-repeat;
	position: absolute;
	width:136px;
	height:48px;
	top:50%;
	margin:-24px 0 0 10px;
}
/*中间搜索框部分*/
.input{
	position: absolute;
	display: block;
	height:40px;
	width:600px;
	top: 50%;
	left:50%;
	margin:-20px 0 0 -300px;
}
input{
	height:38px;
	width: 600px;
	display: block;
	border:1px solid black;
}
button{
	width:70px;
	height:40px;
	background: black;
	color: #fff;
	position: absolute;
	top: 50%;
	left:50%; 
	margin:-20px 0 0 300px;
}
/*右边购物车部分*/
.shopping{
	width:160px;
	height:40px;
	background-color: #e00;
	position: absolute;
	top: 50%;
	right:2%;
	margin-top: -20px; 
}
.shopimg{
	width: 16px;
	height: 16px; 
	background: url(素材/icon/26.png) no-repeat;
	position: absolute;
	top:50%;
	left:10%;
	margin-top:-8px; 

}
.shoptext{
	width: 120px;
	height:40px;
	line-height: 40px;
    position: absolute;
    text-align: center;
    right:10px;
    color: #fff;
    cursor: pointer;
}
.shoptext div{
	background: url(素材/icon/23.png);
	width: 16px;
	height: 16px;
	position: absolute;
	top: 50%;
	right:10px;
	margin-top: -8px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$('.ftopright>.toprightblock').hover(function(){
		$(this).css({
			'border':'1px solid gray',
			'background':'#fff'
		});

		$(this).find('div').css('display','block');
		//$(this).find('img')attr('src','素材/icon/24.png');为什么我用这个无法替换小箭头的图片呢?
	},function(){
		$(this).css({
			'border':'none',
			'background':'#f3f5f7'
		});
		$(this).find('div').css('display','none');
	});
	$('.ftopright>div>div>p').hover(function(){
		$(this).css('background','#cdd0d4');
	},function(){
		$(this).css('background','#fff');
	})
});
</script>
</head>
<body>
<div class='main'>
<div class='head'>
<div class='top'>
<!-- 顶部登陆区域 -->
<a href="#" class='login'>亲,请登录</a><a href="#">免费注册</a><a href="#">手机逛慕淘</a>
<!-- 顶部导航区域 -->
<div class='ftopright'>
<div class="toprightblock">
    <a class='topright'>我的慕淘</a> 
<img src="素材/icon/22.png">
<div>
<p>已买到的宝贝</p>
<p>我的足迹</p>
</div>
</div>
<div class="toprightblock">
    <a class='topright'>收藏夹</a> 
<img src="素材/icon/22.png">
<div>
<p>收藏的宝贝</p>
<p>收藏的店铺</p>
</div>
</div>
<div>
    <a class='topright'>商品分类</a> 
</div>
<div class="toprightblock">
    <a class='topright'>卖家中心</a>
<img src="素材/icon/22.png">
<div>
<p>免费开店</p>
<p>已买出的宝贝</p>
<p>出售中的宝贝</p>
<p>卖家服务市场</p>
<p>卖家培训中心</p>
<p>体验中心</p>
</div>
</div>
<div class="toprightblock">
    <a class='topright'>联系客服</a> 
<img src="素材/icon/22.png">
<div>
<p>消费者客服</p>
<p>卖家客服</p>
</div>
</div>
</div>
</div>
<!-- logo区 -->
<div class='navs'>
<div class='navsimg'></div>
<div class='input'>
<input type="text" value="灵魂美食一元抢" >
<button>搜索</button>
</div>
<div class="shopping">
<div class="shopimg"></div>
<div class="shoptext">
<span>购物车 | 0</span>
<div></div>
</div>
</div>
</div>
</div>
<div class='banner'></div>
<div class='middle'></div>
<div class='flink'></div>
<div class='foot'></div>
</div>

</body>
</html>

加了logo部分后我顶部导航栏的下拉菜单就会出现问题,我在想是不是因为logo区使用了定位而顶部没用定位的问题,所以我就给顶部也加了几个定位,但现在效果还是不理想。移动到导航栏上展开的部分仍然是没有边框的,可能是因为展开部分用的是absolute,上面用的是relative,我就想把上面也改成absolute,改了之后就GG了= =,还有啊老师,我总觉得我定位学的很差,麻烦老师帮我找找问题,谢谢老师!!!!!!!!!!

正在回答

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

3回答

同学,你好。要想熟练的使用absolute和relative,首先我们需要深入的了解它们的用法。

absolute,CSS中的写法是:position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始点为原始点。如果设定TRBL并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行定位,位置将由trbl决定。

一般来讲,网页居中的话用absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。很多人出错就在于这点上出错。而网页居左其特性与Relative很相似,但是还是有本质的区别的。

relative,CSS中的写法是:position:relative;  他的意思是绝对相对定位,他是参照父级的原始点为原始点,无父级则以body的原始点为原始点,配合table进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位。

有时我们还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。当然有一点要注意,父子关系是无法用z-index来设定上下关系的,一定是子级在上父级在下。

祝学习愉快!



  • CC陈十一 提问者 #1
    老师说一下具体怎么改呗?
    2019-03-24 16:31:38
Steve007 2019-03-25 10:33:16

同学,你好。加了logo区会出现问题,是因为没有给展开的部分设置白色的背景色,因此加了logo区后展开的部分会和logo区重叠。修改如下:

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

祝学习愉快!

  • 提问者 CC陈十一 #1
    额,好吧,谢谢老师,是我想复杂了
    2019-03-25 10:35:05
Steve007 2019-03-25 10:09:09

同学,你好。同学是想给展开的部分加上边框是么,这个需要设置展开部分的边框样式,设置如下:

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

祝学习愉快!

  • 提问者 CC陈十一 #1
    好的,老师。不过我就是不懂,刚开始好好的,怎么加了logo区就出问题了,我感觉我定位的也没什么问题啊= =,麻烦老师再帮忙解答一下,辛苦了!!!!!!
    2019-03-25 10:14:21
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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