由阿里14校招抛砖引玉谈CSS3 box-flex属性和box-orient属性

  比较有意思的是虽然目前没有浏览器支持box-flex,box-orient属性,但CSS3问世以来,这两个属性却一直很火。2014年阿里校招第5题要求使用CSS3中的功能实现三个矩形的布局,总的宽度为100%,其中的三个矩形,第一个矩形的宽度是200px,第二个和第三个矩形的宽度相等,给出HTML结构是:

<div class="box">
    <div class="item">column 1</div>
    <div class="item">column 2</div>
    <div class="item">column 3</div>

</div>>

这里所指的CSS3属性包括box-flex和box-orient。由于没有浏览器支持这两个属性,Firefox支持替代的-moz-box-flex,-moz-box-orient属性,Safari,Opera以及Chrome支持替代的-webkit-box-flex,-webkit-box-orient属性。

下面是该题的CSS样式表

 1 <style type="text/css">
 2         *{padding: 0;margin:0}
 3         .box{
 4             width: 100%;
 5             background: greenyellow;
 6             box-orient:horizontal;
 7             -webkit-box-orient: horizontal;
 8             -ms-box-orient:horizontal;
 9             -o-box-orient:horizontal;
10             -moz-box-orient: horizontal;
11             display: -ms-box;
12             display: -moz-box;
13             display: -webkit-box;
14             display: -o-box;
15         }
16         .box>.item{
17             height: 100px;
18             background: red;
19             margin: 10px 10px 10px 0;
20             -moz-box-flex:1;
21             -webkit-box-flex: 1;
22         }
23         .box .item:first-child{
24             width: 200px;
25             margin-left: 10px;
26             -moz-box-flex: 10px;
27             -webkit-box-flex: 10px;
28         }
29
30     </style>

1  box-flex:

该属性规定框的子元素是否可以伸缩其尺寸(可伸缩元素能够随着框的缩小或扩大而缩小或放大,只要框中有多余的空间,可伸缩元素就会扩展来填充这些空间),主要让子容器对父容器的宽度按一定规则进行划分。如上述代码三个子块的值都是1,也就是每个子块的宽度占1/3,但由于对这道题来说,由于.box .item:first-child{width:200px}对第一个子元素限定为宽度200px,因此第二个和第三个的宽度均为剩下宽度的1/2。

如下图代码

 1 <html>
 2 <head>
 3 <style>
 4 div
 5 {
 6 display:-moz-box; /* Firefox */
 7 display:-webkit-box; /* Safari and Chrome */
 8 display:box;
 9 width:300px;
10 border:1px solid black;
11 }
12
13 #p1
14 {
15 -moz-box-flex:1.0; /* Firefox */
16 -webkit-box-flex:1.0; /* Safari and Chrome */
17 box-flex:1.0;
18 border:1px solid red;
19 }
20
21 #p2
22 {
23 -moz-box-flex:2.0; /* Firefox */
24 -webkit-box-flex:2.0; /* Safari and Chrome */
25 box-flex:2.0;
26 border:1px solid blue;
27 }
28 </style>
29 </head>
30 <body>
31
32 <div>
33 <p id="p1">Hello</p>
34 <p id="p2">W3School</p>
35 </div>
36
37 <p><b>注释:</b>IE 不支持 box-flex 属性。</p>
38
39 </body>
40 </html>

这是W3school中的一个例子红色和蓝色各占总宽度的1/3和2/3。

不知道大家有没有注意,上述示例的父容器的display均为box,为什么呢~因为只有这样子容器才可以进行划分,不过还有点小问题,这时如果使用margin:0 auto在chrome下令子元素居中是比较perfect,但是Firefox下就不行了,别着急,我们可以通过把父容器设置为text-align:center;来化险为夷。

2  box-orient:

他也是一个可伸缩框属性,规定框的子元素是否应该水平或者垂直排列。

时间: 2024-08-25 05:58:52

由阿里14校招抛砖引玉谈CSS3 box-flex属性和box-orient属性的相关文章

CSS3 display:flex和display:box有什么区别?

