说明:请使用chrome浏览器打开

See the Pen pvyjGV by lilyH (@lilyH) on CodePen.

如上图所示,我们你要实现的效果就是,(1)在一行中显示两块元素;(2)每块元素的长度根据它里面的文字变化

还是先看代码吧:

HTML

  1. <ul class="flex-container">
  2. <li class="flex-item"><div>1234567</div></li>
  3. <li class="flex-item"><div>2</div></li>
  4. <li class="flex-item"><div>2</div></li>
  5. <li class="flex-item"><div>11111</div></li>
  6. <li class="flex-item"><div>11111111111111111111</div></li>
  7. <li class="flex-item"><div>22222222222222222222222222222222222222222222222</div></li>
  8. </ul>

CSS

  1. .flex-container {
  2. padding:;
  3. margin:;
  4. list-style: none;
  5.  
  6. display: flex;
  7. -webkit-flex-flow: row wrap;
  8. justify-content: space-between;
  9. }
  10.  
  11. .flex-item {
  12.  
  13. flex-grow:;
  14. min-width:40%;
  15. height: 150px;
  16. margin-top: 10px;
  17. line-height: 150px;
  18. color: white;
  19. font-weight: bold;
  20. font-size: 3em;
  21. text-align: center;
  22. }
  23. .flex-item div{
  24. background: tomato;
  25. height: 150px;
  26. line-height: 150px;
  27. }
  28. .flex-item:nth-of-type(2n+1) div{
  29. margin-right: 5px;
  30. }
  31. .flex-item:nth-of-type(2n) div{
  32. margin-left:5px;
  33. }

说明:

关于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元素的更多相关文章

  1. JQuery利用sort对DOM元素进行排序

    前言 排序对于我们是再熟悉不过了,在绝大数应用程序中都会有这样一个场景:当我们从服务器端获取一个列表时,在界面上进行渲染,我们可以会依赖于某一个规则来进行排序,当然此时绝大多数会再次与服务器进行交互来 ...

  2. 动态SQL字符长度超过8000

    动态SQL字符长度超过8000,我记得SQL SERVER 2008中用SP_EXECUTESQL打破了这个限制. 平常用动态SQL,可能都会用EXEC(),但是有限制,就是8000字符串长度.自从S ...

  3. 解决MVC中JSON字符长度超出限制的异常

    解决MVC中JSON字符长度超出限制的异常 解决方法如下: <configuration> <system.web.extensions> <scripting> ...

  4. 【代码笔记】iOS-判断中英文混合的字符长度的两种方法

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  5. 计算html标签textarea字符长度

    今天学习jQuery,做练习计算html标签textarea字符长度,先添加一个视图操作(Action): 创建一个视图,并按下面顺序标记1,2,3进行写html或javascript脚本: 其中标记 ...

  6. 求任意长度数组的最大值(整数类型)。利用params参数实现任意长度的改变。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. JavaScript判断字符串的字符长度(中文占两个字符)

    判断方法 //判断字符串中的字符 中文算两个字符 function chkstrlen(str) { ; ; i < str.length; i++) { ) //如果是汉字,则字符串长度加2 ...

  8. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  9. destoon控制标题长度,title中显示全标题 标题字符长度怎么控制?

    如题商品调用出来后,标题的字符长度怎么控制?有哪位高手能帮我解决吗? 小弟在此感谢了. &length=30 //30表示30个字节 <!--{tag("moduleid=5& ...

随机推荐

  1. bzoj1102: [POI2007]山峰和山谷Grz

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  2. 认识http协议

    http:Hyper Text Transfer Protocol,超文本传输协议.是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和 ...

  3. dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . dedecms原生提供一个"本地变量注册"的模拟 ...

  4. Cookie对象

    Cookie对象用于保存客户端浏览器请求的服务器页面,也可用于存放非敏感性的用户信息,信息保存的时间可以根据用户的需要进行设置.并非所有的浏览器都支持Cookie,并且数据信息是以文本的形式保存在客户 ...

  5. python中%和format

    两者都是格式化字符串用的,前者是比较老的版本,现在已经不推荐,后者更强大一些 % In [22]: print '%s' % 'hello world' hello world In [23]: pr ...

  6. 通往WinDbg的捷径(二)

    原文:http://www.debuginfo.com/articles/easywindbg2.html译者:arhat时间:2006年4月14日关键词:CDB WinDbg 保存 dumps 在我 ...

  7. 高可用与负载均衡(1)之linux系统的数据链路层负载均衡

    preface 在蓝厂就职到时候,每台缓存服务器都能够跑到2G的流量,这么大的流量,有人会问,服务器是不是安装的万兆网卡,no no no,仅仅是3张千兆网卡绑定在一块.万兆网卡的服务器少见,大多数都 ...

  8. STM8S VCAP

    There is a specific pin called vcap in stm8s mcu. I recommend this pin connects to a 1uF capacitor w ...

  9. 国家电力项目SSH搭建

    SSH项目框架搭建总结: 1.建立Web工程 * 导入需要的jar的包 db:连接数据库的驱动包 hibernate:使用hibernate的jar包 jstl:java的标准标签库 junit:测试 ...

  10. nginx 学习笔记(9) 配置HTTPS服务器--转载

    HTTPS服务器优化SSL证书链合并HTTP/HTTPS主机基于名字的HTTPS主机带有多个主机名的SSL证书主机名指示兼容性 配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定 ...