恒星星 發表於 2023-5-3 02:25:00

vue学习第8天 css ---- position( 5种定位 常见4种 + 粘性定位)

<p><span style="font-size: 18pt">学习目标</span></p>
<p>1)定位的4种分类        &nbsp;(<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">四种定位</span>)<br>2)4种定位各自的特点      (<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">4种定位各自的特点</span>)<br>3)常用子绝父相布局的原因     (<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">子绝对、父相对布局</span>)<br>4)轮播图效果        <br>5)显示隐藏的2种方式以及区别</p>
<p>&nbsp;</p>
<p><span style="font-size: 18pt">                定位</span></p>
<p><span style="background-color: rgba(255, 255, 0, 1); font-size: 16px"><span style="color: rgba(255, 0, 0, 1)">定位和浮动的不同</span></span></p>
<p class="li1">1)<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">浮动</span>可以让多个块级盒子一行没有缝隙排列品示 ,经常用于<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">横向排列</span>盒子。</p>
<p class="li1">2)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">定位</span>则是可以让盒子<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">自由的</span>在某个盒子内<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">移动</span>位置或者固定屏幕中某个位置,并且<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">可以压住其他盒子</span>。</p>
<p>&nbsp;</p>
<p>1、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">定位应用场景</span></p>
<p>  1)某个元素可以自由的在一个盒子内移动位置,并压住其他盒子。</p>
<p>  2)滚动窗口的时候,盒子固定在屏幕某个位置。</p>
<p><em><em><em><em><em>  </em></em></em></em></em>特定使用:1、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">盒子压盒子</span>&nbsp; &nbsp;2、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">页面滚动盒子不动</span></p>
<p>&nbsp;</p>
<p>2、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">定位组成</span></p>
<p>  定位:将盒子<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">定</span><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">在某一个位置</span>,所以定位也是在摆放盒子,按照定位的方式移动盒子。</p>
<p>  <span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">定位 = 定位模式 + 边偏移</span></p>
<p>  1)定位模式:用于指定一个元素在文档中的定位方式。</p>
<p>  2)边偏移:决定了该元素的最终位置。<br>  </p>
<p>  1)定位模式<br>  定位模式决定元素的定位方式,CSS的<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">position属性</span>决定,值分为四个:<br>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">fixed: 用于页面下滑,元素不动</span></p>
<p>  <img src="https://img2023.cnblogs.com/blog/1520198/202304/1520198-20230411120741853-1385771072.png"></p>
<p>&nbsp;</p>
<p>&nbsp;  2)边偏移<br>  边偏移就是定位的盒子移动到最终位置。有 <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">top、bottom、left、right&nbsp; 四个属性</span>。(<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">只有定位的盒子才有这四个属性</span>)</p>
<p>  <img src="https://img2023.cnblogs.com/blog/1520198/202304/1520198-20230411121109453-146042900.png"></p>
<p>&nbsp;</p>
<p>3、<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">静态定位</span><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)"> static</span>(了解)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">默认的定位方式</span>,即无定位</p>
<p>  1)静态定位按照标准流特性摆放位置,它<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">没有边偏移</span></p>
<p>  2)静态定位在布局时<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">很少用到</span></p>
<p>&nbsp;</p>
<p>4、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">相对定位 relative</span>(重要)<br>  相对定位: 元素在<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">移动</span>位置的时候,是<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">相对于它原来的位置</span>来说的。(自恋型)</p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">相对定位的特点</span>:</p>
<p>    1)它是<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">相对于自己原来的位置移动</span>的&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;   (移动位置的时候参照点是自己原来的位置)</p>
<p>    2)原来在标准流的<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">位置继续占有</span>,后面的盒子仍然以标注流的方式对待它。 (不脱标,继续保留原来位置。人走岗位留,其他盒子就不动)</p>
<p>&nbsp;</p>
<p>5、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">绝对定位 absolute</span> (重要)</p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">绝对定位</span>是元素在<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">移动</span>位置的时候,<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">相对于它的祖先元素</span>来说的。(拼爹型)</p>
<p>  <span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">绝对定位的特点</span>:</p>
<p>    1)如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document文档)。</p>
<p>    2)如果祖先元素有定位(相对、绝对、固定定位),则<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">以最近一级的有定位祖先元素为参考</span>点移动位置。</p>
<p>    3)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">绝对定位不再占有原先的位置</span>。(脱标)</p>
<p>&nbsp;</p>
<p>6、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">子绝父相</span>的由来(并不是绝对的,相对多数是这种情况)</p>
<p>  子级使用绝对定位,父级则需要相对定位</p>
<p>  1)子级绝对定位,不会占有位置,可以放到父盒子里面的任何位置,不会影响其他的兄弟盒子。</p>
<p>  2)父盒子 需要加定位限制 子盒子 在 父盒子内显示</p>
<p>  3)父盒子布局时,需要占有位置,因此父亲只能是相对定位</p>
<p>  </p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">总结: 子绝父相的由来, 因为父级需要占有位置,因此是相对定位,子盒子不需要占有位置,则是绝对定位。</span></p>
<p>&nbsp;</p>
<p>7、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">固定定位fixed</span>(重要)特殊的绝对定位</p>
<p>  操作图片建议外层加一个盒子</p>
<p>  固定定位是元素<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">固定于浏览器可视区</span>的位置。主要使用场景:可以在浏览器页面滚动时元素的位置不会改变。</p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">固定定位的特点</span>:</p>
<p>    1)以浏览器的可视窗口为参照点。        2)跟父元素没有任何关系。</p>
<p>    3)不随滚动条的滚动而滚动          &nbsp;4)固定定位不占有原先的位置。</p>
<p>    <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">固定定位也是脱标</span>的,其实固定定位也可以看作是一种特殊的绝对定位。</p>
<p>  </p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">固定定位小技巧</span>: 固定在版心右侧位置</p>
<p>  小算法:<span style="background-color: rgba(0, 255, 0, 1); color: rgba(204, 153, 255, 1)"> 直接right:0不可以么?</span></p>
<p>    1)让固定定位的盒子 left:50%,走到浏览器可视区(也可以看作版心)的一半位置。</p>
<p>    2)让固定定位的盒子 margin-left: 版心宽度的一半距离。</p>
<p>&nbsp;</p>
<p>8、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">粘性定位 sticky</span>(了解) </p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">相对定位和固定定位的混合</span>。 (兼容性差,IE不支持,可以js实现)</p>
<p>  语法:&nbsp; 选择器. { position: stickey; top: 10px;}</p>
<p>  <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">粘性定位特点</span>:</p>
<p>    1)以浏览器的可视窗口为参照点移动元素(固定定位特点)</p>
<p>    2)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">粘性定位占有原先的位置</span> (相对定位的特点)</p>
<p>    3)<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">必须添加</span> left、right、top、bottom 其中<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">一个</span></p>
<p>&nbsp;</p>
<p>9、定位总结</p>
<p>  <img src="https://img2023.cnblogs.com/blog/1520198/202304/1520198-20230411152035060-1360457778.png"></p>
<p>&nbsp;  1)一定记住 相对定位、固定定位、绝对定位 <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">两个大特点</span> ( 是否占有位置。(<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">脱标</span>)&nbsp; |&nbsp; 以谁为<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">基准点</span>移动位置。&nbsp; )</p>
<p>   2)学习定位重点<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">学会子绝父相</span>。</p>
<p>&nbsp;</p>
<p>10、<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">定位的叠放次序</span><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">&nbsp;z-index(更高维度Z轴)</span></p>
<p>  在使用定位布局时,可能会出现<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">盒子重叠</span>的情况。此时,可以使用<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">z-index来控制盒子的前后次序</span>(z轴)</p>
<p>  语法:&nbsp; 选择器&nbsp; { z-index: 1; }</p>
<p>    1)数值可以是正整数、负整数或0,默认是auto,<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">数值越大,盒子越靠上层</span>。</p>
<p>    2)如果<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">数值相同</span>,按照书写,顺序<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">后来居上</span>。</p>
<p>    3)数字后面不能加单位</p>
<p>    4)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">只有定位的盒子才有z-index属性</span></p>
<p>&nbsp;</p>
<p>11、定位的拓展<br>  1)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">绝对定位的盒子居中</span></p>
<p>    <span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">**绝对定位的盒子不能通过 margin:0 auto 水平居中**</span>。可以通过一下计算方法实现水平和垂直居中。</p>
<p>    <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">水平居中</span>  (left: 50% 配合。margin-left: 负盒子的宽度的一半)</p>
<p>      a、left 设置 50%</p>
<p>      b、margin-left 设置 负的盒子宽度一半</p>
<p>      写法:div{ position: absolute; left: 50%; margin-left:-100px; width:200px; height:200px;}</p>
<p>    <span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">垂直居中</span>  (top: 50% 配合。margin-top: 负盒子的高度的一半)</p>
<p>      a、top 设置 50%<br>      b、margin-top 设置 负的盒子高度一半</p>
<p>      写法:div{ position: absolute; top: 50%; margin-top:-100px; width:200px; height:200px;}</p>
<p>&nbsp;</p>
<p>  2)定位特殊特性</p>
<p>    绝对定位和固定定位也和浮动类似   (<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">绝对、固定,类似于浮动</span>)</p>
<p>    a、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">行内</span>元素添加绝对或者固定定位,可以<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">直接设置高度和宽度</span>。(不用转换 或者 加浮动)</p>
<p>    b、<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">块级</span>元素添加绝对或者固定定位,如果不给宽度或者高度,<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">默认大小是内容的大小</span>。  </p>
<p>    额外话题:</p>
<p>      行内:不可以设置宽高,大小是内容的大小。(浮动或者定位可以改变设置宽高)</p>
<p>      块级:必须设置宽高,           (浮动或者定位可以变为默认大小是内容大小)</p>
<p>    </p>
<p>  3)<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">脱标</span>的盒子不会触发<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">外边距塌陷</span> (外边距合并)</p>
<p>   浮动元素、绝对定位(固定定位)元素都不会触发<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">外边距合并</span>的问题。</p>
<p>  </p>
<p>  4)绝对定位(固定定位)会完全压住盒子  (定位压住所有,浮动不会压文字图片)</p>
<p>    <span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">浮动</span>元素不同,<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">只</span>会<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">压</span>住它下面<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">标准流的盒子</span>,但是<span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 0, 1)">不会压住</span>下面标准流<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">盒子里面的文字或者图片</span></p>
<p>    绝对<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">定位</span>(固定定位)会压住下面标准流<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">所有的内容</span>。</p>
<p><em id="__mceDel">    </em><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">原因</span>:浮动产生的目的最初是为了做<span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">文字环绕效果</span>的。文字会围绕浮动元素浮动,所以不会压住文字,</p>
<p>&nbsp;</p>
<p>                        <span style="font-size: 18pt">网页布局总结</span></p>
<p>通过盒子模型。可以知道大部分html标签是一个盒子&nbsp; &nbsp; &nbsp; &nbsp;(html)</p>
<p>通过CSS浮动、定位可以让每个盒子排列成为网页。   (css) </p>
<p>一个完整的网页,是标准流、浮动定位一起完成布局的,每个都有自己的专门用法。</p>
<p>&nbsp;</p>
<p><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">1、标准流&nbsp; &nbsp;可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。</span></p>
<p><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">2、浮动&nbsp; &nbsp; &nbsp; 可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局。</span></p>
<p><span style="background-color: rgba(255, 255, 0, 1); color: rgba(255, 0, 0, 1)">3、定位。&nbsp; &nbsp;定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局。</span></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/changdasheng/p/17305766.html
頁: [1]
查看完整版本: vue学习第8天 css ---- position( 5种定位 常见4种 + 粘性定位)