自适应 订阅
自适应就是在处理和分析过程中,根据处理数据的数据特征自动调整处理方法、处理顺序、处理参数、边界条件或约束条件,使其与所处理数据的统计分布特征、结构特征相适应,以取得最佳的处理效果的过程。自适应过程是一个不断逼近目标的过程,它所遵循的途径以数学模型表示,称为自适应算法。通常采用基于梯度的算法,其中最小均方误差算法(即LMS算法)尤为常用。 展开全文
自适应就是在处理和分析过程中,根据处理数据的数据特征自动调整处理方法、处理顺序、处理参数、边界条件或约束条件,使其与所处理数据的统计分布特征、结构特征相适应,以取得最佳的处理效果的过程。自适应过程是一个不断逼近目标的过程,它所遵循的途径以数学模型表示,称为自适应算法。通常采用基于梯度的算法,其中最小均方误差算法(即LMS算法)尤为常用。
信息
 应用
自动化领域
 释义
自动调整处理方法
相关概念
自适应控制、自适应滤波
中文名
自适应
 遵循的途径
自适应算法
外文名
self-adaptive
自适应自适应算法
自适应算法可以用硬件(处理电路)或软件(程序控制)两种办法实现。前者依据算法的数学模型设计电路,后者则将算法的数学模型编制成程序并用计算机实现。算法有很多种,它的选择很重要,它决定处理系统的性能质量和可行性。常用的自适应算法有迫零算法,最陡下降算法,LMS算法,RLS算法以及各种盲均衡算法等。例如,自适应均衡器就是按照某种准则和算法对其系数进行调整最终使自适应均衡器的代价(目标)函数最小化,达到最佳均衡的目的,而各种调整系数的算法就称为自适应算法。自适应算法是根据某个最优准则来设计的。自适应算法所采用的最优准则有最小均方误差(LMS)准则,最小二乘(LS)准则、最大信噪比准则和统计检测准则等。LMS算法和RLS算法由于采用的最优准则不同,因此这两种算法在性能,复杂度等方面均有许多差别。
收起全文
精华内容
参与话题
问答
  • 自适应算法

    万次阅读 2018-08-15 10:26:11
    自适应过程是一个不断逼近目标的过程。它所遵循的途径以数学模型表示,称为自适应算法。通常采用基于梯度的算法,其中最小均方误差算法(即LMS算法)尤为常用。自适应算法可以用硬件(处理电路)或软件(程序控制)两...

    自适应过程是一个不断逼近目标的过程。它所遵循的途径以数学模型表示,称为自适应算法。通常采用基于梯度的算法,其中最小均方误差算法(即LMS算法)尤为常用。自适应算法可以用硬件(处理电路)或软件(程序控制)两种办法实现。前者依据算法的数学模型设计电路,后者则将算法的数学模型编制成程序并用计算机实现。算法有很多种,它的选择很重要,它决定处理系统的性能质量和可行性。

    自适应均衡器的原理就是按照某种准则和算法对其系数进行调整最终使自适应均衡器的代价(目标)函数最小化,达到最佳均衡的目的。而各种调整系数的算法就称为自适应算法,自适应算法是根据某个最优准则来设计的。最常用的自适应算法有迫零算法,最陡下降算法,LMS算法,RLS算法以及各种盲均衡算法等。在理论上证明了对于任何统计特性的噪声干扰,VLMS算法优于LMS算法。 

    自适应算法所采用的最优准则有最小均方误差(LMS)准则,最小二乘(LS)准则、最大信噪比准则和统计检测准则等,其中最小均方误差(LMS)准则和最小二乘(LS)准则是目前最为流行的自适应算法准则。由此可见LMS算法和RLS算法由于采用的最优准则不同,因此这两种算法在性能,复杂度等方面均有许多差别。

    最小均方算法(Least Mean Square, LMS)是一种简单、应用为广泛的自适应滤波算法, 是在维纳滤波理论上运用速下降法后的优化延伸,早是由 Widrow 和 Hoff 提出来的。 该算法不需要已知输入信号和期望信号的统计特征,“当前时刻”的权系数是通过“上一 时刻”权系数再加上一个负均方误差梯度的比例项求得。这种算法也被称为 Widrow-Hoff LMS 算法,在自适应滤波器中得到广泛应用, 其具有原理简单、参数少、收敛速度较快而且易于实现等优点。

    随着机器学习的发展,人工智能(AI)将会越发智能化,这将为人类学习带来不可想象的冲击或者颠覆。(机器学习(Machine Learning, ML)一 门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。)互联网学习参数的数据量是极其巨大的,而且随着时间的 积累数据还在激增的以后;机器学习有可能在解决大数据处理方面有极大帮助,可能会大大节省时间和人力成本。同时,机器学习通过用数据或以往的经验,以此优 化计算机程序的性能标准或者算法。这在人类学习中,或者说是人们网络学习中,系统平台基于机器学习技术,通过分析和记录学习者的数据,学习获得规律和算法,提供智能的个性化推荐和指导被会有极大优越性。比较机器学习而言,自适应学习仅仅是通过数据的处理、固定的算法,实现半智能的个性化学习指导。

     

    展开全文
  • 属性 描述 width=device-width width为设置layout viewport 的宽度,为一个正整数,”width-device”表示宽度是设备屏幕的宽度 initial-scale=1.0 initial-scale为设置页面的初始缩放值,可以是一个带小数的数字,...

    今天写app用到了页面自适应的内容,由于很久没有写过了,当时脑子也不好使了,就怎么也写不出来,最后才知道原因,页面自适应主要用于手机移动端app较多,所以,要熟练掌握!

    PS:附代码(见末尾)

    1、首先在网页代码的头部,加入一行viewport标签

    在网页的头部中增加以下这句话,可以让网页的宽度自动适应手机屏幕的宽度

    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
    

    width=device-width width为设置layout viewport 的宽度,为一个正整数,”width-device”表示宽度是设备屏幕的宽度
    initial-scale=1.0 initial-scale为设置页面的初始缩放值,可以是一个带小数的数字,1.0就是占网页的100%
    minimum-scale=1.0 表示最小的缩放比例
    maximum-scale=1.0 表示最大的缩放比例
    user-scalable=no 表示用户是否可以调整缩放比例,值为”no”或”yes”

    2、宽度不要用绝对的

    width:auto; / width:XX%;(父元素一定要有宽度)
    

    3、字体大小是页面默认大小的100%,即16像素,不要使用绝对大小"px",要使用相对大小“rem”

    html{font-size:62.5%;}
    body {font:normal 100% Arial,sans-serif;font-size:14px; font-size:1.4rem; } 
    

    html的字体大小设置为font-size:62.5%原因:浏览器默认字体大小是16px,rem与px关系为:1rem = 10px,10/16=0.625=62.5%,为了子元素相关尺寸计算方便,这样写最合适不过了。

    4、流动布局,"流动布局"的含义是,各个区块的位置都是浮动的,不是固定不变的

    .left{ width:30%; float:left} 
    .right{ width:70%; float:right;}
    

    像这样,用左浮动和右浮动,好处是,如果宽度太小,放不下两个元素,后面的元素会自动滚动到前面元素的下方,不会在水平方向overflow(溢出),避免了水平滚动条的出现

    5、选择加载CSS

    "自适应网页设计"的核心,就是CSS3引入的Media Query模块。自动探测屏幕宽度,然后加载相应的CSS文件

    <link rel="stylesheet" type="text/css" media="screen and (max-device-width: 600px)" href="style/css/css600.css" />
    

    这段代码的意思是:如果屏幕宽度小于600像素(max-device-width: 600px),就加载css600.css文件。
    如果屏幕宽度在600像素到980像素之间,则加载css600-980.css文件

    <link rel="stylesheet" type="text/css" media="screen and (min-width: 600px) and (max-device-width: 980px)" href="css600-980.css" /> 
    

    还有(不建议使用):除了用html标签加载CSS文件,还可以在现有CSS文件中加载

    @import url("css600.css") screen and (max-device-width: 600px); 
    

    6、CSS的@media与@media screen,媒体查询/匹配

    媒体查询也是css3的方法,我们要解决的问题是适应手机屏幕

    媒体查询的功能就是为不同的媒体设置不同的css样式,这里的“媒体”包括页面尺寸,设备屏幕尺寸等。

    首先先讲一下@media与@media screen区别

    @media与@media screen两者在手机设备上没有区别,但@media screen的css在打印设备里是无效的,而@media在打印设备里是有效的,如果css需要用在打印设备里,那么就用@media 。

    语法

    以@media或@media screen and开头来表示这是一条媒体查询语句。@media后面的是一个或者多个表达式,如果表达式为真,则应用样式。

    @media

    @media (max-width: 600px) {
      .mainner {
        display: none;
      }
    }
    

    上面的代码在屏幕宽度小于 600px 的时候,会作用大括号里的内容。

    注:max-width是目标显示区域的宽度,例如,浏览器宽度。

    媒体查询可以在 link标签上加media属性或css文件中使用。具体例子就不举了。

    @media screen

    以下例子为当屏幕宽度小于400px的时候,就取消浮动

    @media screen and (max-device-width: 400px) 
    {  .left {
    	 float:none;
       } 
     }
    

    注:max-device-width是设备整个显示区域的宽度,例如,真实的设备屏幕宽度。

    知识扩展
    @media only screen and
    only(限定某种设备)
    screen 是媒体类型里的一种
    and 被称为关键字,其他关键字还包括 not
    not 指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器:

    例如:如果浏览器窗口小于 500px, 背景将变为浅蓝色:

    @media only screen and (max-width: 500px) {
        body {
            background-color: lightblue;
        }
    }
    

    7、图片自适应,"自适应网页设计"还必须实现图片的自动缩放。

    img {width: 100%;} 
    

    windows平台缩放图片时,可能出现图像失真现象。这时,可以尝试使用IE的专有命令

    img { width:100%; -ms-interpolation-mode: bicubic;} 
    

    或使用js–imgSizer.js

    addLoadEvent(function() { 
      var imgs = document.getElementById("content").getElementsByTagName("img"); 
      imgSizer.collate(imgs); 
    });
    

    附代码

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<meta name="viewport" content="width=device-width, initial-scale=1.0">
    		<meta http-equiv="X-UA-Compatible" content="ie=edge">
    		<title></title>
    		<style type="text/css">
    			body{
    				background: url(images/bg.png) no-repeat;
    				background-size:100% 100%;
    				background-attachment: fixed;
    			}
    			.container{
    				width: 100%;
    				text-align: center;
    				position: absolute;
    				top: 96px;
    			}
    			 .container img{
    				transform: scale(0.8);
    				height: auto;
    				width: auto\9;
    
    			}
    			#img1{
    				width: 100%;
    				position: absolute;
    				bottom: 10px;
    				margin-bottom: 40%;
    				transform: scale(0.9);
    				/*background: yellowgreen;*/
    			}
    			#img2{
    				width: 100%;
    				position: absolute;
    				bottom: 20px;
                    margin-bottom: 12%;
    				transform: scale(0.9);
    			}
    		</style>
    	</head>
    	<body>
    		<div class="container">
    			<img src="images/logo@2x.png" alt="" />
    		</div>
    		<input type="image" src="images/iOS@2x.png" id="img2"/>
    		<input type="image" src="images/Android@2x.png" id="img1"/>
    		
    	</body>
    </html>
    

    ps:最重要的就是css样式,注意细节,要不断尝试

    展开全文
  • 自适应控制基本思想

    万次阅读 多人点赞 2017-09-22 10:18:20
    自适应控制 自适应控制所讨论的对象,一般是指对象的结构已知,仅仅是参数未知,而且采用的控制方法仍是基于数学模型的方法 但实践中我们还会遇到结构和参数都未知的对象,比如一些运行机理特别复杂,目前尚未被人们...

    自适应控制

    1. 自适应控制所讨论的对象,一般是指对象的结构已知,仅仅是参数未知,而且采用的控制方法仍是基于数学模型的方法
    2. 但实践中我们还会遇到结构和参数都未知的对象,比如一些运行机理特别复杂,目前尚未被人们充分理解的对象,不可能建立有效的数学模型,因而无法沿用基于数学模型的方法解决其控制问题,这时需要借助人工智能学科,也就是智能控制
    3. 自适应控制与常规的控制与最优控制一样,是一种基于数学模型的控制方法
    4. 自适应控制所依据的关于模型的和扰动的先验知识比较少,需要在系统的运行过程中不断提取有关模型的信息,使模型愈来愈准确
    5. 常规的反馈控制具有一定的鲁棒性,但是由于控制器参数是固定的,当不确定性很大时,系统的性能会大幅下降,甚至失稳

    设计思路

    问题的提出

    对于一个非线性系统

    x˙=−ax2+u\dot{x} =-ax^{2}+ux˙=ax2+u
    aaa是未知参数,uuu是控制输入

    要求设计一个合理的控制信号uuu,使得系统状态x(t)x( t)x(t)跟踪上期望信号xd(t)x_{d}( t)xd(t),假设xd(t)x_{d}( t)xd(t)是解析并有界的,且其微分x˙d(t)\dot{x}_{d}( t)x˙d(t)也是连续且有界的,这个假设在实际中可以满足,因为跟踪信号往往是认为设计的


    解决思路

    对于现代控制理论,正如前面所述,设计控制信号实际上是设计误差动力学系统,因此,设误差信号e(t)=x(t)−xd(t)e( t) =x( t) -x_{d}( t)e(t)=x(t)xd(t),则误差的动力学系统方程为

    e˙(t)=−ax2(t)+u−x˙d(t)\dot{e}( t) =-ax^{2}( t) +u-\dot{x}_{d}( t)e˙(t)=ax2(t)+ux˙d(t) ----------- (1)

    由于原系统是满足matching条件的,即控制信号和未知参数处于一个方程中,那么根据等价确定性原则(certainty equivalence, CE)设计控制器

    u=a^x2+x˙d−Keu=\hat{a} x^{2} +\dot{x}_{d} -Keu=a^x2+x˙dKe ----------- (2)
    a^\hat{a}a^是参数aaa的估计值
    K>0K>0K>0是控制器参数

    接下来需要设计估计参数a^\hat{a}a^的更新律,这里采用结合Lyapunov稳定性进行设计
    假设a~=a^−a\tilde{a} =\hat{a} -aa~=a^a,将控制uuu代入(1),则(1)可以写成

    e˙(t)=a~x2(t)−Ke(t)\dot{e}( t) =\tilde{a} x^{2}( t) -Ke( t)e˙(t)=a~x2(t)Ke(t) ----------- (3)

    定义Lyapunov函数

    V(e,a~)=12e2+12ηa~2V\left( e,\tilde{a}\right) =\dfrac{1}{2} e^{2} +\dfrac{1}{2\eta }\tilde{a}^{2}V(e,a~)=21e2+2η1a~2 ----------- (4)

    求导,得

    V˙(e,a~)=ee˙+1ηa~⋅a~˙=ee˙+1ηa~⋅a^˙\dot{V}\left( e,\tilde{a}\right) =e\dot{e} +\dfrac{1}{\eta }\tilde{a} \cdot \dot{\tilde{a}} =e\dot{e} +\dfrac{1}{\eta }\tilde{a} \cdot \dot{\hat{a}}V˙(e,a~)=ee˙+η1a~a~˙=ee˙+η1a~a^˙
               =e(a~x2−Ke)+1ηa~⋅a^˙=−Ke2+a~(ex2+1ηa^˙)\ \ \ \ \ \ \ \ \ \ \ =e\left(\tilde{a} x^{2} -Ke\right) +\dfrac{1}{\eta }\tilde{a} \cdot \dot{\hat{a}} =-Ke^{2} +\tilde{a}\left( ex^{2} +\dfrac{1}{\eta }\dot{\hat{a}}\right)           =e(a~x2Ke)+η1a~a^˙=Ke2+a~(ex2+η1a^˙)

    为了达到系统的稳定,则要使得V˙≤0\dot{V}\leq 0V˙0,因此,设计a^\hat{a}a^的更新律为

    a^˙=−η⋅e⋅x2\dot{\hat{a}} =-\eta \cdot e\cdot x^{2}a^˙=ηex2 ----------- (5)

    代入,得到

    V˙(e,a~)≤0\dot{V}\left( e,\tilde{a}\right) \leq 0V˙(e,a~)0 ----------- (6)

    由(4),(6)的positive definite特性可以确定(4)是一个合理的Lyapunov函数,由(6)可知(4)有界,即eeea~\tilde{a}a~也有界,且eee平方可积。根据期望信号xdx_{d}xd的假设,以及参数误差和跟踪误差的定义可知,xxxa^\hat{a}a^也是有界的,因此由(2)得到的控制uuu也是有界的,且由(1)得到e˙(t)\dot{e}( t)e˙(t)也有界。
    由Barbalat’s Lemma可得e˙(t)\dot{e}( t)e˙(t)uniformly continuous且

    lim⁡t→∞e(t)=0\lim _{t\rightarrow \infty } e( t) =0limte(t)=0

    由此可以得到系统渐进稳定,但是我们此时只是得到了系统的跟踪误差渐进收敛到0,但是参数的估计误差并没有收敛到0,因为我们设计参数的更新律时,是从系统的角度来设计的。

    综合,整体思路为,先求出对期望信号xd(t)x_{d}( t)xd(t)跟踪误差的误差动态方程;根据等价确定性原则(certainty equivalence, CE)设计控制器u(t)u(t)u(t),包含耦合抵消项和线性负反馈项两项组成,其中的未知参数用其参数估计值代替;然后设计Lyapunov函数,求导得出参数估计更新律;最后在保证Lyapunov函数导数非正的情况下,根据Barbalat引理得出跟踪误差渐近收敛得结论


    存在的问题

    参数估计的更新律中,并没有包含参数估计误差的负反馈,而是与跟踪误差直接耦合在一起a^˙=−η⋅e⋅x2\dot{\hat{a}} =-\eta \cdot e\cdot x^{2}a^˙=ηex2,结果导致跟踪误差影响参数估计的过程,而参数估计在控制器中直接影响跟踪误差,两者的直接耦合造成了系统闭环性能的下降


    改进

    解决办法就是浸入与不变(Immersion and Invariance, I&I)理论。通过引入关于状态的修正项,从而间接将未知参数引入到参数估计动态当中

    这里写图片描述

    我们需要人为设计估计误差的动态特性,此时uuu是已知量,对于这个问题不同于控制系统的设计在于,我们并不知道zzz的具体值,因为我们队最终参数θ\thetaθ是未知的,所以我们只能利用已经存在的动态结构,最大可能的构造利于证明收敛的自适应律,也就是θ^˙\dot{\hat{\theta }}θ^˙,相当于控制系统设计中的uuu
    对于,z˙=−∂β∂x⋅x2⋅z\dot{z} =-\dfrac{\partial \beta }{\partial x} \cdot x^{2} \cdot zz˙=xβx2z,我们需要构造Lyapunov函数,设计β(x)\beta ( x)β(x),从而证明了参数收敛的稳定性。


    总结

    两种设计方法只不过是将自适应律的设计问题的转化了而已,原先的自适应律的设计是直接根据整个系统的Lyapunov进行设计,改进的方法是建立参数的动态模型,并根据此系统的Lyapunov进行设计

    展开全文
  • 页面自适应方法

    千次阅读 2017-10-20 17:00:46
    标题严格遵守了新广告法,你再不爽,我也没犯法呀!屁话不多说,直入! 所谓布局,其实包含两个含义:尺寸与定位。也就是说,所有与尺寸和定位相关的属性,都可以用来布局。 ...大体上,布局中会用到的有:尺寸相关...

    标题严格遵守了新广告法,你再不爽,我也没犯法呀!屁话不多说,直入!

    所谓布局,其实包含两个含义:尺寸与定位。也就是说,所有与尺寸和定位相关的属性,都可以用来布局。

    大体上,布局中会用到的有:尺寸相关的盒子模型,普通流、浮动、绝对定位三种定位机制,CSS3中的transform、弹性盒子模块、试验中的grid模块。逛园子的时候经常可以看到浮动布局,inline-block布局,弹性盒布局这几个名词。现在对布局也算有一点了解,做个总结巩固一下。如果你也看了很多资料,但是实际动手时对布局还是无从下手的话,希望本文可以帮你理清思路。

    唠叨一句:看到一个效果图的时候,千万不要急着手贱去敲代码!先思考清楚页面的构造,理清各元素之间的关系,特别需要注意的是在不同的设备下需要有怎样的展现,当你思路清晰找到最好的布局方案时,coding其实真的不需要多少时间。

    尺寸相关


    为什么要先说尺寸呢?因为尺寸在布局中的作用非常核心,布局方式定位这些只是改变了元素之间的关系,没有尺寸就什么也不是。比如我们通常会用margin来控制跟其他元素的距离,这就是布局。

    很多人都会觉得,什么width、margin太简单了,早就掌握了。这种心态我一开始学习CSS的时候也有,觉得很好理解很简单,但是后面才发现自己原来很多东西都没真正掌握。看看张鑫旭大神给我们上的政治课:http://www.zhangxinxu.com/wordpress/2012/07/bottleneck-css-study/

    先说说百分比,百分比是相对父对象的,这里特性非常好用,很多时候会用在自适应布局上面。浏览器尺寸的改变,就是根节点html的长宽改变,我们可以用%来将浏览器尺寸和元素尺寸联系起来,做到自适应。

    另外一个比较有意思的是auto,auto是很多尺寸值的默认值,也就是由浏览器自动计算。首先是块级元素水平方向的auto,块级元素的margin、border、padding以及content宽度之和等于父元素width。使用auto属性在父元素宽度变化的时候,该元素的宽度也会随之变化。

    auto

    但是当该元素被设为浮动时,该元素的width就变成了内容的宽度了,由内容撑开,也就是所谓的有了包裹性。overflow | position:absolute | float:left/right都可以产生包裹性,替换元素也同样具有包裹性。在具有包裹性的元素上想利用width : auto;来让元素宽度自适应浏览器宽是不行的。

    包裹性

    高度方向:外边距重叠,外边距auto为0,这两点需要注意。书写方向什么的,接触比较少就不扯了。

    那为什么margin:auto对不能计算垂直方向的值呢?很简单,垂直方向是被设计成可以无限扩展的,内容越多浏览器便产生滚动条来扩展,所以垂直方向都找不到一个计算基准,以此返回一个false,便成了0。

    用处:通过width、height控制大小,各个方向的margin值控制与边界或者其他元素的距离来定位。

    浮动


    目前PC网站大多使用float布局,从成本上考虑大改的概率很小,所以不要说浮动无用,总是会有机会让你维护的!代表网站:淘宝、腾讯、百度,好吧BAT都到齐了。

    浮动听得多了,博客园上关于用浮动布局的介绍也非常的多。浮动原本用于文本环绕,但却在布局被发扬光大,这就是命!我的理解:浮动布局的核心就是让元素脱离普通流,然后使用width/height,margin/padding将元素定位。脱离普通流的元素,就像脱离地心引力一样,与普通流不在一个高度上。这个跟图层的概念类似。高度不同所以可以叠在其他元素上面产生重叠或者使用负边距跑到父元素外,理解了这一点浮动布局就很好理解了。

    图层

    下面用个圣杯布局的例子说明一下,理解了这个之后其他布局更加简单:

    left,宽度固定,高度可固定也可由内容撑开
    right,宽度固定,高度可固定也可由内容撑开
    center,可以自适应浏览器宽度,高度可固定也可由内容撑开。

    HTML & CSS:

    原理非常简单,左右侧边栏定宽并浮动,中部内容区放最后不浮动、默认width:auto并设置相应外边距,让左右侧边栏浮动到上面。注意:子元素设置为浮动之后,父对象的高度就坍塌了,需要设置父对象后的元素清除浮动,这样父对象的高度才能被浮动子元素撑起来了。

    当然,我们也要问一下,为啥父对象高度会坍塌呢?上面也说过了,浮动元素已经脱离了普通流,父对象所在的普通流比喻成地表,那浮动元素就已经上天了。但是父对象还在地表啊,从外太空看浮动元素在父对象里面,但是其实并不在,又怎么能撑开父对象呢?宽度如果我们不设置的话,其实也是为0的,因为父对象里面空空如也,所以宽高为0。

    上天

    要撑开的办法就两个,1是让父对象也上天(。。。你咋不上天呢),2是把浮动元素的边框边界拉下来。

    父对象也上天(即浮动)的话,那就不能实现宽度自适应了。因为float元素的width:auto是包裹内容的,参考前面说的!

    办法2就是在后面的元素里加一个clear语句。说到这个问题就要扯到clear与BFC了,我就不献丑了。传送门:https://developer.mozilla.org/zh-CN/docs/Web/CSS/clear

    这个三列布局还有个双飞(是双飞翼!想啥呢)的变种,就是在HTML中center部分也就是内容区提到最前面,也就是内容先行渲染。在网络不好的时候,左右双翼能不能出来不要紧,先让主体内容出来!这种想法,明显的优秀工程师思维,但,尼玛的双翼都是广告啊。广告不出来,哪能赚钱养你们这群工程师?所以提出双飞的玉伯才离开了淘宝???(纯属意淫,如真属实,当我扯淡,哈哈哈!)

    哈哈哈

    先上码:

    思路:

    1)既然HTML里面要让center放前面,为了让left跑到center前面,那center也必须浮动了,否则因为都是块元素他们会分两行。

    2)浮动之后还要让center宽度自适应,那明显width只能100%,然后在父元素中设width:auto,还有两侧margin,其实也就是父对象宽度自适应,center只是继承content的宽度。

    3)对left使用负的margin让他们浮动到上方去。

    代码里面我用到了一个calc(),这个CSS3带来的计算函数简直酷毙了!本例里如果不使用calc函数,那么就需要wrap左边距为0,left左边距-100%,然后center多加一层子块DIV设置margin-left:100px,可以达到同样的效果!calc函数与百分比配合就足以实现自适应的要求!目前所有的自适应布局都在利用浏览器来为我们计算尺寸,但是有了calc之后我们就可以自己制定规则!单是想想都高潮了吧?

    总结:使用浮动来进行布局,一个比较大的问题是清除浮动。这个可以使用一个after伪类来清除。更大的问题是浮动性像水一样向上流动,难以把握。在元素较多而且元素高度尺寸不一的情况下,单纯使用浮动只能实现上端对齐,这对于适应多种设备的布局就显得力不从心了。目前的做法是牺牲一部分内容,将元素做成等高排列,从美观上看也当然也是极好的,比参差不齐的排列要美观。

    普通流布局


    普通流布局:display : inline-block!这是一个传说中取代float布局的存在。看了一些网站,PC端浮动为主,移动端的也用的不多啊,已经有些使用flex的了,说好的inline-block一统江湖呢?

    使用inline-block之前先处理点小障碍:inline-block元素会有4px左右的空隙,这个是因为我们写代码时候的换行符所致。

    4px间隙

    解决办法很简单:在inline-block的父元素中设置样式font-size:0;letter-spacing: -4px; 然后设置inline-block的所有兄弟元素 font-size:值;letter-spacing: 值px;  恢复正常的显示。

    消除4px间隙

    另外还有一点需要注意的是inline-block默认是基线对齐的,而inline-block的基线又跟文本基线一致,所以在内容不同的时候并不能水平对齐。只需要用vertical-align显式声明一下top/bottom/middle对齐即可。这里补充一下基线的内容,没你想的那么简单哦。分有文字和无文字两种情况:

    1)无文字:容器的margin-bottom下边缘。与容器内部的元素没一毛钱关系。

    2)有文字:最后一行文字的下边缘,跟文字块(p,h等)的margin、padding没关系!注意是最后一行,无论文字在什么子对象容器内在什么位置都没关系,浏览器会找到最后一行文字对齐底部。

    你们感受一下:

    baseline-01   baseline-02   baseline-03

    警示:inline-block的基线是最后一行文字的底部,flex里面的基线是第一行文字的底部(请看下文阮老师的文章)

    baseline-04

    满满的都是泪啊。。。既然都叫baseline,何必呢?

    ohmygod

    使用inline-block进行圣杯布局:

    这里也没什么好说的,用到的也是width:auto和width:100%这两点,简单知识点的简单用法。

    双飞的话,代码跟圣杯的基本相同,注意在html的顺序变为center>right>left,只改左栏移动的margin-left: calc(-100% – 100px)到预定位置即可。不能用calc的话可以在center里面再加一层,跟浮动一样的处理方式。更简单的方法是使用CSS3带给我们的box-sizing属性。请看代码:

    总结:相比浮动inline-block更加容易理解,也更符合我们的认知,结合盒子模型的几个控制属性就可以进行布局了。对于元素高度不同的情况,目前浮动布局的做法都是将元素做成等高元素进行展现,这从美学上看也符合整齐的要求,不过牺牲了一部分内容。但inline-block有vertical-align属性,可以很好地解决元素高度不同而带来的布局问题。用过之后,你也会喜欢上inline-block的。。。至少我会!

    绝对定位


    前面的浮动和普通流中其实定位都是靠盒子模型控制的,与我们常说的定位还是有差别的。而绝对定位就是我们平常所说的定位,给定参考坐标系+坐标确定位置。关于绝对定位的资料太多,我就不说了。提一点就是absolute定位的基准是最近的非static定位父对象,而fixed是相对html根节点的定位。两种定位都会脱离普通流,跟之前说的浮动一样,上天了。

    上天

    当然,他们跟浮动在空间中的位置还是有差别的,项目中有遇到这个问题的请参考张大婶的文章: http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/  还是要结合项目来看,否则看过也只是看过而已,并不会存到你的脑子里,毕竟还是相当抽象相当理论性的东西。借用张大神的一个总结图:

    2016-01-07_223349

    使用绝对定位(特指absolute)做自适应布局跟前面两种方式没太大差别,宽度自适应还是在auto和100%上做文章,而位置则由top/bottom/left/right等控制。还是以圣杯布局来举例:

    父元素为relative,子元素为absolute,这样的话,又会出现跟浮动一样的问题:父对象高度坍塌,子元素不能撑起父对象。原因也跟浮动一样,解决办法的话目前我知道的只有给父对象指定一个确定height值,大家如果有更好的办法,请联系我!

    总结:单纯使用绝对定位进行自适应布局的情况很少,一般绝对定位都用在尺寸固定的元素定位上。而且fixed定位的渲染效率很低,因为它会频繁触发浏览器的重排。另外提一点:CSS3的transform会对绝对定位产生影响哦~比如说让fixed定位不再固定在浏览器视窗的黑魔法:http://www.zhangxinxu.com/wordpress/2015/05/css3-transform-affect/

    弹性盒子


    CSS3中对布局影响最大的莫过于弹性盒子模块了,这是一套区别于以往盒子模型布局的全新方案。上面几种方法你可以看到,为了实现自适应我们用的都是width:auto和100%的嵌套以及各种边距的移动定位,这套规则并不符合我们的认知。为什么不能开拓出一块区域,横竖排列都可以,内部所有元素的尺寸可以按照一个规则和这个区域的大小联系起来?终于CSS3做出了改变,引入了flex弹性布局方案,弹性盒布局有如下优势:
    1.独立的高度控制与对齐。
    2.独立的元素顺序。
    3.指定元素之间的关系。
    4.灵活的尺寸与对齐方式。

    在MDN上有非常简单易懂的基础教程:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes

    flexbox

    上面也已经给出了圣杯布局的自适应布局方案,所以代码就不贴了不过这个例子实现的是3栏成比例缩放,左右栏如果需要固定值的话可以写成  flex: 0 0 150px; 的样式。

    但是上面的教程没有给出各个属性的详细解释,建议看看阮一峰的博文,详细易懂而且配图超漂亮的有木有:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

    总结:弹性盒子在移动端的应用会越来越普遍,这套模型值得去好好研究。语法规则都是非常贴近人性,非常灵活,浏览器兼容性也非常好,当然国内百花齐放的移动浏览器会有哪些大坑呢?我们拭目以待~

    其他


    其他包括position:relative和CSS3中的transform都可以实现定位,但是由于他们在原来的普通流中还占着一个坑,所以很少用来布局啥的。transform是个很酷炫的东西,可以用平面的素材做出很多3D的效果,而且不需要js就可以做,非常好玩。此文已经很长,就不多说了,以后会写一篇文章来专门说说她的故事。

    展开全文
  • 浅谈Web自适应

    千次阅读 2019-06-05 10:21:11
    特别说明:在开始这一切之前,请开发移动界面的工程师们在头部加上下面这条meta: <meta name="viewport" content="width=device-width, initial-...所谓宽度自适应严格来说是一种PC端的自适应布局方式在移动...
  • 自适应

    2016-10-07 19:33:00
    web 要考虑兼容性、还原、布局app 针对不同屏幕尺寸来自适应,可以用雪碧图技术来进行自适应 布局方法:css原生代码响应式布局bootstrap(移动端优先) 也可以用js文件达到自适应,宽高可以设置不再是用百分比方式...
  • @media与@media screen两者在手机设备上没有区别,但@media screen的css在打印设备里是无效的,而@media在打印设备里是有效的,如果css需要用在打印设备里,那么就用@media ,否则,就用@media screen。
  • 一、面临问题:网页在电脑上完全显示,但在手机上显示不完全(需要左右拉动才看得到其他部分) 例如:下面这个简易的网页,为加入自动适应之前,电脑和手机打开都是下图效果,电脑上显示看上去效果不错,但手机上...
  • 自适应和响应式的介绍和区别

    万次阅读 2018-06-13 10:17:57
    视口 视口:用户浏览信息屏幕尺寸大小(每一个视口后面都是真实一位的用户) 概念: 响应式设计(Responsive design): ...[百科]:响应式设计是Ethan Marcotte在2010年5月份...自适应设计(Adaptive Design...
  • 生物的适应是指:生物的形态结构和生理机能与其赖以生存的一定环境条件相适合的现象。 适应一方面指生物各层次的结构(从大分子、细胞、组织、器官,乃至由个体组成的...
  • 自适应控制

    2018-04-29 19:48:49
    自适应控制(韩曾晋)2018.4.29.自动化理论知识控制类
  • 自适应控制系统

    2012-12-03 10:17:47
    清华大学的自编教材,自动化系使用。谢新民,丁锋编写。系统地描述了自适应控制的方法,结构精炼,非常适合学习。
  • 自适应控制 simulink

    2013-11-16 16:03:56
    自己做的一个参数估计自适应系统 s函数传漏了 凑合着看吧 大致系统结构没错
  • 《无模型自适应控制:理论与...同时也包括复杂互联网系统的无模型自适应控制、无模型自适应控制与其他控制方法之间的模块化设计、无模型自适应控制的鲁棒性和无模型自适应控制系统的对称相似结构构想等若干重要问题。
  • 自适应控制 及应用

    2019-03-04 21:26:12
    全书共分10窣,主要为绪论、自适应控制系统的理论莪 础、模型参考自适应控制、自校正控制、变结构控制、混合自适应控制、对象具冇未逑模动态时的混合自适应控制、非线性控 制对象的Q适应控制、模糊Q适应控制和tl适应...
  • 这篇文档主要介绍了自适应控制与感应控制的区别,文章简介易懂,比较适合初学者学习。
  • 模型参考自适应控制

    2011-10-15 23:32:26
    详细地介绍了自适应控制算法的实现方法,包含有程序的实现代码,对自适应控制的学习有很好的启发作用。
  • 自适应控制电子书(PDF格式)

    热门讨论 2011-01-14 17:26:38
    本教材由我国控制领域著名学者韩曾晋主编的经典教材之一,内容丰富翔实,对于考博、科研会有较大帮助。
  • 自适应控制系统理论、设计与应用 作者: 李清泉 pdf版 简介: 全书共九章和一个结语。前四章为基础理论,内容包括概述、离散时间系统、系统辨识和设计自适应控制系统的理论基础。后五章讲述各种自适应控制系统的工作...
  • 本书详细的讲述了自适应控制的基本原理,并通对相关原理给予了严谨的数学推导得到,同时给出了简单的工程应用实例。
  • 1. 鲁棒控制和自适应控制的联系与区别 鲁棒控制是以目的定义的控制方法集合,自适应控制是以手段定义的控制方法集合,这两种控制都是为了应对 “当数学模型不能精确表示实际系统的情况下。狭义的鲁棒控制是指H2,...
  • 自适应控制学习——MIT自适应律

    千次阅读 2019-11-05 22:29:57
    参考书籍 系统辨识与自适应控制 MATLAB仿真(第三版) 仿真环境 Matlab 2016a 参照书上P59的例题搭建 只放代码和结果 单纯的MIT自适应律代码如下: %MIT自适应律 %一些量的初始化 clear clc r = 0.1;%自适应增益 gain...
  • 北京交通大学侯忠生教授的无模型自适应控制的实际应用和理论研究应用,详细介绍了无模型自适应控制的主要应用领域。附录为无模型自适应控制书中的MATLAB程序代码,运行可以复现书中的仿真图。
  • 《系统辨识与自适应控制MATLAB仿真》从MATLAB仿真及可视化仿真的角度出发,系统地介绍了系统辨识与自适应控制的基本理论和方法。《系统辨识与自适应控制MATLAB仿真》共分6章。第1~5章主要内容为:绪论、系统辨识、...
  • 自适应控制系统,已有较完整的设计理论和丰富的应用成果(驾驶仪、航天、电传动、核反应堆等等)。很经典的一本自适应教材.介绍了应用最广的自适应控制理论。
  • 包含3个.m文件,分别实现M序列生成、广义最小方差算法、自适应控制算法
  • 《系统辨识与自适应控制》考核试题+答案 《系统辨识与自适应控制》硕士研究生必修课程考核 (检测技术与自动化装置专业)2003.5. 22
  • L1自适应控制-理论基础

    万次阅读 2017-08-17 20:31:39
    L1自适应控制算法是一种快速鲁棒的自适应控制。该算法实际上是模型参考自适应控制进行了改进,通过在控制律设计环节添加了一个低通滤波器,保证了控制律和自适应律设计的分离。 L1自适应系统机构及预备知识 L1...
  • 自适应控制理论及其应用自适应控制理论及其应用
  • 不多BB 直接上例子 这里所描述的是一个典型的弹簧系统 但是弹簧的胡克系数a是个变量 分析过程不在此赘述了 简单说一下思路 step1:find X2 使系统的输出量紧紧跟随给定轨迹 Step2:find u 使得X2可以满足step1的...

空空如也

1 2 3 4 5 ... 20
收藏数 233,728
精华内容 93,491
关键字:

自适应