开始写一个网页-笔记2

布局

弹性盒子,横向布局:
  • display:flex

    // html文件代码
    <body>
        <div class="continer">
            <div class="first">num1</div>
            <div class="second">num2</div>
            <div>num3</div>
            <div>num4</div>
            <div>num5</div>
            <div>num6</div>
            <div>num7</div>
        </div>
    </body>
    
    // css文件代码
    div{
        height: 100px;
        width: 500px;
        background-color: red;
        display: flex;
    }
    
    div .first{
        height: 40px;
        width: 100px;
        background-color: blue;
    }
    
    div .second{
        height: 40px;
        width: 100px;
        background-color: green;
    }
    

    展示效果:
    在这里插入图片描述

    说明
    1、不使用display时,div为块级元素,会上下布局
    2、想使哪些元素(如.first,.second)横向布局,找父级元素(如.continer)并设置display:flex
    3、弹性盒子类似一个松紧带,当子盒子相加超过父盒子时,父级会自动压缩子盒子的大小

弹性盒子的配套属性
// html代码
	<body>
	    <div class="continer">
	        <div class="first">num1</div>
	        <div class="second">num2</div>
	        <div class="third">num3</div>
	        <div class="fourth">num4</div>
	    </div>
	</body>
  • 1、flex-direction: 作用在弹性盒子上,设置弹性盒子子元素的排列方式:row(从左到右,默认)、column(从上到下)、row-reverse(从右到左)、column-reverse(从下往上)

    // css文件代码
    div.continer{
        height: 200px;
        width: 500px;
        background-color: red;
        display: flex;
        flex-direction: column-reverse; // 子元素竖向排列,从下往上
    }
    // 子元素仅设置了宽、高和背景颜色的属性,再次不再多写了
    

    展示效果:
    在这里插入图片描述

  • 2、flex-wrap 作用在弹性盒子上,设置弹性盒子内子元素换行方式,其值:nowrap(不换行,默认)、wrap(换行)

    // 使用方式为:
    div.continer{
    	    height: 200px;
    	    width: 500px;
    	    background-color: red;
    	    display: flex;
    	    flex-wrap: wrap; // 子元素横向排列,失去弹性盒子的作用
    	    // flex-wrap: nowrap; // 效果同文章第一张效果图,子元素不换行,挤在一起
    	}
    

    展示效果:在这里插入图片描述

  • 3、order 作用在弹性盒子的子元素上,设置弹性盒子内该自己元素的排列顺序,值越小越靠前

    div.continer{
        height: 200px;
        width: 500px;
        background-color: red;
        display: flex;
    }
    div .first{
        height: 40px;
        width: 200px;
        background-color: blue;
        order: 10;  // 4个元素中,10最大,排在最后
    }
    div .second{
        height: 40px;
        width: 200px;
        background-color: green;
        order: 1;  // 4个元素中,1最小,排在最前
    }
    div .third{
        height: 40px;
        width: 200px;
        background-color: yellow;
        order: 6;  // 4个元素中,6是次大的,排在倒数第二位
    }
    div .fourth{
        height: 40px;
        width: 200px;
        background-color: pink;
        order: 3;  // 4个元素中,3是次小的,排在第二位
    }
    

    展示效果
    在这里插入图片描述

  • 4、flex 作用在弹性盒子的子元素上,设置弹性盒子内该元素的缩放比例。使用时是一个复合属性,由flex-shrink(压缩因子),flex-grow(增长/放大因子),flex-basis(基准宽度)

    父盒子宽度为530px,子元素宽度均为80px且不设置flex属性时:
    在这里插入图片描述

    div.continer{
        height: 200px;
        width: 600px;    // 600px-50px*4 = 400px
        background-color: red;
        display: flex;
        flex-wrap: wrap;
    }
    .continer .first{
        height: 20px;
        width: 50px;
        background-color: blue;
        flex: 2;  // [600-50px]+50px=
    }
    .continer .second{
        height: 40px;
        width: 50px;
        background-color: green;
    }
    .continer .third{
        height: 50px;
        width: 50px;
        background-color: yellow;
        flex: 1;
    
    }
    .continer .fourth{
        height: 30px;
        width: 50px;
        background-color: pink;
        flex: 2;
    }
    

    效果图
    在这里插入图片描述

    说明

    • flex属性是将剩余的宽度按照设置的值分给子元素
    • 盒子宽为600px,num2未设置,默认基准宽度为当前设置的宽度不变。
    • num1值为2,num3值为1,num4值为2,剩余的550px会被分为(2+1+2)份,每份值为110px
    • 所以,width[num1]=110px2=220px;width[num3]=110px1=110px;width[num4]=110px*2=220px;
  • 5、justify-content 作用在弹性盒子上,设置的弹性盒子内子元素在排列方向上的分布方式

    • flex-start(弹性盒子开始的方向,都挤着放左边)
    • flex-end(弹性盒子结束的方向,即都挤着放右边)
    • center(居中,即左右留空,都挤在中间)
    • space-between(空白在中间的方式)
    • space-around(空白在周围,每个元素的左右都有)
    div.continer{
        height: 200px;
        width: 600px;
        background-color: red;
        display: flex;
        flex-wrap: wrap;
        justify-content: flex-end;
    }
    

    在这里插入图片描述

    说明

    • 子元素仅设置了宽、高和背景颜色的属性
    • 使用时子元素不要设置flex属性(flex会把空余的都填充满,不会出现环绕的效果)
  • 6、align-items 作用在弹性盒子上,设置弹性盒子内子元素在排列方向的垂直方向的对齐方式:

    • flex- start(弹性盒子开始的方向,都挤着放左边)
    • flex-end(弹性盒子结束的方向,即都挤着放右边)
    • center(居中,即左右留空,都挤在中间)
    div.continer{
        height: 200px;
        width: 600px;
        background-color: red;
        display: flex;
        flex-wrap: wrap;
        align-items: flex-end;
    }
    // 子元素仅设置了宽、高和背景颜色的属性
    

    在这里插入图片描述

    说明

    • end时子元素会粘在盒子底部;start时子元素会粘在盒子顶部;center时会居中展示
    • 子元素在垂直方向上还会有空隙
  • 7、align-content 作用在弹性盒子上,设置弹性盒子行的分布方式(多行展示时):

    • flex-start(弹性盒子开始的方向,都挤着放左边)
    • flex-end(弹性盒子结束的方向,即都挤着放右边)
    • center(居中,即左右留空,都挤在中间)
    • space-between(空白在中间的方式)
    • space-around(空白在周围,每个元素的左右都有)
    div.continer{
        height: 200px;
        width: 600px;
        background-color: red;
        display: flex;
        flex-wrap: wrap;
        /* align-items: flex-end; */
        align-content: flex-end;
    
    }
    .continer .first{
        height: 20px;
        width: 200px;
        background-color: blue;
    }
    .continer .second{
        height: 40px;
        width: 200px;
        background-color: green;
    }
    .continer .third{
        height: 50px;
        width: 200px;
        background-color: yellow;
    }
    .continer .fourth{
        height: 30px;
        width: 200px;
        background-color: pink;
    
    }
    

    在这里插入图片描述

    说明

    • end时子元素会粘在盒子底部;start时子元素会粘在盒子顶部;center时会居中展示
    • 子元素高度不一致时,会按照该行中最高的展示,行与行之间没有空隙

