热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

理解CSS3新特性-弹性盒子模型

无奈真正关于HTML5和CSS3方面的东西真是少之又少,总是上各个论坛里去淘宝,不过新的东西在中文网上还是颇少,需要去一些外文网站上淘了,抑或是期待谁发现翻译过来!这是CSS3的新特性,它为开发者提供

无奈真正关于HTML5和CSS3方面的东西真是少之又少,总是上各个论坛里去淘宝,不过新的东西在中文网上还是颇少,需要去一些外文网站上淘了,抑或是期待谁发现翻译过来!

这是CSS3的新特性,它为开发者提供了一种非常灵活的布局方式,但是理解它确实需要花点功夫。
目前支持这一特性的浏览器仅有webkit内核的safari和chrome以及gecko内核的firefox,这一点也是比较头疼,因为我们不能够在我们的项目中灵活的使用它,但当你要针对移动平台(iphone、android、ipad、itouch、ipod)进行web项目的开发时,可以灵活的使用它。
实际上即便它在gecko内核(FF)和webkit内核(Chrome,safari)中可以得到良好的支持,但是它们表现出来的视觉效果却是不一样的(见下图)。
      
CSS3的box-flex是如何工作的呢?
现今,在开发WEB站点时会遇见设计师的作品有很多的布局类似于报纸的排版,当然我们可以通过CSS2的float属性实现它(例如以下代码),但是CSS2在设计之初并没有添加多列布局的属性。

       .left{float:left;}
       .right{float:right;}
      .clear{clear:both;}
开始使用新的方式布局你的盒子
CSS3灵活的盒子模型表面的非常优美,真的无法用文字来把她描述的很清晰
HTML:

      


           
 1

         
 2 

         
 3

          
4

     

CSS:

    .container {
            width: 1000px;
            display: -webkit-box;
            display: -moz-box;
            -webkit-box-orient: horizontal;
             -moz-box-orient: horizontal;
        }
      .blue {
             background: #357c96;
             font-weight: bold;
             margin: 2px;
             padding: 20px;
             color: #fff;
             font-family: Arial, sans-serif;
           }
怎么样?很简单的实现了CSS3的盒子模型布局。你可以忽略.blue类名,.container容器定义了diaplay属性的值为盒子,然后设置了盒子适应于水平方向, 这样的话看起来应该是这个样子(见下图)


当然,你也可以设置box适应于vertical,如果设置了适应于垂直方向,那个所有的盒子将垂直显示在容器中。

box-direction是用来确定子元素的排列顺序,可选值有:normal | reverse | inherit

其中normal是默认值,表示按照正常顺序排列。所谓正常顺序,就是我们看书写文字的顺序,从左往右,由上至下,先出现的元素,就上面或是左边。而reverse表示反转

弹性的盒子
你大概已经想到这些盒子元素的结构是这个样子的:

正如你看到的一样,在最后一个盒子后面有一些间隙(呵呵,这正要说到CSS3盒子模型的强大之处),
你可能有一些花招来填充完后面的间隙,但是在CSS3盒子模型中你可以指定其中一个盒子的灵活性,以便拉伸该盒子的大小来填充剩余的空白区域。

      .flexible {
             -webkit-box-flex: 1;
             -moz-box-flex: 1;
      }

如果我们增加了一个flexible类名到第三个盒子,那么你将看到这样的一个效果:

哇噻!剩余的空间居然被第三个盒子完全填充了,为什么呢?因为我们为第三个盒子添加了box-flex属性,那么它的父元素剩余的间隙将分配到这个盒子,假如我们又为第二个盒子增加了box-flex属性,那么剩余的间隙将平均分配到这两个盒子。

如果你的数学比较好的话,你可能很快的算出第二个盒子和第三个盒子的比例应该是剩余空间除以2之后的1:1的比例。有点不理解么?好的,继续读下去。
举个例子:如果剩余空间有500像素,那么这两个box-flex为1的元素将获取500/2的额外空间,同样,如果第一个盒子的box-flex设置了3,那么它将获取3:1的额外空间(也就是300像素),而另外一个元素将获取200像素的额外空间。
牛逼吧!这个属性将允许你轻松的根据你的需要扩展你的盒子。
盒子的方向
方向也是CSS3盒子模型的一个关键。我们修改以上的例子,我们可以翻转这四个盒子的排序(从1、2、3、4翻转到4、3、2、1)

       -webkit-box-direction:reverse;
你还可以使用box-ordinal-group来改变每个盒子的位置。
简单的说就是一个盒子的box-ordinal-group属性值越高,那么它就排在最后。如果设置了box-direction为reverse,那么它将在左手边,反之则在右手边。

       -moz-box-ordinal-group: 2;
       -webkit-box-ordinal-group: 2;
盒子的对齐方式

盒子的对齐方式相当简单。有两种方式实现它:1、box-align;2、box-pack。

box-align的可选参数有:start | end | center | baseline | stretch

box-pack可选值有:start | end | center | justify

box-align与box-pack都是决定盒子内部剩余空间怎么使用的。在行为效果上就是表现为“对齐”,这跟Adobe的软件中的一些“对齐”是一致的

如果你的盒子父元素设置了box-orient为水平方向,那么box-align将作用于垂直方向,反之则作用于水平方向

box-pack完全是对立的,当盒子父元素box-orient为水平方向时,它作用于水平方向,当盒子父元素box-orient为垂直方向时,它作用于垂直方向.
使用任何一种方式设置它的属性值为center时,将能够确保你的盒子处在父元素中的中间。

box-lines
box-lines是用来决定子元素是可以换行显示呢?还是就算挤出油还是单行显示。两个可选值:single | multiple

其中single是默认值,表示死活不换行

设置box-lines:multiple后,就多行显示了,但是浏览器的支持程度是不同的


推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 在第10天的夜灵HTML日志中,我们深入探讨了浏览器兼容性和高级选择器的应用。CSS3引入了许多新属性,但在旧版浏览器中的支持情况并不理想。然而,目前主流浏览器的最新版本已全面支持这些新特性。对于那些不支持CSS3新属性的浏览器,我们提供了多种解决方案,以确保网站在不同环境下的兼容性和用户体验。此外,我们还详细讨论了如何利用高级选择器提升页面布局的灵活性和可维护性。 ... [详细]
  • 在HTML5应用中,Accordion(手风琴,又称抽屉)效果因其独特的展开和折叠样式而广泛使用。本文探讨了三种不同的Accordion交互效果,通过层次结构优化信息展示和页面布局,提升用户体验。这些效果不仅增强了视觉效果,还提高了内容的可访问性和互动性。 ... [详细]
author-avatar
天山金泉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有