HTML元素横向排列的方法以及该方法存在问题的解决方案

在CSS中,div、p、header等元素是块级元素,默认占据一整行;两个同一级别的兄弟块级元素,会自动换行显示。如果需要两个兄弟块级元素横向排列显示,需要设置CSS属性。

一:使用浮动

1、使用浮动float,方法如下:

CSS代码:

.f {
    width: 100px;
    border: 1px solid #F00;
    float: left;
}

HTML代码:

<div class="wrapper">
    <div class="f">第一个块级元素</div>
    <div class="f">第二个块级元素</div>
</div>

使用浮动效果,就能让两个块级元素横向排列。

2、使用浮动存在的问题

        由于float浮动元素不占据正常文档流空间,所以文档普通流中会忽略浮动块的存在。这就导致,如果一个父元素只包含了浮动元素,并且这个父元素没有设置高度、宽度时,就会出现一种“塌陷”现象。

3、解决方法

        解决浮动问题有以下方法:

        1)、使用clear: both清除浮动

        在使用float浮动元素的父元素结束标签前加清除浮动效果。

CSS代码:

.f {
    width: 100px;
    border: 1px solid #F00;
    float: left;
}
.clear_fix {
    height: 0;
    clear: both;
    line-height: 0;
    font-size: 0;
}

HTML代码:

<div class="wrapper">
    <div class="f">第一个块级元素</div>
    <div class="f">第二个块级元素</div>
    <div class="clear_fix"></div>
</div>

        在结束标签之后加.clear_fix也能达到清除浮动效果。

        2)、使用::after伪元素清除浮动

        该方法原理也是使用clear: both清除浮动,只是不再增加.clear_fix空标签;而是用::after来在元素内部插入元素块,从而达到清除浮动效果。

CSS代码:

.f {
    width: 100px;
    border: 1px solid #F00;
    float: left;
}

.wrapper::after {
    content: "";
    width: 100%;
    height: 0px;
    display: block;
    clear: both;
}

HTML代码:

<div class="wrapper">
    <div class="f">第一个块级元素</div>
    <div class="f">第二个块级元素</div>
</div>

        3)、在使用float元素的父元素添加overflow:hidden

        使用该样式,可以让父元素检测到浮动元素的高度,从而撑起父元素,父元素有了自己的高度,从而达到清除浮动效果。

CSS代码:

.wrapper {
    overflow: hidden;
    zoom: 1;
}

.f {
    width: 100px;
    border: 1px solid #F00;
    float: left;
}

HTML代码:

<div class="wrapper">
    <div class="f">第一个块级元素</div>
    <div class="f">第二个块级元素</div>
</div>

 

方法二:内联块元素

1、使用内联块元素

        设置了inline-block属性的元素既拥有了块元素可以设置width、height等的特性,又保持了元素不换行的特性。

CSS代码:

ul li {
    padding: 0px 10px;
    border: 1px solid #F00;
    display: inline-block;
}

HTML代码:

<ul>
    <li>第一个inline-block元素</li>
    <li>第二个inline-block元素</li>
</ul>

这样就能实现横向排列。

2、inline-block元素存在的问题

        在字体大小font-size不为0时,元素与元素之间存在间隙。这个问题产生的原因是换行引起的,因为我们写标签时通常会在标签结束符后打个回车,而回车会产生回车符,回车符相当于空白符,通常情况下,多个连续的空白符会合并成一个空白符,而产生“空白间隙”的原因就是这个空白符。

3、解决方法

        1)、设置父元素>font-size为0,再根据实际需求设置本身元素font-size。

CSS代码:

ul {
    font-size: 0px;
}

ul li {
    padding: 0px 10px;
    font-size: 12px;
    border: 1px solid #F00;
    display: inline-block;
}

        2)、元素与元素不换行

HTML代码:

<ul>
    <li>第一个inline-block元素</li><li>第二个inline-block元素</li>
