导航原理小白求帮忙分析。

djkloop555 2016-07-29 07:51:04
http://huil.com.cn/


今天浏览网站看到的这个想问下各位大神这个网页的导航的原理是什么?
我用fullpage那个插件只能把ul li那个做出来 但是我看这个网站上面还动态加载了个<i>标签
这个标签的实现原理是什么


截图不全 以防万一说是打广告嫌疑了- -。

...全文
128 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
djkloop555 2016-08-02
  • 打赏
  • 举报
回复
......好多啊。我以为很简单呢.原来还要封装啊。。 我再仔细看看您给的代码~ 帖子结过了给不了分了。。。下次吧- -。
cocotsau 2016-08-02
  • 打赏
  • 举报
回复
我感觉是不是你的逻辑错了,请看下面的代码

//升级版,自动计算顶部标记i的宽度和位置
<style>
html,body{width:100%;height: 100%;}
body,ul,li{margin:0;padding:0;}
body{background-color: #ccc;font-family: "Microsoft Yahei";}
ul{list-style-type:none;}
.list-inline{
	width: 800px;
	margin: 0 auto;
	position: relative;
	padding-top: 30px;
	overflow: hidden;
}
.list-inline>li{float: left;margin: 0 15px;text-align: center;cursor: pointer;}
.list-inline>li:hover a{color:red;}
.list-inline>li.active a{color:red;}
.list-inline>.line{
	position:absolute;
	top:0;
	left:15px;
	height:3px;
	background-color:red;
	display:block;
	transition: left .3s ease-in-out,width .3s ease-in-out;
}
</style>
<ul class="list-inline">
	<li class="active"><a>首页</a></li>
	<li><a>业务咨询</a></li>
	<li><a>案例</a></li>
	<li><a>客户</a></li>
	<li><a>品质</a></li>
	<li><a>增值</a></li>
	<li><a>关于产品的介绍</a></li>
	<li><a>联系我们</a></li>
	<i class="line"></i>
</ul>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(function() {

	function getLeftW(nodes,index){//封装一个函数来计算i的left值
		var totalW = 0;
		if(index > nodes.length)return;
		for(var i=0;i<index;i++){
			totalW += $(nodes).eq(i).width()
			+ parseInt($(nodes).eq(i).css("marginLeft"))
			+ parseInt($(nodes).eq(i).css("marginRight"));
		}
		return totalW;
	}
	var liNodes = $(".list-inline>li"),
		list_active = $(".list-inline>li.active");
	$(".list-inline>.line").css({//初始化i的宽度和位置
		width: list_active.width(),
		left:  parseInt(list_active.css("marginLeft"))
	})
	liNodes.on("mouseover", function() {
        var index = $(this).prevAll().size(),
       		lineWidth = $(this).width();
        $(".list-inline>.line").css({
        	width: lineWidth,
            left: getLeftW(liNodes,index) + parseInt($(this).css("marginLeft"))
        });
    })

	$(".list-inline").on("mouseout", function() {
        var index = $(this).find("li.active").prevAll().size();
        $(".list-inline>.line").css({
        	width: $(liNodes).eq(index).width(),
            left: getLeftW(liNodes,index)
            + parseInt($(liNodes).eq(index).css("marginLeft"))
        });
    })

})
</script>

djkloop555 2016-08-02
  • 打赏
  • 举报
回复
是不是作用域的问题。。。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/19.gif][/img
$(".list-inline>li").on("mouseover", function() {//鼠标移入
                var index = $(this).prevAll().size();//计算出当前li节点的索引
]我alert第二个函数里面的那个index 没反应- -。
djkloop555 2016-08-02
  • 打赏
  • 举报
回复
<script type="text/javascript">
$(function() {
	 $('.list-inline li').each(function(){
	 	 var index = $(this).prevAll().size();
		 var iw = $(this).width();
		 var all_list = $(".list-inline>li").eq(index),//li节点
         perWidth = all_list.width(iw) + parseInt(all_list.css("marginLeft")) + parseInt(all_list.css("marginRight")),//li节点的宽度
         list_margin_left = parseInt(all_list.css("marginLeft"));
         
         

	},function(){
	$(".list-inline>li").on("mouseover", function() {//鼠标移入
	        	var index = $(this).prevAll().size();//计算出当前li节点的索引
	$(".list-inline>.line").css({
		        width : perWidth * index + list_margin_left,
	            left: perWidth * index + list_margin_left//计算出节点i移动的目标位置
	     });
    })
		
    $(".list-inline").on("mouseout", function() {//鼠标移出
        var index = $(this).find("li.active").prevAll().size();//计算出当前li.active节点的索引
        $(".list-inline>.line").css({
            left: perWidth * index + list_margin_left//当鼠标移出导航,节点i回到初始的位置
        });
    })
	})//li节点的左外边距
})
</script>
cocotsau 2016-07-30
  • 打赏
  • 举报
回复
鼠标移动到导航上面的时候,计算位置,然后控制节点i移动到相应位置
djkloop555 2016-07-30
  • 打赏
  • 举报
回复
谢谢~大神~
cocotsau 2016-07-30
  • 打赏
  • 举报
回复

//test demo

<style>
html,body{width:100%;height: 100%;}
body,ul,li{margin:0;padding:0;}
body{background-color: #ccc;font-family: "Microsoft Yahei";}
ul{list-style-type:none;}
.list-inline{width: 800px;margin: 0 auto;position: relative;padding-top: 30px;overflow: hidden;}
.list-inline>li{float: left;width: 50px;margin: 0 15px;text-align: center;cursor: pointer;}
.list-inline>li:hover a{color:red;}
.list-inline>li.active a{color:red;}
.list-inline>.line{
	position:absolute;
	top:0;
	left:15px;
	height:3px;
	width:50px;
	background-color:red;
	display:block;
	transition: left .3s ease-in-out;
}
</style>
<ul class="list-inline">
	<li class="active"><a>首页</a></li>
	<li><a>业务</a></li>
	<li><a>案例</a></li>
	<li><a>客户</a></li>
	<li><a>品质</a></li>
	<li><a>增值</a></li>
	<li><a>关于</a></li>
	<li><a>联系</a></li>
	<i class="line"></i>
</ul>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(function() {
	var first_list = $(".list-inline>li").eq(0),//第一个li节点
		perWidth = first_list.width()
		+ parseInt(first_list.css("marginLeft"))
		+ parseInt(first_list.css("marginRight")),//li节点的宽度,假设所有节点的宽度相等
		list_margin_left = parseInt(first_list.css("marginLeft"));//li节点的左外边距

	$(".list-inline>li").on("mouseover", function() {//鼠标移入
		var index = $(this).prevAll().size();//计算出当前li节点的索引
		$(".list-inline>.line").css({
			left: perWidth * index + list_margin_left//计算出节点i移动的目标位置
		});
	})
	$(".list-inline").on("mouseout", function() {//鼠标移出
		var index = $(this).find("li.active").prevAll().size();//计算出当前li.active节点的索引
		$(".list-inline>.line").css({
			left: perWidth * index + list_margin_left//当鼠标移出导航,节点i回到初始的位置
		});
	})
})
</script>
cocotsau 2016-07-30
  • 打赏
  • 举报
回复
引用 3楼我是你的主体 的回复:
要设置一个index么?
原网页应该是一个基于jquery的插件,逻辑就是我楼上讲的,正好有空,帮你写个demo吧
djkloop555 2016-07-30
  • 打赏
  • 举报
回复
要设置一个index么?
djkloop555 2016-07-29
  • 打赏
  • 举报
回复
就是我的目的就是想要跟他弄出了一个差不多样子的导航,希望哪位大神给点思路或者小例子也行。。~

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