**区别**,仅是各阶段草案命名.- W3C 2009年第1次草案:[display:box;](https://www.w3.org/TR/2009/WD-css3-flexbox-20090723/)- W3C 2011年第2次草案:[display:flexbox | inline-flexbox;](https://www.w3.org/TR/2011/WD-css3-flexbox-20110322/)- W3C 2012年第5次草案及以后的候选推荐标准:[display:flex |

浅谈CSS3 Filter的10种特效

Filters主要是运用在图片上,以实现一些特效(尽管他们也能运用于video上).但是,我们主要讨论的是Filter图片上的运用. 再来,介绍一下Filters的语法:Filters使用时候的语法非常简单,例如: elm { filter: none | <filter-function > [ <filter-function> ]* } 它的默认值是none,且不具备继承性.其中filter-function具有以下可选值: 1.grayscale灰度 2.sepia褐色 3

如何拿到阿里算法校招offer

好多同学有问过怎么能拿到阿里算法类校招的offer,刚好看到这篇文章分享给大家,详情可以看原文链接,原文链接中有视频讲解. 师兄师姐的建议: 之前初学算法的时候上过的公开课和看过的书 1. Coursera:<Machine Learning>.<Pattern Discovery in Data Mining>.<R Programming>,平台特点:通俗易懂,适合入门,看完公开课基本能写出作业 2. edx:<Introduction to Big Data

阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则

阿里P8架构师谈:消息中间件介绍.典型使用场景.以及使用原则大型分布式架构里一定会涉及到消息中间件,今天先谈谈消息中间件. 本文作者 陈睿 优知学院创始人 曾任职阿里巴巴高级软件工程师.百度研发经理.携程定制旅游CTO 常用的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ. 一.kafka1.不完全符合jms规范,注重吞吐量,类似udp 和 tcp 2.一般做大数据吞吐的管道 我们现在的用途就是负责在各个idc之间通信 3.量大对数据不是百

阿里P8架构师谈:2019的Java程序员要怎么提升?拿30K高薪?

最近去阿里的菜鸟国际做了一次面试交流,发现大公 阿里P8架构师谈:2019的Java程序员要怎么提升?拿30K高薪?司对于面试者的知识结构考核非常严谨,可以作为我们日常工作学习的指导.虽然很多人说面试问到的东西在实际工作中很少用到,甚至有「面试造火箭,工作拧螺丝」的说法.但从面试中,其实可以看得出来现在的公司对于面试者的知识体系要求.如果我们能在工作中就按着这样的要求去不断提升,那么在面试的时候必然也能游刃有余. 具有一到五年开发经验的程序员 需要学习的内容? 技术学到这个阶段,很容易遇到瓶颈,

CSS3之flex兼容写法

很久不写博文,之前的长时间不上都关闭了,但随着工作时间长越来越长,对知识的积累和总结还真的是很重要的.所以奉劝码农们每天都还是要抽出来一点时间总结点东西,以后对你受益匪浅!!今天还是变谈CSS3里的flex怎么处理兼容的 flex是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了,虽然现在低版本浏览器不支持,可是对于移动来说兼容性不是问题,可是在安卓4.3以后版本里.那就不好用了,今天咱们就说下如果写flex才能保证兼容性. flex之所以有兼

(转)css3的flex盒子布局

Flex 布局教程:语法篇 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. Flex布局将成为未来布局的首选方案.本文介绍它的语法,下一篇文章给出常见布局

CSS3新增的常用方法以及CSS常见属性整理

CSS 用于控制网页的样式和布局,而CSS3 是最新的 CSS 标准. CSS3的规范仍在开发中,有些CSS3并不能完美兼容所有浏览器. CSS3被拆分为"模块".旧规范已拆分成小块,还增加了新的. 一些最重要CSS3模块如下: 选择器 盒模型 背景和边框 文字特效 2D/3D转换 动画 多列布局 用户界面 CSS3选择器 添加了关系型选择器.属性选择器.伪元素选择器.伪类选择器等等新的选择器.   可以更精准的筛选元素.CSS3选择器 CSS3边框 CSS3中可以为元素创建圆角边框,

display:flex和display:box布局浏览器兼容性分析

display:flex和display:box都可用于弹性布局,不同的是display:box是2009年的命名,已经过时,用的时候需要加上前缀:display:flex是2012年之后的命名.在实际的测试中display:flex不能完全的替代display:box.display:flex的浏览器兼容性比较麻烦. 1.关于display:flex 对于响应式布局,使用flex很方便,但是它的兼容性也是一个值得考虑的问题. <div class="container">