关于display:inline-block布局导致错位问题分析
移动端设计稿需求是这样的,如下图:
未知的几个头像从左至右并行居中排列。
一般可能直接使用float,但是设计图要求头像排列始终是居中的,于是想到要让它们成为行内元素,然后可使用的方法有flex box,inline-block;
因为是在移动端,于是使用flex box:
.user-list {
margin: 20px auto;
display:-webkit-box;
-webkit-pack:center;
} .user-list li {
width: 46px;
height: 46px;
margin: 0 5px;
border-radius: 50%;
overflow: hidden;
}
.user-list li img {
width: 100%;
}
<ul class="user-list">
<li><img src="data:images/u137.png" /></li>
<li><img src="data:images/user2.jpg" /></li>
<li><img src="data:images/u137.png" /></li>
<li><img src="data:images/user.jpg" /></li>
<li><img src="data:images/u137.png" /></li>
</ul>
嗯嗯,一切看起来很完美,居中了,可以放下好几个。但是,如果要放下10个,擦,没法换行,悲剧了。
于是使用display:inline-block,大家都知道块级元素和行内元素的区别,inline-block就是让你两者兼顾。
.user-list {
margin: 20px auto;
text-align: center;
} .user-list li {
display: inline-block;
width: 46px;
height: 46px;
margin: 0 5px;
border-radius: 50%;
overflow: hidden;
}
.user-list li img {
width: 100%;
}
于是出现了下面这种情况:
在IOS上是这样的:
在chrome:
你妹,到底几个意思,上上下下的....
这些问题在手机上出现的,测试的就找到我问什么情况,我说在PC上浏览器都是好的啊,我估计是inline-block导致的,但是试了半天一切正常。最后估摸着我写的demo里面各个图片是一样大小的,会不会真是数据头像不一样大?
然后换了上面的图片,在PC上复现了问题。既然能在PC上复现,那问题就好解决多了。
导致人问题分析如下:
1、display:inline-block,是基于baseline对齐的,大小不一会导致上下不齐,所以设置的时候最好设置vertical-align属性。
2、图片的宽度设置是100%自适应的,长宽高不一致会导致头像显示不完整,如上面,成半圆了,所以设置成max-height:100%;
搞定!
.user-list {
margin: 20px auto;
text-align: center;
} .user-list li {
display: inline-block;
width: 46px;
height: 46px;
margin: 0 5px;
border-radius: 50%;
overflow: hidden;
vertical-align: top;
} .user-list li img {
max-height: 100%;
}
对于display:inline-block的知识可以参考:http://ued.taobao.org/blog/2012/08/inline-block/
关于display:inline-block布局导致错位问题分析的更多相关文章
- display:inline block inline-block 的区别
原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...
- display:inline、block、inline-block的区别
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度不设是它的容器的100%,除非设定一个宽度 <div& ...
- display:block、display:inline与displayinline:block的概念和区别
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- 理解display:inline、block、inline-block
要理解display:inline.block.inline-block的区别,需要先了解HTML中的块级(block)元素和行级(inline)元素的特点,行内元素也叫内联元素. 块级元素 总是另起 ...
- HTML5 display:inline、block、inline-block的区别--备用
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...
- display:inline、block、inline-block的区别(转)
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...
- display:block;inline;inline-block大总结
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- display:inline、block、inline-block区别
display:inline.block.inline-block区别 display:block就是将元素显示为块级元素. display:inline就是将元素显示为行内元素. inline-bl ...
- display:inline、block、inline-block的区别(摘抄)
display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都 ...
随机推荐
- Scrapy 抓取股票行情
安装scrapy会出现错误,我们选择anaconda3作为编译环境,搜索scrapy安装(有错误自查) 创建scrapy爬虫项目: 调出cmd,到相应目录:输入: scrapy startprojec ...
- JavaWeb后台从input表单获取文本值的两种方式
JavaWeb后台从input表单获取文本值的两种方式 #### index.html <!DOCTYPE html> <html lang="en"> & ...
- 4.nginx动静分离
动静分离,就是将css.js.jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能. 核心就是区分动态和静态资源 图片转自:https://www.cnblogs.com/xi ...
- Which mb sdconnect c4 worth the money?
MB SD connect C4 with laptop v2018.5 Version avaiable now ,It is ready to work after you get it ,wor ...
- 小程序点击清除input内的内容不生效
如下图,点击右侧的按钮清除input的内容,当获取焦点时点击按钮是会穿透的清除不了input,使用cover-image和cover-view页面不起作用 解决办法:input在左侧,按钮在右侧使他们 ...
- proxyTable设置跨域
如何设置跨域 1.在config--index.js 中配置 proxyTable: { '/api': { target: 'http://www.xxx.com', //目标接口域名 change ...
- 1-----Docker实例-安装Nginx
Docker 安装 Nginx 方法一.docker pull nginx(推荐) 查找 Docker Hub 上的 nginx 镜像 runoob@runoob:~/nginx$ docker se ...
- vue项目element-ui框架中的弹窗中的表单验证清除问题
问题回顾: 1.vue项目的在弹窗上的form表单验证,第一次点击新增时正常,第二次新增打开弹窗后由于表单内容为空,出现验证这种情况 2.为了解决上面的情况,在执行点击新增事件加上this.$refs ...
- app唤起的完美解决方案,及阻止浏览器的默认弹窗行为
https://stackoverflow.com/questions/10237031/how-to-open-a-native-ios-app-from-a-web-appvar frame = ...
- Cookie跳转登录验证码
对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的, 对于系统来说使用验证码可以有效果的防止采用机器猜测方 ...