精华内容
下载资源
问答
  • 用介观颗粒接触力学模型建立宏观弹性模量的理论规律,干颗粒堆积体宏观弹性模量颗粒所受应力的1/3次方成正比,埋深越大,宏观弹性模量越大。颗粒直径是影响颗粒堆积体宏观弹性模量的重要因素,颗粒直径越大,宏观弹性...
  • 基于弹性变形的Hooke定律,提出了一种...通过与有限元计算结果比较,证明在处理颗粒的接触问题时,该弹性可变形颗粒模型比传统刚性模型能够准确地反映颗粒介质的实际变形和接触力的变化,从而能够提高DEM分析的精度。
  • 基于分形理论的粗糙表面接触力学模型,成雨,原园,基于分形理论,将微凸体的等级变形特征作为结构参数,建立了粗糙表面间的分形接触模型。确定了粗糙表面中单个微凸体弹性变形、
  • 以含虚拟体的弹炮刚柔耦合动力学模型为基础,提出了一种经由虚拟体组成的模拟身管来传递弹丸柔性身管间相互作用力的方法,通过建立将接触面视为规则几何形状的系统模型,得到了在相同射击条件下试验测试数据仿真...
  • 建立了一种考虑法向接触力、切向接触力(含静滑动摩擦力及动...为了验证算法和参数选择的正确性 ,本文对几个有代表性的颗粒系统进行了数值试验研究 ,并对计算结果进行了细致的分析 ,验证了新模型和参数选择的正确性。
  • 建立一个超声波电动机定转子简化接触模型,研究摩擦材料磨损对定转子接触参数与驱动摩擦力的影响,得出保持接触宽度稳定时,摩擦材料磨损后应具有的性能,提出设计超声波电动机梯度摩擦材料的构想,并建立梯度摩擦...
  • 一个刚刚接触某个陌生领域的程序员,无论他怎么努力,对业务的理解一定是肤浅片面的。他明知这个时候作出的模型一定是不够合理的,但是又不得不做,可谓明知不可为而为之,怎能不闹心、不上火、不忐忑?随着项目的...

      问:“对于开发信息系统的程序员来说,最闹心、最上火、最忐忑、最纠结、最不好干、而且肯定会被埋怨的活儿是什么?”
      答案是“建立领域模型”。好的(或者说合理的)模型必须基于对业务深刻理解。一个刚刚接触某个陌生领域的程序员,无论他怎么努力,对业务的理解一定是肤浅和片面的。他明知这个时候作出的模型一定是不够合理的,但是又不得不做,可谓明知不可为而为之,怎能不闹心、不上火、不忐忑?随着项目的推进,对业务的理解也在不断深入,需要对模型不断地重构——《DDD》也是这么说的嘛,但是它没提重构的成本有多大。讽刺的是,越到项目的最后阶段,甚至是上线一段时间之后,越容易产生“啊哈!原来是这么回事!”的顿悟。如果你已经完成了100个页面、300张报表,还有几百万条一分钱都不许错的生产数据,这时候,即使把一个字段从一个表转移到另一个表都可能让你闹心好几天。重构还是不重构?你怎能不纠结,不被埋怨?

    简单

      重构是不可避免的,特别是项目想要产品化,生命周期在5年、10年甚至更久的时候。既然明知道初始的模型肯定是不够合理的——还是咬咬牙承认吧——我们的目标只能(很委屈地)变成“构建一个重构成本比较小的模型”。
      那是怎样的模型呢?答案也很普通:“简单的模型”。

    建模心法4  初始模型一定要简单。

      任何事物,总是由小到大、由简单到复杂的,所以你一准儿在心里吐槽说“这神马破文章,看了半天原来全是废话。”这里的问题是,我们知道领域模型的重构成本很大,对此心有余悸,所以即使想着“就目前的状况来看一个员工只有一个所属科室……”,但是总有个小恶魔在耳边嘀咕着:“就以往的经验和客户的口风,一个员工有多个所属科室是非常可能而且合理的,与其将来重构,不如现在就设计成多对多关系……”


      一段时间之后,果然出现了这样的需求:一个医生本来是属于某个住院科室的(例如一病区、二病区……),但是他也要隔三差五地出门诊,他在出门诊时,是属于某个门诊科室的(例如普通门诊、小儿门诊……)。难道我们的前瞻性设计成功了?!再仔细考察一下,就会发现2个问题:1)虽说一个医生可以有多个部门和角色,但是他同一时间不能既是住院医生又是门诊医生;2)当他在住院部工作时,不但所属科室是某个住院科室,而且所需的功能模块也和出门诊时不一样。也就是说,医生有“住院医生”和“门诊医生”两个身份,分别对应不同的科室和角色,他在工作时,必须选择一个身份作为他的当前身份。

      在实际实现的时候,考虑到“大多数员工都只有一个身份”以及“员工最多有3个身份”这两个实际情况,可以使用更为简单的结构:

    如果某个员工没有第二部门和第二角色,就空着。如果某个员工有第二部门和第二角色,在登录系统时,需要由用户选择一个部门&角色作为他的当前部门&当前角色。
    小贴士 在分析业务的时候要注意区分“有限多个”和“不确定数量的多个”,它们往往需要不同的结构。
      讨论到这里不难得出结论,把简单模型重构成复杂模型不是件容易的事,但是如果一开始就使用复杂的模型,往往就会需要由一个复杂模型向另一个复杂模型的重构,那可就有点让人望而生畏了

    概念

      由于模型的重构成本比较大,所以终归还是希望不要动不动就大改。但是新需求是无法预料的,同时由于前面讨论的原因又不想做太多的前瞻性设计,如何增加模型的弹性呢?为什么那些设计得好的模型总能从容应对需求的变化呢?如果硬要说有什么诀窍的话,那就是——

    建模心法5 从一开始就关注实物背后的概念

      我不想故弄玄虚,玩概念。这里的概念指的是对实物进行一点儿抽象,考虑它的本质抽象的意思是指把不重要的属性略去不考虑,重点考量它对客户、对系统的价值和存在的意义。本质指的是那些固有的、不容易发生变化的东西。譬如对于人来说性格不容易改变,所以把握住司马懿多疑的性格,就大概可以料到摆个空城计能令他不敢攻城。同样,如果你能把握住业务中每个对象对客户或系统的价值和存在的意义,能看透哪一部分是固有的、不易变化的,那么,在外人看来你大概也有了料敌机先的本事。
      说起来容易,真要操作起来还有几个难题。1)到底应该从什么时候开始,又从何处入手呢?2)哪些是重要的、什么是本质的,可谓仁者见仁,很难找到评判的依据和标准;3)对一个东西的抽象,可以有无数个方向、无数个层次。就像故事里说的明代那个叫王守仁的大牛,年轻的时候立志要成为圣贤,所以决定实践一下朱大圣人的“格物致知”,每天在自家后院“格”竹子,无论风吹雨淋,一直盯着竹子“格”,后来竹子没格成功,自己先得了感冒。
      后面两个问题无法可想,它们大概属于“艺术”的范畴。对于第一个问题倒是有个不错的建议——当遇到矛盾的时候,就是一个很好的契机。
      看一个具体的例子。如果你去医院看过病,一定对交了费之后拿到的那一大堆收据不陌生。当然,我们一般也不会仔细看它们,都是到了医生那里就把一堆收据全给人家,等人家捡走几张之后再把剩下的揣到自己兜里。所以现在让领域专家给我们讲讲吧。
      “这种收据,一般都是‘3联’,也就是3张大小、格式全都一样的纸叠在一起,纸张之间有复写功能,由针式打印机打印之后3张纸就有了一模一样的内容。这3张纸,第一联叫存根联,由收款员留着;第二联叫通知联,由执行科室(也就是负责执行医嘱的部门,像放射线室、化验室、门诊药局等等)留着,所以这一联也叫执行联;第三联叫报销凭证,由患者留着。
      “每张收据有一个收据号,收据是一张接着一张连续打印的。对于非药医嘱,每个医嘱一张收据;对于药品医嘱,每个处方(一个处方可能包含1~5种药品)一张收据。收据上打印的主要内容是医嘱名称、数量、金额和整张收据的总金额。
      “需要注意的是,上面说的是针对自费患者的规则。如果是医保患者,则变成所有医嘱的总费用打印在第一张收据上,并注明此收据为‘医保总联收据’,专门用于报销;然后再接着打印执行联,其规则是每个非药医嘱一张执行联,每个处方一个执行联。因为执行联也是打印在收据纸上的,所以还要注明‘这是执行联,不可用于报销’的字样……”领域专家说完之后有点小得意地瞟了程序员一眼。
      “我艹,这都神马乱七八糟的……”程序员听到这儿都快崩溃了,“不但非药医嘱和药品医嘱的处理方式不一样,自费患者和医保患者的处理方式相差的更多,这要怎么搞?”
      说实在的,模型变得臃肿和难以理解很大程度上是拜各种“其它情况”所赐。但是,这些都是每天正在发生着的实际业务。如果说“存在就有它的理由”的话,要是我们能把这些理由搞明白,这反而可以成为加深理解的好机会。
      要从哪里开始呢?就从最明显的不一致的地方开始:我们可以发现对于自费患者,收据和执行联是一模一样的(因为是一次打印3联,无论票据号还是内容都完全相同);对于医保患者,收据和执行联是分开的,且票据号和内容都不一样。这暗示我们收据和执行联可能是2个不同的概念。
      从价值和存在的意义考虑,收据的作用是1)作为患者已经交了费用的证明;2)报销的依据。执行联的作用是 1)表明患者已经交了费可以执行医嘱;2)指示医院的执行科室应该执行哪些医嘱。
      再抽象一点从拓扑的角度考虑,可以认为收据和执行联都是对医嘱(所对应的收费项目)的分组,只是分组的方法不一定相同。一个重要的问题是这两种分组方法是否有必然的联系?
      再回过头来仔细考虑那些规则,看看有多少非本质的因素。当然就像前面所讨论的,是不是本质的很大程度上是主观的、相对的。可以认为,“X光检查和验血不应该打印到同一张执行联上”是本质的,因为这两项医嘱需要在不同的执行科室执行,如果打在一张执行联上,难不成要把执行联撕成两片吗?但是“每个非药医嘱一张执行联”分明是因为程序员想偷懒——判断哪些医嘱属于同一个执行科室有点麻烦,还要考虑医嘱太多的话一张小小的票据可能打不下,另外这样做会使退费更容易处理(退费是另一个有点复杂的主题,本文限于篇幅不再讨论)。“对于医保患者,所有医嘱的总费用打印在第一张收据上”可能是因为医保中心要求这么做,也可能仅仅因为分几组进行医保结算操作技术上很麻烦。
      经过一些分析之后,不难得出结论。需要把医嘱(所对应的费用明细)分组打印到票据(收据和执行联)上是本质的(当然将来随着医院和全社会无纸化水平越来越高,这些票据也会逐步消失)。生成这两种票据的分组规则可能完全相同,也可能有很大的不同,这取决于技术上的限制或实现上的方便,它们之间没有必然的联系。

      在创建票据的时候,我们给出两种分组算法:GroupMethod1——对于非药医嘱,每个医嘱一组;对于药品医嘱,每个处方一组;GroupMethod2——所有医嘱一组。对于自费患者,使用 GroupMethod1 创建收据和执行联;对于医保患者,使用 GroupMethod2 创建收据,使用 GroupMethod1 创建执行联。打印票据的时候,自费患者只打印收据;医保患者先打印收据,再接着打印执行联。
      因为收据和执行联的属性几乎一样,所以实际实现的时候也可以把收据和执行联用一个叫“票据”的实体来表示。另外,由于普通患者的收据和执行联的所有属性值都相同,持久化两条几乎一模一样的数据好像也没什么意思,可以暂且先不创建自费患者的执行联。至于要不要使用子类、弄个 factory 什么的,可以根据实际情况再做决定,本文限于篇幅不再讨论,但是至少应该把那两个分组算法和创建票据的代码封装到函数之中。

    功夫在模型外

      再说一点题外话。当客户要求我们实现很复杂的功能时,一定要小心——那可能只是客户脑袋发热,没有想到可以有更简单明了的解决问题的方法。这时候,即使可以假设开发团队的水平相当高,可以又快又好的把程序搞出来,仍然还要面对两个问题:1)程序太复杂了,想要向客户证明程序是光荣伟大而正确的很困难,客户需要经过很长时间才能信任程序,这预示着更大的培训和维护成本;2)客户可能没有程序员那么聪明,特别是需要多个部门的基础、利益各不相同的众多用户协作的时候——他们用不明白那么复杂、微妙的程序,最后只能使用最简单的那一部分——程序员应该对程序复杂性的边界心中有数,可以感觉到“这个要越线了”。这时候,如果程序员能给出更简单的方法,客户反而会感谢你,取得双赢的结果。这也可以说是“功夫在模型外”。相信将来企业管理软件的开发会与管理咨询一同进行,由目前的业务驱动开发逐渐转变为信息化建设促进管理改进。

    建模心法6  帮助客户找到既简单又有效的解决方案。

      这一条要求程序员在更高的层面上思考业务的本质。直觉上可能会觉得这已经和程序无关了,或者至少程序员不是最适合干这个的人选,但是我不这么认为。有句话说得好“想知道自己是不是真正理解了就用程序去实现它”,如果程序员已经成功地创造了一个信息系统来仿真真实业务,他对业务的理解一定比普通的业务人员更深刻、更全面,再加上他又是那么的聪明伶俐,如果他愿意更进一步的话,谁能拦得住?

    o_logo2_170_r.png

    展开全文
  • 针对Bradley方程刚性纳米接触模型在处理微机械纳米接触问题中的不足,基于Lennard-Jones势能定律将组成两接触球体的原子之间的粘着力等效为两球体表面所受的分布作用力,并根据经典弹性理论建立了一种新型的两球体...
  • 应用弹性理论库仑摩擦定律对刚性球与弹性半空间发生带有摩擦的斜碰撞的模型建立运动学方程,推导出碰撞接触点处的位移的微分方程,并通过数值方法求解这种二阶非常规的微分方程,对于各相关物理量同时进行了数值...
  • 先回顾一下CSS1 CSS2中都已经定义了哪些布局方面的属性,这样也会增加我们理解弹性布局。 其实我们现在有很多一部分人,你们刚刚接触CSS层叠样式表,或者接触有一段时间了,但是却没有很好的去消化与理解。...
    先回顾一下CSS1 和 CSS2中都已经定义了哪些布局方面的属性,这样也会增加我们理解弹性布局。
     
    其实我们现在有很多一部分人,你们刚刚接触CSS层叠样式表,或者接触有一段时间了,但是却没有很好的去消化与理解。可能平时你们还一直在使用table,然后通过不断了合并单元格来实现网页布局。希望我今天的这篇文章能彻底改变大家的观念。
     
    A:大家可以想一想,在现实生活中,如果我们拿一个盒子来装东西,那么盒子里面的东西是不是跟这个盒子之间会有空隙呢?站在里面物品的角度,则它们之间的间隙距离是不是就可以构成 物品到盒子的外边距。如果站在盒子的角度,则从盒子到物品的距离,是不是可以看出盒子的内边距呢。 当然,盒子还是会有宽和高的。外边距的英文就是margin,内边距的英文是padding,宽是width,高是height。下面是盒子模型的2D图:
     
    clipboard
    CSS 1中定义了盒子模型的基本元素,详细属性请看下表:
    margin-top 元素顶部外边距
    margin-right 元素右侧外边距
    margin-bottom 元素底部外边距
    margin-left 元素左侧外边距
    margin 这是一个复合属性,定义 元素 各个边的外边距, 属性值的顺序是: 上,右,下,左
    border-top 元素上边框样式
    border-right 元素右边框样式
    border-bottom 元素下边框样式
    border-left 元素左边框样式
    border-width 元素边框宽度
    border-top-width 元素上边框宽度
    border-right-width 元素右边框宽度
    border-bottom-width 元素下边框宽度
    border-left-width 元素左边框宽度
    border 复合属性,可以同时设置各个边框样式
    padding-top 元素上侧内边距
    padding-right 元素右侧内边距
    padding-bottom 元素下侧内边距
    padding-left 元素左侧内边距
    padding 复合属性,同时设置各个边框内边距
    width 设置元素的宽度
    height 设置元素的高度
    float 设置元素浮动显示
    clear 清除元素的浮动效果
    border-color 设置边框颜色
    border-style 设置边框样式

    CSS 2在以上基础上,又做了一些细化:

    border-top-color 元素上边框颜色
    border-right-color 元素右边框颜色
    border-bottom-color 元素下边框颜色
    border-left-color 元素左边框颜色
    border-top-style 元素上边框样式
    border-right-style 元素右边框样式
    border-bottom-style 元素下边框样式
    border-left-style 元素左边框样式
     
    在CSS2的基础上,CSS3增加了弹性盒模型布局属性,这为我们开发适合现代移动浏览器提供了便利:
    box-align 子元素在盒子内垂直方向上的空间分配
    box-pack 子元素在盒子内水平方向的空间分配方式
    box-direction 盒子的显示顺序
    box-flex 元素在盒子内的自适应尺寸
    box-flex-group 自适应子元素群组
    box-lines 子元素分列显示
    box-ordinal-group 子元素在盒子内的显示位置
    box-orient 盒子分布的坐标轴
     
    下面我将对CSS3中新增的弹性盒模型属性做详细介绍,并通过实际coding来带领大家深刻认识弹性布局的威力。
     
    首先我们先创建一个html页面,代码如下所示:
    接着我们给页面添加上基本的样式,如下所示:
    *{ /*清除所有元素的默认外边距和内边距*/
    margin:0;
    padding:0;
    }
     
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
    }
     
    .sidebar{/*给侧边栏添加样式*/
     
    }
     
    .middle{/*给中间区域添加样式*/
     
    }
     
    .article{/*给主体内容添加样式*/
     
    }
     
    运行页面,查看一下目前样式的应用效果:
    clipboard02
     
     
    首先声明:要想运用CSS3的弹性布局,需要将父容器设置为display:box 或 display:inline-box,下面不在赘述。
     

     
    box-orient 作用: box-orient属性规定了子元素应该是水平方向还是垂直方向显示。
    box-orient 语法: box-orient: horizontal | vertical | inline-axis | block-axis | inherit;
     
    语法解释: horizontal 和 inline-axis 规定了子元素以水平方向显示,两者的显示效果差不多,具体差异不清。vertical 和 block-axis 规定了子元素以垂直方向显示, 两者的显示效果差不多,具体差异不清 。
     
    注意:由于此属性还处于测试当中,所以为了兼容webkit核心的浏览器,需要加上-webkit-前缀,Mozilla核心的浏览器,需要加上前缀-moz-
     
    示例:
     
        修改样式表文件,添加如下样式代码:
     
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
     
    display:-webkit-box;/*兼容webkit或mozilla核心浏览器,启用弹性盒子模型*/
    display:-moz-box;
    display:box;
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
    }
     
    运行demo页面,效果如下:
    clipboard03
     
    通过以上效果图,大家可以发现div已经变成了水平布局,且宽度是正好包裹内容, css2.1如果需要实现此效果,就得通过float:left;来实现了。
     
    我们再次修改代码,实现垂直方向上布局:
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
     
    display:-webkit-box;/*兼容webkit或mozilla核心浏览器,启用弹性盒子模型*/
    display:-moz-box;
    display:box;
     
    -webkit-box-orient:vertical;/*垂直方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:vertical;
    box-orient:vertical;
    }
    运行页面,效果如下图所示:
    clipboard04
     
    inline-axis 和 block-axis 运行效果分别与horizontal和vertical一样,这里大家可以自行去测试。
    inherit属性值是布局方式继承自父元素,如果父元素是水平的,则它也使用水平布局,这个大家可以自行去测试。

     

    box-align 作用:box-align规定了如何在垂直方向上对齐框内的子元素。
    box-align 语法:box-align: start | end | center | baseline | stretch;
     
    start
    对于正常方向的框,每个子元素的上边缘沿着框的顶部放置。
    对于反方向的框,每个子元素的下边缘沿着框的底部放置。
    end
    对于正常方向的框,每个子元素的下边缘沿着框的底部放置。
    对于反方向的框,每个子元素的上边缘沿着矿的顶部放置。
    center 均等地分割多余的空间,一半位于子元素之上,一半位于子元素之下。
    baseline 如果box-orient是inline-axis或horizontal,所有子元素均与其基线对齐。
    stretch 拉伸子元素以填充包含块
     
    注意:由于此属性还处于测试当中,所以为了兼容webkit核心的浏览器,需要加上-webkit-前缀,Mozilla核心的浏览器,需要加上前缀-moz-
     
    示例:
     
        添加start样式,代码如下:
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
     
    display:-webkit-box;/*兼容webkit或mozilla核心浏览器,启用弹性盒子模型*/
    display:-moz-box;
    display:box;
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
     
    -webkit-box-align:start;/*正常布局下,吸附在顶端显示,相反布局下,吸附在底部显示*/
    -moz-box-align:start;
    box-align:start;
    }
    运行效果如下所示:
    clipboard05
     
    接着,我们让子元素吸附在底部显示,修改代码如下:
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
     
    display:-webkit-box;/*兼容webkit或mozilla核心浏览器,启用弹性盒子模型*/
    display:-moz-box;
    display:box;
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
     
    -webkit-box-align:end;/*正常布局下,吸附在底部显示,相反布局下,吸附在顶部显示*/
    -moz-box-align:end;
    box-align:end;
    }
    此时的运行效果如下所示:
    clipboard06
     
    center和baseline的功能,大家可以自行测试,这里着重强调一下,如果属性值设为stretch,则它会拉伸填充满父元素,其实也就是未设置box-align时候的样式,所以说如果你要设置stretch,那你直接就别设置box-align属性,因为没意义了。
     
    修改属性值为stretch,代码如下:
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
     
    display:-webkit-box;/*兼容webkit或mozilla核心浏览器,启用弹性盒子模型*/
    display:-moz-box;
    display:box;
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
     
    -webkit-box-align:stretch;/*其实此效果就是不设置box-align时候的样式*/
    -moz-box-align:stretch;
    box-align:stretch;
    }
    效果如下:
    clipboard07
     
    box-pack 作用:用来规定子元素在盒子内的水平空间分配方式
    box-pack 语法:box-pack: start | end | center | justify;
     
    start
    对于正常方向的框,首个子元素的左边缘吸附在盒子的左边框显示
    对于相反方向的框,最后子元素的右边缘吸附在盒子的右边框显示
    end
    对于正常方向的框,最后子元素的右边缘吸附在盒子的右边框显示
    对于相反方向的框,首个子元素的左边缘吸附在盒子的左边框显示
    center 均等分割剩余空间,一半在首个子元素之前,一半在最后子元素之后
    justify 首尾子元素分别吸附在左右边框上,中间的子元素分割多余空间
     
    注意:由于此属性还处于测试当中,所以为了兼容webkit核心的浏览器,需要加上-webkit-前缀,Mozilla核心的浏览器,需要加上前缀-moz-
     
    示例:
     
        box-pack:start;
     
        运行效果如下:
    clipboard08
     
    当然,如果盒子的顺序是从右到做,则上图就会吸附在右侧边框显示。
     
        box-pack:end;
    运行效果如下:
    clipboard09
     
    注:如果盒子内的显示顺序是相反方向,则它会吸附在左侧边框显示。
     
    box-pack:center
    .row{/*设置外围容器样式*/
    margin:auto;
    border:1px solid black;
    width:600px;
    height:400px;
    margin-top:50px;
     
    display:-webkit-box;/*兼容webkit或mozilla核心浏览器,启用弹性盒子模型*/
    display:-moz-box;
    display:box;
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
     
    -webkit-box-align:center; /*在垂直方向上,居中显示*/
    -moz-box-align:center;
    box-align:center;
     
    -webkit-box-pack: center;
    -moz-box-pack: center;
    box-pack: center;
    }
        运行效果如下:
    clipboard10
     
    box-pack:justify
    运行效果如下:
     
    clipboard11
     
     

    box-direction 作用:box-direction规定了盒子内子元素以什么方向来排列。
    box-direction 语法:box-direction: normal | reverse | inherit;
     
    normal 以默认方式显示子元素
    reverse 以相反方向显示子元素
    inherit 从父容器继承box-direction
     
    注意:由于此属性还处于测试当中,所以为了兼容webkit核心的浏览器,需要加上-webkit-前缀,Mozilla核心的浏览器,需要加上前缀-moz-
     
    示例:
     
        现在我就基于上面的例子,在样式表文件的 .row 里加上box-direction属性,大家一起观察分别观察它们的区别
     
     
     以水平方向显示子元素 box-orient:horizontal;
    normal
    .row{/*设置外围容器样式*/
    … /*此处代码省略*/
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
     
    -webkit-box-pack:justify; /*在水平方向上,正常情况下,从左侧显示。*/
    -moz-box-pack:justify;
    box-pack:justify;
     
    -webkit-box-direction:normal; /*以正常方向显示*/
    -moz-box-direction:normal;
    box-direction:normal;
    }
    大家可以发现显示顺序还是以前默认的显示顺序,
    水平方向,就是从左到右
    reverse
    .row{/*设置外围容器样式*/
    … /*此处代码省略*/
     
    -webkit-box-orient:horizontal;/*水平方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:horizontal;
    box-orient:horizontal;
     
    -webkit-box-pack:justify; /*在水平方向上,正常情况下,从左侧显示。*/
    -moz-box-pack:justify;
    box-pack:justify;
     
    -webkit-box-direction:reverse; /*以相反方向显示*/
    -moz-box-direction: reverse;
    box-direction: reverse;
    }
    应用上box-direction:reverse之后,显示方向颠倒了,
    以前是从左到右,现在变成从右到左了。
     
    以垂直方向显示子元素 box-orient: vertical;
    normal
    .row{/*设置外围容器样式*/
    … /*此处代码省略*/
     
    -webkit-box-orient:vertical;/*垂直方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:vertical;
    box-orient:vertical;
     
    -webkit-box-direction: normal;
    -moz-box-direction: normal;
    box-direction: normal;
    }
    大家可以发现,当以垂直方向显示子元素时,
    normal属性采用默认的从上到下显示顺序。
    reverse
    .row{/*设置外围容器样式*/
    … /*此处代码省略*/
     
    -webkit-box-orient:vertical;/*垂直方向显示,兼容webkit和mozilla核心浏览器*/
    -moz-box-orient:vertical;
    box-orient:vertical;
     
    -webkit-box-direction:reverse;
    -moz-box-direction:reverse;
    box-direction:reverse;
    }
    应用上box-direction:reverse之后,显示方向颠倒了,
    以前是从上到下,现在变成从下到上了。
     
    从上面的比较,大家可以看出,box-direction是根据当前子元素的显示方向(水平或垂直)来起作用的
     
    box-direction:inherit 这个大家可以私下自行测试。
     

    box-flex 作用:box-flex属性规定了盒子内的子元素是否可以自动伸缩其尺寸,只要盒子内对应显示方向上有剩余空间,可伸缩元素就会扩展来填充这些空间。
    box-flex 语法:box-flex: value。
     
    value 元素的可伸缩值,柔性是相对,例如 box-flex:2.0 的子元素伸缩尺寸两倍于 box-flex:1.0的子元素
    注意:由于此属性还处于测试当中,所以为了兼容webkit核心的浏览器,需要加上-webkit-前缀,Mozilla核心的浏览器,需要加上前缀-moz-
     
    示例:
     
        现在我们就来对box-flex的作用通过示例来证明一下:
     
    对 sidebar 应用样式
    .sidebar{/*给侧边栏添加样式*/
     
     
    /*将应用了此样式的元素都设置为可伸缩元素*/
    -webkit-box-flex:1.0; 
    -moz-box-flex:1.0;
    box-flex:1.0;
    }
     
    .middle{/*给中间区域添加样式*/
     
    }
     
    .article{/*给主体内容添加样式*/
     
    }
    从显示效果来看, 这正好证明了, 设置了box-flex的元素是有弹性的,
    且只要盒子内对应显示方向上有剩余空间, 可伸缩元素就会扩展来填充这些空间。
    对sidebar和middle应用样式
    .sidebar{/*给侧边栏添加样式*/
     
     
     /*将应用了此样式的元素都设置为可伸缩元素*/
    -webkit-box-flex:1.0;
    -moz-box-flex:1.0;
    box-flex:1.0;
    }
     
    .middle{/*给中间区域添加样式*/
     
     
    /*将应用了此样式的元素都设置为可伸缩元素*/
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
    }
     
    .article{/*给主体内容添加样式*/
     
    }
    从显示效果可以看出,当 .middle 样式设置了box-flex:2.0时,
    应用了 .middle 样式的元素也变成了弹性元素,且伸缩尺寸是
    box-flex:1.0的两倍。
    对sidebar,middle和article应用样式
    .sidebar{/*给侧边栏添加样式*/
     
     
    -webkit-box-flex: 1.0
    -moz-box-flex:1.0;
    box-flex:1.0;
    }
     
    .middle{/*给中间区域添加样式*/
     
     
    -webkit-box-flex:2.0
    -moz-box-flex:2.0;
    box-flex:2.0;
    }
     
    .article{/*给主体内容添加样式*/
     
     
    -webkit-box-flex:3.0
    -moz-box-flex:3.0;
    box-flex:3.0;
    }
     这里大家得注意一下,大家可能会认为,.article应该占1/2的空间的,
    怎么看.sidebar和.middle加起来都比.article大的啊
     
    其实这里分配的原则是, 剩余空间按照对应比率来分配。
     
    对sidebar来说,伸缩的空间 = 总剩余空间 *(1.0/6.0);
    对middle来说,伸缩的空间 = 总剩余空间*(2.0/6.0) ;
    对article来说,伸缩的空间 = 总剩余空间 * (3.0/6.0);
     

    box-flex-group 作用: 一组设置了box-flex-group元素当中,值最小的,占用全部剩余空间;值最小且相等,则平均分配剩余空间。

     
    .sidebar{/*给侧边栏添加样式*/
     
     
    -webkit-box-flex:1.0
    -moz-box-flex:1.0;
    box-flex:1.0;
     
    -webkit-box-flex-group:1; 
    -moz-box-flex-group:1;
    box-flex-group:1;
    }
     
    .middle{/*给中间区域添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
     
    -webkit-box-flex-group:2; 
    -moz-box-flex-group:2;
    box-flex-group:2;
    }
     
    .article{/*给主体内容添加样式*/
     
     
    -webkit-box-flex:2.0
    -moz-box-flex:2.0;
    box-flex:2.0;
     
    -webkit-box-flex-group:1; 
    -moz-box-flex-group:1;
    box-flex-group:1;
    }
    大家从效果图应该可以看出, 如果box-flex-group的值较大,则它只分配实际空间,
    剩余空间分配给最小的一组 按比率分配。
     
    这句话到底啥意思呢?
    我们从代码中可以看到:sidebar的box-flex-group为1,article的box-flex-group也为1,
    所以 sidebar和article分配剩余的空间。 但是article的box-flex两倍于sidebar的box-flex,
    所以剩余空间,article伸缩的空间 应该是 sidebar伸缩空间的两倍。
     

    box-ordinal-group 作用:box-ordinal-group属性可以使我们定义子元素的显示顺序,值小的排在前,值大的排在后。
     
    注意:由于此属性还处于测试当中,所以为了兼容webkit核心的浏览器,需要加上-webkit-前缀,Mozilla核心的浏览器,需要加上前缀-moz-
     
    示例:
     
    我们先看一下,没有运用box-ordinal-group属性时的运行效果,样式代码如下:
    .sidebar{/*给侧边栏添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
    }
     
    .middle{/*给中间区域添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
    }
     
    .article{/*给主体内容添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
    }
    此时运行页面,效果如下:
    clipboard13
     
     
    根据上面页面,当前的显示顺序是 sidebar -> middle -> article
     
    现在我们给这些子元素应用box-ordinal-group,且相应值 middle < article < sidebar,则我们期待的显示顺序应该是, middle -> article -> sidebar
     
    样式代码如下:
    .sidebar{/*给侧边栏添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
     
    -webkit-box-ordinal-group:4;
    -moz-box-ordinal-group:4;
    box-ordinal-group:4;
    }
     
    .middle{/*给中间区域添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
     
    -webkit-box-ordinal-group:2;
    -moz-box-ordinal-group:2;
    box-ordinal-group:2;
    }
     
    .article{/*给主体内容添加样式*/
     
     
    -webkit-box-flex:2.0; 
    -moz-box-flex:2.0;
    box-flex:2.0;
     
    -webkit-box-ordinal-group:3;
    -moz-box-ordinal-group:3;
    box-ordinal-group:3;
    }
    运行页面,效果如下:
    clipboard12
     
     
    从效果图来看,的确是按照我们所期待的顺序显示的( middle -> article -> sidebar)。
     
    至此,CSS3新增弹性盒模型属性就讲完了,本节内容还是比较多的,但是它给了我们很多惊喜,让我们在页面布局方面更加收放自如。

    转载于:https://www.cnblogs.com/axl234/p/3895082.html

    展开全文
  • 为了准确地预测评价非公路车辆的行驶平顺性,通过分析轮胎与地面的相互作用,建立了弹性轮胎软地面接触模型及其与车辆的集成模型,采用Matlab语言编制出仿真分析软件,得到了变形地面作用于车辆的有效路谱及车身垂...
  • 应用作者们所提出的非连续变形计算力学模型弹性分析方法对具体的多体系统在动力外荷载作用下的响应进行了数值模拟 ,探讨了系统中物体的粘性阻尼对整个系统的变形、应力和接触应力等的影响。与通用软件 ABAQUS的...
  • 基于粘弹性广义有限单元和接触力元 ,发展了适用于多体相互作用系统非连续变形分析的粘弹性数值分析方法 ,通过虚功原理 ,给出了其分区参变量最小势能原理 ,从而阐明了其理论基础。粘弹性广义有限单元的本构关系可由粘...
  • 我们讨论了DAMA / LIBRA–phase1DAMA / LIBRA–phase2组合测得的年度调制效应的兼容性,并解释了由弱相互作用的大颗粒最一般的伽利略不变有效接触相互作用引起的非弹性散射事件( WIMP)自旋为0、1 / 2或1的暗物质...
  • 在 本文中,晶片形貌对接触压力分布的影响 基于3D固体-固体来研究计算CMP过程中 联系人模型。 在模型中,晶圆被视为 刚性冲头垫片作为半弹性空间。 高度 晶片表面的变化被认为是一个函数 由 基于 在线性弹性理论...
  • 基于弹性接触理论,对连杆进行了接触问题的有限元分析,并对连杆受压的传统处理方法和接触分析方法进行了对比研究。以LJ377MV汽油机连杆为例,通过所建模型、应用有限元分析方法进行了计算和对比分析。结果表明,用...
  • 弹性接触件双曲线插孔为研究对象,运用弹性力学知识有限元方法对其进行了力学分析;推导得到了双曲线插孔插拔力与结构参数之间的关系式.建立了双曲线插孔接触有限元模型;并利用ANSYS软件对其插拔过程进行了仿真,...
  • 基于弹性力学中铅直位移计算公式赫兹弹性接触理论建立了裂缝宽度计算模型,并结合Carman-Kozeny公式建立了考虑地层支撑剂参数条件下的裂缝导流能力计算模型。通过实例计算对裂缝导流能力的影响因素支撑剂的筛选...
  • 基于工程需要,将三维边界元凝缩解法用于求解多物体摩擦型弹性接触问题。...以三物体接触模型为例,阐述了多物体接触的边界积分方程的建立边界矩阵方程的求解过程,以一计算实例说明本方法的正确性。
  • 建立了接触网和受电弓子系统的有限元模型和空气动力学模型,采用MSC-Marc及sTAR-cD软件,研究受电弓动态受流性能和空气动力学性能。通过接触实现2个子系统耦合,对弓网进行动态仿真;通过高速受电弓三维模型,对受电...
  • 建立了描述变形体基础间接触问题的数学模型接触是双面的,并采用非局部摩擦定理建模,支承列入计算。粘结场(bondingfield)的变化用一个一阶的常微分方程来表示,材料特性用一个非线性粘弹性本构关系建模。导出了该...
  • 通过有限元分析软件、采用8节点6面体单元计算模型对机构进行数字仿真分析。触针允许最大测量力为8.267N,测量力变化率为33.8N/m,片簧回转中心偏移量约为1月m,可满足高精度接触式台阶测量仪的设计要求。
  • 采用了迟滞接触力模型分析轮齿间的啮合,为了验证该模型,分别以该模型、有限元模型和其他文献的模型研究单对渐开线直齿圆柱齿轮的啮合过程,对比分析表明:该模型的计算结果更接近于有限元方法,非常适用于齿轮系统...
  • 考虑了几种常规CI模型和重杂种夸克的场景。 对于一些模型,包含在内的HERA数据的描述得到了改进。 由于无法确定与标准模型之间的统计上的显着偏差,因此在所有考虑的模型上都设置了TeV范围内的限值。
  • 其次,对电动机定、转子接触面的滑动状况进行分析,利用弹性接触理论确定了定、转子接触面的力传递模型和效率表达式,通过把定、转子接触面的摩擦损耗和转子的输出功率视为定子强迫振动的等效阻尼损失,由此建立电动...
  • 通过有限元数值模拟的方法,应用非连续的接触模型研究断层对地壳应力的影响。研究结果表明:非连续模型比连续模型能够更好地模拟断层,突出了断层对地壳应力的影响作用,避免了单纯使用软弱带模拟断层所导致的应力削弱...
  • JuliaFEM.jl-适用于工业学术界的开源解决方案 ... JuliaFEM项目开发了用于可靠,可扩展的... 目前,用户可以使用JuliaFEM执行以下分析:弹性,热,特征值,接触力学准静态解决方案。 工业应用中的典型示例包括非线性固

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 191
精华内容 76
关键字:

弹性模型和接触模型