利用flexbox实现按字符长度排列dom元素
说明:请使用chrome浏览器打开
See the Pen pvyjGV by lilyH (@lilyH) on CodePen.
如上图所示,我们你要实现的效果就是,(1)在一行中显示两块元素;(2)每块元素的长度根据它里面的文字变化
还是先看代码吧:
HTML
- <ul class="flex-container">
- <li class="flex-item"><div>1234567</div></li>
- <li class="flex-item"><div>2</div></li>
- <li class="flex-item"><div>2</div></li>
- <li class="flex-item"><div>11111</div></li>
- <li class="flex-item"><div>11111111111111111111</div></li>
- <li class="flex-item"><div>22222222222222222222222222222222222222222222222</div></li>
- </ul>
CSS
- .flex-container {
- padding:;
- margin:;
- list-style: none;
- display: flex;
- -webkit-flex-flow: row wrap;
- justify-content: space-between;
- }
- .flex-item {
- flex-grow:;
- min-width:40%;
- height: 150px;
- margin-top: 10px;
- line-height: 150px;
- color: white;
- font-weight: bold;
- font-size: 3em;
- text-align: center;
- }
- .flex-item div{
- background: tomato;
- height: 150px;
- line-height: 150px;
- }
- .flex-item:nth-of-type(2n+1) div{
- margin-right: 5px;
- }
- .flex-item:nth-of-type(2n) div{
- margin-left:5px;
- }
说明:
关于flex属性的具体说明,请参考flex全揭秘
(1)容器,flex-container上,设置display:flex;表示里面的子元素走的是flex的布局
(2)容器,flex-container,设置-webkit-flex-flow: row wrap;表示子元素横向排列,多行
(3)容器,flex-container,设置justify-content: space-between;子元素在一行上散落开
(4)子元素,flex-item,设置flex-grow:1; 子元素充满能空间(去掉看看是什么效果)
(5)子元素,flex-item,设置min-width:40%; 这个是关键(可以试试其他的值)
a. 都知道设置50%,那么两个元素是一样大的充满空间;大于50%,那么一行上肯定放不下两个元素
b.因为设置的最小的宽度,如果宽度过小,比如10%,而子元素中的内容又过少的时候,这个时候一行上就会出现不止2个子元素
c. 考虑到如果三个紧挨着的子元素如果都只有一个“字”的内容的话,宽度至少要设置到33.33%;所以宽度值应该是在33.33%到50%之间(假设子元素没有margin等其他让它“变大”的属性)
d. 假设我们设置min-width:35%,(1)那么如果同一行的两个子元素a、b,a内容大于等于65%宽,当b内容超过了35%宽时,后面元素会被挤到下一行;(2)如果同一行的两个子元素a、b,a的内容很少,但是因为它至少占35%的宽,当b的内容超过了65%宽的时候,后面的子元素会被挤到下一行。
根据上面的原理,可以通过评估项目中子元素的内容的长度来设定min-width的值,所以这只能算做一种简单的方法,要真正做到按内容文字长度伸缩容器大小并且排满一行的情况,请使用JS.
ps : 代码中的flex是w3c标准的写法,兼容android和ios的写法,请利用此工具
注明:利用上面的工具生成的兼容方法在ios下有问题,没有换行,还未找到方法,先mark下~
利用flexbox实现按字符长度排列dom元素的更多相关文章
- JQuery利用sort对DOM元素进行排序
前言 排序对于我们是再熟悉不过了,在绝大数应用程序中都会有这样一个场景:当我们从服务器端获取一个列表时,在界面上进行渲染,我们可以会依赖于某一个规则来进行排序,当然此时绝大多数会再次与服务器进行交互来 ...
- 动态SQL字符长度超过8000
动态SQL字符长度超过8000,我记得SQL SERVER 2008中用SP_EXECUTESQL打破了这个限制. 平常用动态SQL,可能都会用EXEC(),但是有限制,就是8000字符串长度.自从S ...
- 解决MVC中JSON字符长度超出限制的异常
解决MVC中JSON字符长度超出限制的异常 解决方法如下: <configuration> <system.web.extensions> <scripting> ...
- 【代码笔记】iOS-判断中英文混合的字符长度的两种方法
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- 计算html标签textarea字符长度
今天学习jQuery,做练习计算html标签textarea字符长度,先添加一个视图操作(Action): 创建一个视图,并按下面顺序标记1,2,3进行写html或javascript脚本: 其中标记 ...
- 求任意长度数组的最大值(整数类型)。利用params参数实现任意长度的改变。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JavaScript判断字符串的字符长度(中文占两个字符)
判断方法 //判断字符串中的字符 中文算两个字符 function chkstrlen(str) { ; ; i < str.length; i++) { ) //如果是汉字,则字符串长度加2 ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- destoon控制标题长度,title中显示全标题 标题字符长度怎么控制?
如题商品调用出来后,标题的字符长度怎么控制?有哪位高手能帮我解决吗? 小弟在此感谢了. &length=30 //30表示30个字节 <!--{tag("moduleid=5& ...
随机推荐
- bzoj1102: [POI2007]山峰和山谷Grz
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- 认识http协议
http:Hyper Text Transfer Protocol,超文本传输协议.是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和 ...
- dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . dedecms原生提供一个"本地变量注册"的模拟 ...
- Cookie对象
Cookie对象用于保存客户端浏览器请求的服务器页面,也可用于存放非敏感性的用户信息,信息保存的时间可以根据用户的需要进行设置.并非所有的浏览器都支持Cookie,并且数据信息是以文本的形式保存在客户 ...
- python中%和format
两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些 % In [22]: print '%s' % 'hello world' hello world In [23]: pr ...
- 通往WinDbg的捷径(二)
原文:http://www.debuginfo.com/articles/easywindbg2.html译者:arhat时间:2006年4月14日关键词:CDB WinDbg 保存 dumps 在我 ...
- 高可用与负载均衡(1)之linux系统的数据链路层负载均衡
preface 在蓝厂就职到时候,每台缓存服务器都能够跑到2G的流量,这么大的流量,有人会问,服务器是不是安装的万兆网卡,no no no,仅仅是3张千兆网卡绑定在一块.万兆网卡的服务器少见,大多数都 ...
- STM8S VCAP
There is a specific pin called vcap in stm8s mcu. I recommend this pin connects to a 1uF capacitor w ...
- 国家电力项目SSH搭建
SSH项目框架搭建总结: 1.建立Web工程 * 导入需要的jar的包 db:连接数据库的驱动包 hibernate:使用hibernate的jar包 jstl:java的标准标签库 junit:测试 ...
- nginx 学习笔记(9) 配置HTTPS服务器--转载
HTTPS服务器优化SSL证书链合并HTTP/HTTPS主机基于名字的HTTPS主机带有多个主机名的SSL证书主机名指示兼容性 配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定 ...