[前端]如何写一个水平导航栏?(浮动、inline-block+消除间距)
在看W3school时,看到一个很好的例子,如何制作一个水平的导航栏?没有任何要求,只需要达到下面的效果:

我认为这个例子包含了很多css布局需要了解的知识,因此单独写一下。
W3school上面的方法是这样的——全部设置浮动:
<!DOCTYPE html>
<html>
<head>
<style>
ul
{
list-style-type:none;
margin:0;
padding:0;
overflow:hidden;
}
li
{
float:left;
}
a
{
display:block;
width:60px;
background-color:#dddddd;
}
</style>
</head> <body>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul> </body>
</html>
这个涉及到浮动的知识,这里不详述了。但是,还有没有其他方法呢?我想到另外一种方法,不用ul,直接把a设置为inline-block不就行了吗(原本的inline显然不行,因为不能设置长度,会导致大小不一)?
于是,我把代码改成了下面:
<!DOCTYPE html>
<html>
<head>
<style>
a
{
display:inline-block;
width:60px;
background-color:#dddddd;
}
</style>
</head> <body>
<a href="#home">Home</a>
<a href="#news">News</a>
<a href="#contact">Contact</a>
<a href="#about">About</a>
</body>
</html>
但是,得出来的结果不如人意:

中间的间隙并不是我想要的(虽然实际开发中这些间隙也许会使布局更加美观),但这些间隙是因何而来?我上网查了一下,发现原来inline-block之间出现间隙的原因是标签之间的空格:
</a>
<a href="#news">
像这里两行之间就会被视作一个空格了,我们只需要消除HTML标签之间的空格就可以解决这个问题了。
这个网址很好地概括了消除inline-block元素间间距的方法:
http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-%E5%8E%BB%E9%99%A4%E9%97%B4%E8%B7%9D/
其中,我认为第一种方法是最好的:
像这样:
<body>
<a href="#home">
Home</a><a href="#news">
News</a><a href="#contact">
Contact</a><a href="#about">
About</a>
</body>
或者:
<body>
<a href="#home">Home</a
><a href="#news">News</a
><a href="#contact">Contact</a
><a href="#about">About</a>
</body>
再或者使用注释:
<body>
<a href="#home">Home</a><!--
--><a href="#news">News</a><!--
--><a href="#contact">Contact</a><!--
--><a href="#about">About</a>
</body>
这样,我们就有两种方法写水平导航条了。当然方法还有很多,这篇博客最主要还是用来提及消除inline-block元素间间距的方法。
[前端]如何写一个水平导航栏?(浮动、inline-block+消除间距)的更多相关文章
- JS写的二级导航栏(利用冒泡原理)
今天给大家分享一种用JS写的导航栏,虽然我们工作中不会使用JS来做导航栏,为了练习我们用JS来做一个JS导航栏 这种方法要比其他方法代码量少很多,但是需要对事件冒泡有一定的理解,如果需要理解冒泡可以参 ...
- Vue 如何实现一个底部导航栏组件
参考网址: https://www.jianshu.com/p/088936b7b1bd/ Vue 如何实现一个底部导航栏组件 可以看到父组件是知道我点击了底部TabBar的哪个item的. 实现 实 ...
- 如何做一个导航栏————浮动跟伪类(hover)事件的应用
我们先说一下伪类选择器的写法: 写法:选择器名称:伪类状态{}4 常见伪类状态: 未访问:link 鼠标移上去:hover 激活选定:active 已访问:visited 获得焦点的时候触发:focu ...
- 前端Vue项目——初始化及导航栏
一.项目初始化 创建webpack模板项目如下所示: MacBook-Pro:PycharmProjects hqs$ vue init webpack luffy_project ? Project ...
- 利用setTimeOut 和clearTimeOut 方法控制写一个 滑动导航显示不同信息的效果
效果如图鼠标滑动导航 下边显示不同效果 html代码和css格式代码 <body><div id="tab" class="tab"> ...
- 用React写一个工大导航
Online: https://brenner8023.github.io/gdut-nav/ GitHub地址: https://github.com/brenner8023/gdut-nav 笔者 ...
- iOS 程序初始一个带导航栏的视图
@synthesize window = _window; @synthesize rootViewController = _rootViewController; - (BOOL)applicat ...
- CSS水平导航栏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS04--对齐、 布局、导航栏
我们接着上一章,继续学习一些有关对齐.布局.导航栏的内容. 1.水平块对齐: 1.1 margin:把左和右外边距设置为 auto,规定的是均等地分配可用的外边距.结果就是居中的元素 .c ...
随机推荐
- 小甲鱼OD学习第1讲
这一讲我们的目标是修改Hello.exe对话框的标题和内容,如图所示 把程序放进OD,按F8一步步运行,直到程序弹出对话框为止,然后在弹出对话框位置处下断点 按Ctrl+F2重新载入程序,然后按F9直 ...
- SpringMVC之使用requestMapping映射请求、映射参数、映射头
1. 映射请求 作用:使用requestMapping可以指定处理器可以处理那些请求 地方:类和方法前面都可以 @requestMapping 类定义处: 提供初步的请求映射信息,相对于web应用的根 ...
- Linux中的 awk查找日志中的相关记录
假设要在 api.log.201707201830 文件中,(此文件的多个字段数据以不可见字符^A(键盘上按下Ctrl+V+A)分隔),要输出第70个字段: awk -F '^A' '{print $ ...
- 开启MySQL远程访问权限 允许远程连接
1.登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql;Database changedmysql> select host,user ...
- Linux 安装nodejs环境以及路径配置
linux安装nodejs有2种方式一种简单的,解压即可用:另一种,通过下载source code ,通过编译,make,make install命令来安装. 这里只讲第一种,简单方便.不需要执行ma ...
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...
- 新手最纠结的事。学什么语言最好?学什么语言有前途(or 钱途)?
这篇文章是转载自王根的博客,源地址:http://www.yinwang.org/blog-cn/2017/07/06/master-pl ,虽然王根是一个备受争议的人,不过这篇文章写的很好,我对于编 ...
- Spring boot 整合mybatis
第一步:创建maven项目并添加spring boot依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...
- es6之let和const命令的一些笔记
let和const命令 let命令 基本用法 let命令用来声明变量,声明的变量只在命令所在的代码块内有效.for循环中很适合使用let命令. 有必要理解的例子: var a = []; for (v ...
- UVa230 Borrowers
原题链接 UVa230 思路 这题输入时有一些字符串处理操作,可以利用string的substr()函数和find_last_of()函数更加方便,处理时不必更要把书名和作者对应下来,注意到原题书名的 ...