移动端行列布局

最近发现UC下通过display:inline-block布局有点问题,全用最新版:Android6系统和最新版UC手机浏览器都还是有问题。

设计需求: 导航栏100%宽度,共有4个子栏目,每一个栏目占1/4宽度。

HTML代码为:

<ul>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>

方法一: 通过"display: inline-block;"来布局,这里通过父元素设置"font-size: 0;"消除子元素inline-block的默认间距。

ul{
  width: 100%;
  font-size: 0;
}
li{
  display: inline-block;
  width: 25%;
  height: 100px;
}

结果就是手机浏览器表现都很好,除了UC浏览器(下图左为正常浏览器,右为UC浏览器):

                 

看来设置父元素"font-size: 0"在UC下并不能消除掉子元素inline-block的默认间距。

那下面就换一种消除间距的方法——改变HTML标签的写法。

方法二:HTML结束标签和开始标签之间不留空

<ul>
  <li></li
  ><li></li
  ><li></li
  ><li></li>
</ul>

或者:

<ul>
  <li>
  </li><li>
  </li><li>
  </li><li>
  </li>
</ul>

看起来很怪,目的就是为了从根源上消除HTML空格,那么默认间距也就没有了。

方法三:不用inline-block,用float

ul{
  list-style: none;
  width: 100%;
}
li{
  float: left;
  width: 25%;

  height: 100px;
}

这种方法UC下表现正常。

方法四:使用box/flex布局

ul{
  list-style: none;
  display: -webkit-box;
}
li{
  -webkit-box-flex: 1;
  height: 100px;
}

这样子包括UC在内表现都正常。不过毕竟-webkit-box是老式语法,好像有点落后。那就用新的flex吧:

ul {
  width: 100%;
  list-style: none;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: row;
  flex-direction: row;

}
li{
  -webkit-flex-grow: 1;
  flex-grow: 1;
  height: 100px;
}

结果发现安卓机的UC又不行了,都已经显式声明为横着排列,UC还是打竖的。

所以可以用-webkit-box,又或者-webkit-box和flex一起用,这样都是表现正常的:

ul {
  width: 100%;
  list-style: none;
  display: -webkit-box;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: row;
  flex-direction: row;}li{
  -webkit-box-flex: 1;
  -webkit-flex-grow: 1;
  flex-grow: 1;
  height: 100px;}

方法五:表格布局

ul{
  display: table;
  width: 100%;
}
li{
  display: table-cell;
  width: 25%;
  height: 100px;
}

方法六:

  绝对定位(=.=)

总结: 对于父元素使用"font-size: 0;"来消除子元素的inline-block的默认间距不起作用,而且对flex支持不好。在正式应用中应考虑兼容的方案。

时间: 2024-11-11 09:19:31

移动端行列布局的相关文章

第 31 章 项目实战-PC 端固定布局[4]

学习要点: 1.热门旅游区 2.标题介绍区 3.旅游项目区 主讲教师:李炎恢 本章主要开始使用学习用 HTML5 和 CSS3 来构建 Web 页面,第一个项目采用 PC 端固定布局来实现. 一.热门旅游区 本节课,我们将探讨一下首页最核心的部分,旅游区.这块内容由两个部分组成,一个是大标题,表示热门旅游区域.其次就是旅游项目的图片展示区域.具体如下: //热门旅游区父元素 <div id="tour"> ... </div> //旅游父元素 #tour { w

移动端rem布局和百分比栅格化布局

移动端的rem: 使用方法: 设置html的font-size,根据浏览器分辨率缩放 设置根元素font-size为100px这样好用的值,不要设为10px这样的: 然后获取浏览器的分辨率,也就是视口宽度,p(比例尺)= 视口宽度/效果图宽度 根元素font-size=100px*p 然后来个resize去跟随浏览器大小变化 1(function (win){ 7 var doc = win.document, 8 html = doc.documentElement, 9 option = h

移动端页面布局的那些事儿

移动端页面布局的那些事儿 http://www.xiaoxiangzi.com/Programme/CSS/4298.html 一. viewport 什么是viewport 简单来讲,viewport就是浏览器上,用来显示网页的那一部分区域了,也就是说,浏览器的实际宽度,是和我们手机的宽度不一样的,无论你的手机宽度是320px,还是640px,在手机浏览器内部的宽度,始终会是浏览器本身的viewport.如今的浏览器,都会给自己的本身提供一个viewport的默认值,可能是980px,或者是其

第31章 项目实战-PC端固定布局[1]

学习要点: 1.准备工作 2.创建项目 3.网站结构 4.CSS选择器 5.完成导航 主讲教师:李炎恢 本章主要开始使用学习用HTML5和CSS3来构建Web页面,第一个项目采用PC端 固定布局来实现. 一.准备工作 1.为了达到最低效果,第一个项目将采用1440x900的分辨率录制:因为,1024根本无法容纳最低宽度的页面:页面采用1280的最低宽度设计,去掉滚动条为1263像素. 2.第一个项目是PC端的固定布局,会采用像素(px)单位. 3.项目素材图片,是课外独立设计好的,课程不会去设计

第九十一节,html5+css3pc端固定布局,完成首页

html5+css3pc端固定布局,完成首页 此时我们的首页就完成了 首页效果 其他页面我就不做了,原理相同,做其他页面时将头尾css分离调用即可 大纲算法 我们看看大纲算法比较清晰,说明符合规则 html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>瓢城旅行社</title> <link

第九十节,html5+css3pc端固定布局,底部区域,说明区域,版权区域

html5+css3pc端固定布局,底部区域,说明区域,版权区域 完成: HTML代码: <!--尾部--> <footer class="wei-bu"> <div class="wei-bu2"> <div class="yy dd1"> <h2>合作伙伴</h2> <hr> <ul> <li>途牛旅游网</li> <

第 31 章 项目实战-PC 端固定布局[5]

学习要点: 1.底部区域 2.说明区域 3.版权及证件区 主讲教师:李炎恢 本章主要开始使用学习用 HTML5 和 CSS3 来构建 Web 页面,第一个项目采用 PC 端固定布局来实现. 一.底部区域 本节课,我们将探讨一下首页中最底部的区域.这部分区域由两个部分组成,一个是说明内容,有:合作伙伴.旅游 FAQ 和联系方式,还有一个就是版权声明及各种手续证件编号. //底部区域父元素 <footer id="footer"> ... </footer> //底

处理移动端自适应布局的方法- calc()与vw

在处理移动端自适应布局时,目前前端最流行的方法应该就是使用媒体查询,来设置HTML的字体大小,然后用rem为单位对Dom的宽高进行设置,这个方法的优势在于兼容性方面很好,劣势则在于当前市场上不同的机型太多,尺寸种类比较杂,所以要想做到所以尺寸机型都能适应,工作量相对比较大.目前也有人会选择用百分比进行布局,这个布局方法在仅仅处理元素的宽高上面非常好用,但是当js中要对dom元素的尺寸进行设置时,百分比的局限性就出来了,还有就是dom元素的font-size没办法用页面宽度百分比对他进行大小设置,

PC端固定布局1

<!doctype html> <html lang="zh-cn"> <link rel="stylesheet" href="弹性伸缩布局.css" type="text/css"> <head> <meta charset="UTF-8"> <title>PC端固定布局</title> </head> &l