</ul>

<!--或者:-->

<ul>
    <li>第一个inline-block元素</li><!--
    --><li>第二个inline-block元素</li>
</ul>

<!--或者:-->

<ul>
    <li>第一个inline-block元素
    </li><li>第二个inline-block元素</li>
</ul>

        3)、使用margin负值

CSS代码:

ul li {
    margin-right: -6px;
    padding: 0px 10px;
    border: 1px solid #F00;
    display: inline-block;
}

        margin的负值与上下文的字体、文字大小、浏览器有关。

        4)、使用letter-spacing或者word-spacing

        一个是字符间距(letter-spacing)一个是单词间距(word-spacing)

CSS代码:

ul {
    letter-spacing: -6px;
}

ul li {
    padding: 0px 10px;
    border: 1px solid #F00;
    display: inline-block;
    letter-spacing: 0px;
}

/*或者:*/

ul {
    word-spacing: -6px;
}

ul li {
    padding: 0px 10px;
    border: 1px solid #F00;
    display: inline-block;
    word-spacing: 0px;
}

 

方法三:伸缩布局

1、使用flex布局

CSS代码:

.wrapper {
    display: -webkit-flex;
    display: -moz-flex;
    display: flex;
	
    -webkit-flex-flow: row nowrap;
    -moz-flex-flow: row nowrap;
    flex-flow: row nowrap;
    -webkit-align-items: stretch;
    -moz-align-items: stretch;
    align-items: stretch;
    -webkit-justify-content: flex-start;
    -moz-justify-content: flex-start;
    justify-content: flex-start;
}

.wrapper > * {
    width: 200px;
    border: 1px solid #F00;
}

HTML代码:

<div class="wrapper">
    <div>第一个flex元素</div>
    <div>第一个flex元素</div>
</div>	

        该方法比较简单,出现的问题也比较少,存在的问题就是:兼容性。不同浏览器之间的兼容性,浏览器不同版本间的兼容性。但是,只要在属性前边添加浏览器内核的私有属性-webkit-、-moz-、-ms-、-o-基本上都能解决问题。

 

转载于:https://my.oschina.net/dh20/blog/1800668

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML 本身并不能设置方框的排列方式,但是可以通过 CSS 来实现。下面我会列出一些常见的排列方式,供你参考。 1. 均分排列 均分排列是指将多个方框等分排列在一行或一列中。这可以通过设置方框的宽度和 margin 值来实现。例如,如果要将三个方框等分排列在一行中,可以这样写 CSS: ``` .box { width: calc(33.33% - 10px); margin-right: 10px; } .box:last-child { margin-right: 0; } ``` 上面的代码中,我们将每个方框的宽度设置为 33.33%,并且设置了右边距为 10px。同时,我们使用了 `:last-child` 选择器来去掉最后一个方框的右边距,以免出现多余的间隔。 2. 浮动排列 浮动排列是指将多个方框浮动在一行或一列中。这可以通过设置方框的 float 属性来实现。例如,如果要将三个方框浮动在一行中,可以这样写 CSS: ``` .box { float: left; width: 33.33%; } ``` 上面的代码中,我们将每个方框的宽度设置为 33.33%,并且设置了浮动为 left。 3. 网格排列 网格排列是指将多个方框排列在一个网格中。这可以通过 CSS Grid 或 Flexbox 来实现。例如,如果要将四个方框排列在一个 2x2 的网格中,可以这样写 CSS: ``` .container { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); grid-gap: 10px; } .box { background-color: #ccc; } ``` 上面的代码中,我们首先将父元素设置为网格布局,然后使用 `grid-template-columns` 和 `grid-template-rows` 属性来定义列和行的数量和大小。最后使用 `grid-gap` 属性来设置方框之间的间隔。这样,四个方框就会自动排列在一个网格中。 以上是三种常见的方框排列方式,当然还有其它的方式,具体要根据需求和情况来定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值