备注
1、弹性盒子可以设置横向,也可以设置竖向布局
2、配套属性:没有“display:flex”,即使写上“flex-direction:row”也是不起作用的。flex-direction可以去掉,display不能省掉
3、第一步考虑flex-direction,如果flex-direction:column,则flex-wrap:nowrap也是不起作用的。flex-direction的优先级要高于flex-wrap
4、当父盒子的高度放不下所有的子元素时,flex-wrap:warp也是会换行的,只不过是竖着换行
5、align-items:flex-end 和 align-content:flex-end的区别。items是盒子底部对齐,content是内容对齐方式,效果图如下
在这里插入图片描述
在这里插入图片描述

定位 - position

// 使用定位主要是为了使用方位属性:left、right、top、bottom以及层属性 z-index
// 上述属性有效前提是position的值不为static
1、static(静态模式,默认)
2、relative(相对模式)
3、absolute(绝对模式)
4、fixed(固定模式)

//html代码
<body>
    <div class="box"></div>
    <div class="second"></div>
</body>
// css代码
.box{
    width: 200px;
    height: 200px;
    background-color: red;
}
.second{
    width: 200px;
    height: 200px;
    background-color: blue;
}

在这里插入图片描述

  • 1、纯使用relative [相对模式]

    特征:依然保留自己的物理空间,以自己原位置为参考点定位,随着浏览器的滚动而滚动

    .box{
        width: 200px;
        height: 200px;
        background-color: red;
        position: relative; // 有人也敢下走
        left: 100px;  // 距离原来位置向左动50px
        top: 100px;
    }
    

    在这里插入图片描述

    注意:
    如果是 position:static,元素之间是不会重叠的。relative不关心是否影响其他元素。值可以是负数

  • 2、纯使用absolute [绝对模式]

    特征:不保留自己的物理空间,以浏览器位置为参考点定位。随着浏览器的滚动而滚动

    .box{
        width: 200px;
        height: 200px;
        background-color: red;
        position: absolute;
        right: 50px;
        bottom: 50px;
    }
    

    在这里插入图片描述
    在这里插入图片描述

    注意:

    • 浏览器缩放后,相对浏览器的位置不变。
    • 缩放浏览器时,该元素也会与其他元素重叠
    • 如果有滚动条,绝对位置是以滚动条在最顶部的时候的浏览器为参考点
  • 3、纯使用fixed [固定模式]

    特征:不保留自己的物理空间,以浏览器位置为参考点定位,不随着浏览器的滚动而滚动(如,回到顶部等按钮)

    注意:

    • 浏览器缩放,不影响该元素的位置
    • 如果有滚动条,滑动滚动条也不影响该元素的位置
  • 4、组合使用

    使用:祖先元素使用相对定位,子元素使用绝对定位

    特征:子元素不保留自己的物理空间,以使用了相对模式的祖先元素为参考点定位,随着浏览器的滚动而滚动

    // html代码
    <body>
        <div class="container">
            <div class="box">
                <div class="abc"></div>
                <div class="ef"></div>
            </div>
        </div>
    </body>
    
    // css代码
    .container{
        width: 500px;
        height: 500px;
        background-color:red;
    }
    
    .box{
        width: 300px;
        height: 300px;
        background-color: blue;
    }
    .abc{
        width: 200px;
        height: 200px;
        background-color: green;
    }
    .ef{
        width: 200px;
        height: 200px;
        background-color: yellow;
    }
    

