用li标签和a标签实现导航的区域点击

(将a标签转换为块状元素即可实现区域点击)

第一篇PO~
最近在码页面,在编写导航的时候碰到了问题。众所周知,HTML内编写导航用ulli标签编写:

// nav
<div class="nav1">
<ul>
   <li>首页</li>
   <li>地区</li>
   <li>特惠</li>
   <li>资讯</li>
   <li>游记</li>
</ul>
</div>

在给nav一个横向显示的样式:

// nav style
<style>
       .nav1{
        	width:600px;
        	margin:0 auto;
        }
		ul{
            list-style-type: none;
            float: left;
            /*ul加浮动是因为一般导航左上角还有图片LOGO,此处未添加*/
		}
		ul li{
			height: 72px;
            width: 80px;
            text-align: center;
            /*导航li块内字体水平居中*/
            line-height: 72px;
            /*行高与li块高度一致使导航li内字体垂直居中*/
            color: #3c3d46;
            float: left;
            margin-right: 24px;
		}
		/*鼠标滑动效果*/
		li:hover{
            background-color:#5696ff;
            color:#fefeff;
            cursor: pointer;
        }
</style>

在这里插入图片描述
此时虽然鼠标滑过有效果,但是li标签无法进行链接,我们给li标签内增加a标签:

   <li><a href="./首页.html">首页</a></li>
   <li><a href="./地区.html">地区</a></li>
   <li><a href="./地区.html">特惠</a></li>
   <li><a href="./资讯.html">资讯</a></li>
   <li><a href="./游记.html">游记</a></li>

在这里插入图片描述
此时加入a标签,字体颜色可以用color修改,下划线可用text-decoration:none;删除,但是在进行点击的时候只有通过点击链接字如:首页才可进行跳转。而我们在访问页面的时候一般随意点击图上蓝色区域即可跳转,所以需将a标签拉伸与li标签同款高。

众所周知,a标签是行内元素,而行内元素无宽高,可以通过display:block; 将行内元素转为块状元素,同时刚设的li标签样式:

<style>
a{
    width: 80px;
    height:72px;
    color: #3c3d46;
    text-decoration: none;
    display: block;
		}
</style>

这样随意点击蓝色区域即可跳转。

完整代码:

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style>
	    body{
	    	margin:0;
	    }
        .nav1{
        	width:600px;
        	margin:0 auto;
        }
		ul{
            list-style-type: none;
            float: left;  
		}
		ul li{
            float: left;
            margin-right: 24px;
		}
		a{
            width: 80px;
            height:72px;
            color: #3c3d46;
            text-align: center;
            line-height: 72px;
            text-decoration: none;
            display: block;

		}
    
		li a:hover{
            background-color:#5696ff;
            color:#ffffff;
            cursor: pointer;
        }
	</style>
</head>
<body>
<div class="nav1">
<ul>
   <li><a href="./首页.html">首页</a></li>
   <li><a href="./地区.html">地区</a></li>
   <li><a href="./地区.html">特惠</a></li>
   <li><a href="./资讯.html">资讯</a></li>
   <li><a href="./游记.html">游记</a></li>
</ul>
</div>
</body>
</html>

这是我使用的方法,如果有更简单的请推荐我~

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较常见的Web开发需求,可以通过以下步骤实现: 1. HTML基础结构 首先需要在HTML文件中创建一个导航栏和一个右侧内容区域的结构,可以使用`<ul>`和`<li>`标签创建导航栏,以及一个`<div>`标签作为右侧内容区域的容器,例如: ``` <ul class="nav"> <li data-page="page1">Page 1</li> <li data-page="page2">Page 2</li> <li data-page="page3">Page 3</li> </ul> <div class="content"></div> ``` 其中,`data-page`属性用于记录每个导航项对应的页面名称。 2. CSS样式 接下来需要用CSS样式来美化导航栏和右侧内容区域的样式,例如: ``` .nav { list-style: none; margin: 0; padding: 0; } .nav li { display: inline-block; padding: 10px; cursor: pointer; } .nav li.active { background-color: #ccc; } .content { padding: 20px; border: 1px solid #ccc; } ``` 其中,`.nav`和`.content`是用于选中导航栏和右侧内容区域CSS类名,`.nav li`和`.nav li.active`是用于定义导航栏的样式,`.content`是用于定义右侧内容区域的样式。 3. JS交互 最后需要使用JS代码来实现点击导航栏切换右侧内容区域的功能,例如: ``` var navItems = document.querySelectorAll('.nav li'); var content = document.querySelector('.content'); function changePage(page) { // 根据传入的页面名称切换右侧内容区域的内容 content.innerHTML = 'This is ' + page; } function setActive(item) { // 清除所有导航项的active状态 navItems.forEach(function(navItem) { navItem.classList.remove('active'); }); // 给当前点击导航项添加active状态 item.classList.add('active'); } navItems.forEach(function(navItem) { navItem.addEventListener('click', function() { var page = this.getAttribute('data-page'); changePage(page); setActive(this); }); }); ``` 其中,`navItems`是用于选中所有导航项的JS变量,`content`是用于选中右侧内容区域的JS变量,`changePage`函数用于根据传入的页面名称切换右侧内容区域的内容,`setActive`函数用于设置当前点击导航项为active状态,最后使用`forEach`方法遍历所有导航项,为它们添加点击事件触发`changePage`和`setActive`函数实现页面切换和样式设置。 这就是基于HTMLCSS、JS实现点击左侧导航栏的li,右侧更改页面的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值