关于li标签行内显示的问题
在我们实现导航栏的时候,经常要用到ul标签。
通常,我们是通过给li标签设置display:inline-block来使其在一行里显示,但是这个时候出现了一个很头疼的问题。
我们先上代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<style type="text/css" media="screen">
*
{
margin: 0;
padding: 0;
}
html
{
font-size: 62.5%;
}
nav
{
width: 100%;
line-height: 3rem;
background-color: blue;
padding: 0 1.5rem;
}
ul
{
text-align: left;
}
li
{
display: inline-block;
background-color: red;
padding: 0 1.5rem;
}
</style>
</head>
<body>
<nav>
<ul>
<li>登录</li>
<li>关于</li>
<li>注册</li>
<li>帮助</li>
<li>退出</li>
</ul>
</nav>
</body>
</html>
将页面放大以后我们发现,每个li标签的后面都出现了一点点间隙。这是为什么呢?

问题的原因所在
笔者写过一篇关于DOM的文章,在叙述节点分类的时候提到,Chrome、opera等浏览器中,把节点与节点之中的空白符(即空格)也视为文本节点。
如图所示,写html代码时为了美观,写完每个li标签都会换行,换行的时候就会产生空白符。

如何解决这个问题呢?
1.写html代码时,把所有li标签写在一行里,从根上消除空白符,但是这样影响代码阅读,不易于后期维护。
<body>
<nav>
<ul>
<li>登录</li><li>哈哈</li><li>嘿嘿</li><li>帮助</li><li>退出</li>
</ul>
</nav>
</body>
2.还有一个很有意思的方式,就是li标签不闭合,让其自动补全,也是可以清除空白。
<body>
<nav>
<ul>
<li>登录
<li>哈哈
<li>嘿嘿
<li>帮助
<li>退出
</ul>
</nav>
</body>
3.还可以给li标签一个负边距来抵消空白符的宽度,但是有一个缺点,就是空白符的大小跟父节点ul标签有关,而ul标签又跟浏览器有关,所以负边距的大小不好确定。
<style>
li{margin-left:-3px;}
</style>
4.既然空白符大小跟ul标签有关,那我们可以把ul标签的字体大小设置为0,再给li标签设置实际字体大小,这样就可以使空白符的大小为0。
<style>
ul{font-size:0;}
li {font-size : 1.2rem;}
</style>
5.css4草案中有一个新增属性:white-space-collapsing,也可以解决这个问题,但是现在几乎没有浏览器支持,让我们展望未来吧。
关于li标签行内显示的问题的更多相关文章
- li标签行内元素高度及居中
<head> <title><title> <style type="text/css"> * { padding: 0px; ma ...
- HTML5 结构性标签 行内语义性标签
结构性标签: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...
- html中 让 ul 的多个 li 在一行内显示
有时候会需要ul的li都在同一行显示,避免li跑到下一行去,今天遇到了这个问题,记录下来,避免忘记~ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- display:inline与display:block——行内元素显示与块级元素显示
display:inline 的作用是设置对象做为行内元素显示,inline是内联对象的默认值(ps:内联对象就是不自动产生换行的元素,比如span) 而我们一般用的div是块级元素,默认displa ...
- 前端css之文本操作及块级元素和行内元素
1.文本操作 1.1文本颜色(color) 颜色指定方式: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如: red 1.2水平对齐方式 ...
- HTML行内元素与块级元素有哪些及区别详解
转自 https://www.jb51.net/web/724286.html 这篇文章主要介绍了HTML行内元素与块级元素有哪些及区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具 ...
- css总结17:HTML块级元素&行内元素之分: <div> 和<span>
1 HTML 区块元素: 大多数 HTML 元素被定义为块级元素或内联元素. 1.1 块级元素实例: <div> <h1>, <p>, <ul>, &l ...
- css块级标签,行内标签,行内块标签的转换(2)
css块级标签,行内标签,行内块标签的转换 版权声明 本文原创作者:雨点的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/ 在基础1中,我详细讲 ...
- CSS.02 -- 样式表 及标签分类(块、行、行内块元素)、CSS三大特性、背景属性
样式表书写位置 内嵌式写法 <head> <style type="text/css"> 样式表写法 </style> </head&g ...
随机推荐
- 「模拟赛20190327」 第二题 DP+决策单调性优化
题目描述 小火车虽然很穷,但是他还是得送礼物给妹子,所以他前往了二次元寻找不需要钱的礼物. 小火车准备玩玩二次元的游戏,游戏当然是在一个二维网格中展开的,网格大小是\(n\times m\)的,某些格 ...
- 条目七《如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉》
如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉 在STL中容器是智能的,可以在容器销毁时自动调用容器里对象的析构函数来销毁容器存储的对象. STL的容器虽然比较智能 ...
- 【转】org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be res
如图所示: 看网上的解决方案,有的说是jstl的版本问题,1.0版本引入使用的时候加的uri不带有jsp路径的,1.2的带有/jsp路径,还有的说是依赖冲突的问题,最后尝试了都不行,只有一招能够行的通 ...
- codeforces1073d Berland Fair 思维(暴力删除)
题目传送门 题目大意:一圈人围起来卖糖果,标号从1-n,每个位置的糖果都有自己的价格,一个人拿着钱从q开始走,能买则买,不能买则走到下一家,问最多能买多少件物品. 思路:此题的关键是不能买则走到下一家 ...
- 小a与星际探索---DP
题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往nn号星球.其中每个星球有一个能量指数pp.星球ii能到达星球jj当且仅当pi>pjpi>pj.同时小a的飞船还 ...
- hdu1509 优先队列
Windows Message Queue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- 二分函数 lower_bound()
这篇博客说是STL源码.... https://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html 头文件 algorithm 1.lowe ...
- 2019.3.28 JDBC相关
JDBC(Java Data Base Connectivity) JDBC是一组用Java编写的类和接口 使用JDBC的好处: 1.Java的开发人员完全不需要关心数据库的连接方式和实现手段 2.提 ...
- PIE SDK云图动画导出
云图动画,就是将一组序列图以动画的形式进行轮播,PIE SDK可以将云图动画以gif或avi格式进行导出,本文示例以云图动画导出gif为例,这样只需要点开gif文件就可以浏览云图动画. 下面来介绍下实 ...
- mssql 死锁方面的一些资料。
-- 1.查询死锁的进程,表名 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) as tableNa ...