代码之家  ›  专栏  ›  技术社区  ›  Pavel Zaitsev

如何删除由内联块生成的额外边距空间?[副本]

css
  •  33
  • Pavel Zaitsev  · 技术社区  · 15 年前

    我使用这个CSS来设置两列的格式,但两列之间仍有空白。我可以用 margin-left: -4px; 或者一些这样的。有没有更优雅的方法可以做到这一点,或者CSS代码有什么问题?

    div.col1{
      display: inline-block;
      min-height: 900px;
      height: 100%;
      width 300px;
      margin: 0px;
      background-color: #272727;
      overflow: hidden;
      border: 1px dotted red;
    }
    
    div.col2{
      display: inline-block;
      min-height: 900px;
      height: 100%;
    
      width: 620px;
      margin: 0px;
    
      vertical-align: top;
      border: 1px dotted red;
      overflow: hidden;
    }
    
    8 回复  |  直到 9 年前
        1
  •  46
  •   Caleb    15 年前

    也许你有:

    <div class="col1">
        Stuff 1
    </div>
    <div class="col2">
        Stuff 2
    </div>
    

    ?如果是这样,那么这可能是一个空白问题(原来空白在HTML中很重要)。这应该可以修复它:

    <div class="col1">
        Stuff 1
    </div><div class="col2">
        Stuff 2
    </div>
    
        2
  •  19
  •   andr Gal Mathys    12 年前

    简单的 font-size:0 对父元素有效。

        3
  •  8
  •   jacktheripper    12 年前

    具有属性的元素 inline-block 将表现为它们是内联的(因此是名称),因此遇到的任何空白都将被视为一个空格。例如:

    <div></div><div></div>
    

    将以不同的方式呈现

    <div></div>
    <div></div>
    

    See a live example here

    您可以使用HTML解决此问题,如下所示:

    将所有元素都放在同一行,即

    <div>
        // CONTENT
    </div><div>
        // CONTENT
    </div><div>
        // CONTENT
    </div>
    

    或者使用HTML注释删除空格

    <div>
        //CONTENT
    </div><!--
    --><div>
        //CONTENT
    </div>
    

    您可以使用CSS解决此问题,如下所示:

    设置属性 font-size: 0 在父母身上,即

    parent {
        display: inline-block;
        font-size: 0
    }
    parent * {
        font-size: 12px
    }
    

    或者设置属性 zoom: 1 在父母身上,即

    parent {
        display: inline-block;
        zoom: 1
    }
    
        4
  •  7
  •   gevorg Dathan    9 年前

    或者,要在不更改源代码格式的情况下修复此问题,可以创建一个附加元素。

    如果您在列表中执行此操作,它将看起来像:

    <ul >
        <li>
          <a href="#">Solutions Overview</a>
        </li>       
    </ul>   
    
    
    <style type="text/css">             
        ul {word-spacing:-1em;}
        ul li a{word-spacing:0;}
    </style>
    
        5
  •  1
  •   Dalex    12 年前
        6
  •  0
  •   Evan    15 年前

    应用浮动:左边,这将删除空格,这样文本就不必在一行上。

        7
  •  -1
  •   Andy Hoffman    9 年前

    生成父元素 font-size: 0 也会解决问题。

    <div class="col-set">
        <div class="col1">
            Stuff 1
        </div>
        <div class="col2">
            Stuff 2
        </div>
    </div>
    
    .col-set { font-size: 0; }    
    .col-set > div { font-size: 12px; }
    
        8
  •  -5
  •   Dmytrii Nagirniak    15 年前

    您还应该指定:

    padding: 0;