• [前端]如何写一个水平导航栏?(浮动、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元素间间距的方法。

  • 相关阅读:
    ci中使用smarty
    php curl用法
    百万级访问网站前期的技术准备
    enctype="multipart/formdata" 文件上传
    【转】lnmp配置记录
    ActionScript实现两直线相交弧跨越算法
    Adobe Flex迷你教程 — ActionScript实现二维向量运算
    U盘启动安装Linux(转)
    Adobe Flex迷你教程 — 实现类似新浪微博评论消息容器
    Adobe Flex迷你教程 — 让Graphics的线响应事件。
  • 原文地址:https://www.cnblogs.com/fengziwei/p/8538964.html
Copyright © 2020-2023  润新知