zoukankan      html  css  js  c++  java
  • 清除行内元素之间的HTML空白

    原文连接:Remove Whitespace Between Inline-Block Elements
    原文日期: 2013年8月27日
    翻译日期: 2013年8月28日

    至今我还记得年轻是在IE6上开发的那些苦逼日子,特别希望IE浏览器采用 inline-block 的显示方式.
    行内块(inline-block)是非常有用的,特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时。
    问题来了,HTML源码中行内元素之间的空白有时候显示在屏幕上那是相当的讨厌。
    当然,有一些技巧(方法)可以用来清除他们:比如粗暴地完全删除空白,或者其他的方法:

    解决方案1: font-size:0;

    最好的方法是在外层元素上设置font-size:0;同时在内层元素上指定字体具体的大小。

    ul.inline-block-list { /* 比如 ul 或者 ol元素 */
        font-size: 0;
    }
    ul.inline-block-list li {
        font-size: 14px; /* 设置具体的字体大小 */
    }

    为了抵消外层元素的字体属性,在内层元素必须指定 font-size 属性,当然这很简单。
    假若代码是一种复杂的嵌套关系,那么你可能不好去计算或指定这些字体属性,但在大多数情况下,这就是你想要的效果!

    解决方案2: HTML 注释
    这种方法比较渣,但是效果也不错。使用HTML的注释标记顶替元素之间的空白:

    <ul>
        <li>Item content</li><!--
     --><li>Item content</li><!--
     --><li>Item content</li>
    </ul>

    解决方案3: 指定margin属性值为负数
    和方案2类似,这个也比较渣。可以使用行内元素的margin属性来抵消空白:

    ul.inline-block-list li {
        margin-left: -4px;
    }

    这是最糟糕的解决方案了,因为你必须根据具体情况去计算,有时候还不对。你应该尽量避免这样做。

    虽然这些方案都不是很理想,但是如果不这样处理,那你的HTML代码结构可能就非常混乱,成为标准的垃圾代码。
    因为行内元素非常好用,所以这并不是一个小心避免的雷区,作为开发人员,学会处理这种空白问题也是很重要的

  • 相关阅读:
    Permission denied (publickey). SSH用户名密码登录报错
    git工作流(Gitflow/gitlab代码权限管理)
    Spring多数据源配置(2)[PageHelper插件下应用bug修复]
    Spring多数据源配置
    基于Redis实现分布式锁
    .NetCore Autofac依赖注入获取注册后的实例、全局容器获取
    C++注入记事本升级版,给记事本弄爱心
    C++注入记事本
    WINAPI实现简易扫雷游戏
    .net 公共基础类
  • 原文地址:https://www.cnblogs.com/honeyHHX/p/3769737.html
Copyright © 2011-2022 走看看