最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

实现元素水平排列的六种方法

来源:懂视网 责编:小采 时间:2020-11-02 22:08:30
文档

实现元素水平排列的六种方法

实现元素水平排列的六种方法:众所周知,块级元素默认是垂直排列的,行内元素是水平排列的,而在布局时基本上都是用块级元素,如div等常用块级标签,那么如何让块级元素也进行水平排列呢?这篇文章给大家介绍六中方式,实现块级元素的水平排列。第一种:display:inline-block首先得
推荐度:
导读实现元素水平排列的六种方法:众所周知,块级元素默认是垂直排列的,行内元素是水平排列的,而在布局时基本上都是用块级元素,如div等常用块级标签,那么如何让块级元素也进行水平排列呢?这篇文章给大家介绍六中方式,实现块级元素的水平排列。第一种:display:inline-block首先得

众所周知,块级元素默认是垂直排列的,行内元素是水平排列的,而在布局时基本上都是用块级元素,如div等常用块级标签,那么如何让块级元素也进行水平排列呢?这篇文章给大家介绍六中方式,实现块级元素的水平排列。

第一种:display:inline-block

首先得先了解块级元素(block elements)和行内元素(inline elements)

块级元素:块级元素包含width height,padding,border与margin,他们的排列方式是从上到下排列,常见的块级元素有div,p,form,ul等等。

行内元素:高度和宽度由内容决定,自身没法设定固定的大小,不存在垂直方向的margin和padding,排列方式是水平排列,行内元素在html所有元素占大多数,比如a,span,label,button,img,input......

这里可能有人会产生疑问,“button和img以及input等标签可以设置宽度和高度也可以设置margin与padding,为什么它确实行内元素呢?”其实html元素主要有两种划分方式,分别是“块级元素与行内元素”,“替换元素与不可替换元素”。上面介绍了第一种划分方式,下面介绍一下第二种划分方式:

替换元素:通俗的理解就是具有width和height属性的元素。替换元素类似于display:inline-block元素,可以设置高宽与内外边距,主要包括img , input , textarea , select , object,audio和canvas在某些特定情形下为替换元素。

不可替换元素:除了替换元素剩下的都是不可替换元素(O(∩_∩)O)

扯了一大堆,我们知道display:inline-block可以让元素横向排列,但是这种布局可能会存在一点点小问题,举栗子:

<style>
 div{
 display:inline-block; width:200px; height:200px;
 }
 .div1{
 background:green;
 }
 .div2{
 background:red;
 }
</style>
<div class = "div1">左边</div>
<div class = "div2">右边</div>

这是我们发现两个div之间存在一个空隙,这是为什么呢?

浏览器会将换行符,缩进符,以及空格当做一个空格来处理,即使暗恋两次空格,或者一个换行加一个空格,等等都会解析成一个空格使用。这个空格的大小则是font-size/2大小。去除这个空隙有很多办法。

1.设置div2的margin-left:-font-size/2

2.设置两个div的父标签的font-size:0

3.设置负的word-spacing

第二种:float:left/right

float属性可以让元素脱离常规文档流,沿着容器的左侧或者右侧进行水平排列。

这种方式可以说是用的最多的,但是有个问题,在自适应布局中一般不会固定元素的高宽,会根据内容大小来自动调整,这是如果子元素都是浮动元素的话就会存在高度塌陷。

举栗子

<style>
 span{
 float:left; width:200px; height:200px;
 }
 .box1{
 background:green;
 }
 .box2{
 background:red;
 }
</style>
<div>
 <span class = "box1">左边</span>
 <span class = "box2">右边</span>
</div>

这里将上一个栗子中的子元素div故意改成了span,其实想表达float可以将元素隐式的转换成block元素(position:absolute/fixed亦可),所以自然就可以设置宽度和高度。

那么盒子水平排列之后存在什么问题呢?没错!父容器高度塌陷。这时父容器div的高度为0,因为浮动元素会脱离常规文档流,它的父容器计算高度时会忽略它。这是我们不想看到的,因为这个高度塌陷的DIV后面如果还有其它常规流标签的话,那么页面就会出现错乱等不想看到的结果。

解决办法自然就是清除浮动,主要通过两种方式清除浮动:

1.clear:left/right/both,专门用来清除浮动的CSS。

2.BFC,因为BFC有一条规则“计算BFC的高度时,浮动元素也参与计算”。

说一下用clear清除浮动的几种方法:

1.最后一个子元素后面加一个空标签,然后设置其样式clear:both。

2.在最后一个浮动子元素中,利用伪元素::after,添加clear样式清除浮动

第三种:table布局

这种布局方式其实不常用,因为它存在种种问题。

渲染速度较慢

增加html代码量,不易维护

标签的名字不符合html语义化,table本来就是做表格用的,拿来布局甚是不妥

标签结构较死,后期修改成本较高

等等,此处不作过多阐述。总之,尽量用table布局

第四种:绝对定位

这种方式日常开发中用的也较多,前面提到float可以让元素脱离常规文档流,这里position:absolute/fixed也具有同样的效果,处理办法在float布局中已经提到了,这里搬来即可。

这里要说一下position:absolute绝对定位,以它的第一个父级并且是position:absolute/relative/fixed等飞static定位的元素为基点进行定位,如果找不到则以根元素为基准进行定位。一般都是采用父元素position:ralative,子元素position:absolute结合使用。

第五种:css3的弹性布局

弹性布局因为其兼容性所以还没有得到广泛的认可,不过我觉得以后它肯定会独占鳌头,就跟我看好html的视频播放器一样,早晚都会干败flash,只是时间问题!!!

第六种:transform:translate

CSS3中用于动画的一个样式,但是他可是让两个元素横向排列,这里不多说直接上代码,请用谷歌浏览器运行一下:

<style>
 div{
 width:200px; height:200px;
 }
 .box1{
 background:green;
 }
 .box2{
 transform: translateX(200px) translateY(-200px);
 background:red;
 }
 </style>
<div>
 <div class = "box1">左边</div>
 <div class = "box2">右边</div>
</div>

效果和前几种方式一样。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

实现元素水平排列的六种方法

实现元素水平排列的六种方法:众所周知,块级元素默认是垂直排列的,行内元素是水平排列的,而在布局时基本上都是用块级元素,如div等常用块级标签,那么如何让块级元素也进行水平排列呢?这篇文章给大家介绍六中方式,实现块级元素的水平排列。第一种:display:inline-block首先得
推荐度:
标签: 方法 元素 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top