在这里插入图片描述

  • 对祖先(红色)元素设置相对模式。子(绿色和黄色)元素设置绝对定位

    // css部分代码
    .abc{
        width: 200px;
        height: 200px;
        background-color: green;
        position: absolute;
        right: 10px;
        bottom: 10px;
    }
    .ef{
        width: 200px;
        height: 200px;
        background-color: yellow;
        position: absolute;
        right: 20px;
        bottom: 20px;
    }
    

    在这里插入图片描述

  • 子元素中,想让绿色盖住红色,可用z-index属性来设置(值越大,在z轴方向上越靠前)

    .abc{
        width: 200px;
        height: 200px;
        background-color: green;
        position: absolute;
        right: 10px;
        bottom: 10px;
        z-index:100;
    }
    .ef{
        width: 200px;
        height: 200px;
        background-color: yellow;
        position: absolute;
        right: 20px;
        bottom: 20px;
        z-index: 99;
    }
    
拓展
  • 颜色表示方式

    • 1、 颜色单词,如 red、yellow、blue、green、pink等
    • 2、#000000(#+6位16进制数)。每两位代表一个颜色,光的三原色(红绿蓝)
      • 如果两位的数值一样,可简化。如#ff0011 = # f01
    • 3、rgb(0-255,0-255,0-255)
      • 每个数的范围是[0,255] ,rgb(0,0,0)代表黑色
      • #是用16进制来表示,rgb是使用十进制来表示的
    • 4、rgba(0-255, 0-255,0-255,0-1)
      • a代表透明度,如果是0的话,该内容完全看不到
      • 作用:设置后可以透过看到下层的内容
  • 其他属性

    • width: 24%

      父级盒子(上图红色框 class=container)宽度为1200px,对于4个子元素(上图绿色框 class=item)来平均分配:
      1、固定尺寸,设置每个item的width = 1200/4=300px
      2、百分数设置,将container整体想象成1,则4个元素每个为25%
      // 说明:这里设置24%是因为元素之间需要留空隙

      在这里插入图片描述

    • object-fit

      使用背景:添加的图片,设置固定 高/宽度后,图片会有变形

      • object-fit:cover

        作用:响应式改变图片尺寸,设置cover后图片不会变形,内容会有相应的裁剪

      • object-fit:contain

        作用:响应式改变图片尺寸,设置cover后图片会有压缩

    • cursor: pointer;

      作用:鼠标悬浮时,鼠标样式会变为小手状

    • box-shadow: 1px 2px 3px #000;

      作用:沿着盒子的轮廓增加阴影效果,效果是黑色
      其中 - 1px代表横向偏移量,越大越往右走,越小越往左走;
      2px代表纵向偏移量,越大越往下走,越小越往上走;
      3px代表模糊度,越小越清晰,越大越模糊
      在这里插入图片描述

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值