html – 连续放置2个50%宽度的输入元素,了解盒子大小

前端之家收集整理的这篇文章主要介绍了html – 连续放置2个50%宽度的输入元素,了解盒子大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将2个输入元素内联,每个输入元素的宽度为50%.为什么我必须从输入元素中减去边框宽度,即使我使用Box-sizing:border-Box

http://jsfiddle.net/Nmvk6/

HTML

<form class="form">
    <div class="form-group">
        <label>Type</label>
        <button class="btn btn-default">
            <span class="glyphicon glyphicon-plus-sign"></span>
        </button>
    </div>
    <div class="form-group">
        <select class="form-control half-width-form-control">
            <option value="foo">foo</option>
            <option value="bar">bar</option>
        </select>
        <input class="form-control half-width-form-control" type="number"></input>
    </div>
</form>

CSS

.half-width-form-control {
   display: inline-block;
    width: calc(50% - 2px);
    /*width: 50%;*/
    /*Box-sizing: border-Box;*/
}

解决方法

你在这里遇到的问题与内联块有关.

display:inline-block告诉浏览器将元素视为与其内容有关的块,但作为与其周围环境相关的内联元素.

这里的问题是两个元素周围的环境包括一些空白区域.具体来说,两个元素之间有一些空白区域.空格与内联元素相关,因此也适用于内联块元素.

简而言之,就好像这两个元素是句子中的单词.它们之间的空白被视为两个单词之间的空间.

你最终得到的是50%宽度的一个空格字符的50%宽度.

这是一个众所周知的内联块问题,但确实让人们大开眼界.

因此,快速脏的解决方案是移除空间 – 关闭< select>的结束之间的间隙.并且< input>的开始所以那里没有空间.

其他替代方法包括使用注释来消除差距(丑陋),将容器元素设置为font-size:0px;以及各种其他hacky解决方案.

或者,您可以丢弃内联块.还有许多其他选项可以实现相同或类似的结果 – 特别是float,display:table-cell和flex-Box,但也存在其他选项.

但我的建议是删除两个元素之间的空格.快速,轻松修复.

猜你在找的HTML相关文章