CSS笔记五-定位、装饰、选择器拓展

一、定位

1、定位的基本介绍

1.1、网页常见布局方式

标准流:

块级元素独占一行——垂直布局;

行内元素/行内块元素一行显示多个——水平布局;

浮动:可以让原本垂直布局的块级元素变成水平布局

定位:可以让元素自由的摆放在网页的任意位置;一般用于盒子之间的层叠情况

1.2、定位的常见应用场景

* 可以解决盒子与盒子之间的层叠问题(定位之后的元素层级最高,可以层叠在其他盒子上面);

* 可以让盒子始终固定在屏幕中的某个位置;

2、定位的基本使用

2.1、定位初体验

需求:页面中的两个盒子,要求完成图片效果;

针对盒子与盒子之间的层叠问题,推荐使用定位完成;

.blue{/* 1.设置定位方式 */position: absolute;/* 2.设置偏移值 */top: 150px;left: 150px;background-color: blue;}

 2.2、使用定位的步骤

设置定位方式:属性名:position

常见属性值:

设置偏移值:

偏移值设置分为两个方向,水平和垂直方向各选一个即可;

选取的原则一般是就近原则(离哪边近用哪个)

 3、静态定位  position:static;

静态定位是默认值,就是之前认识的标准流;

position:static;

注意点:静态定位就是之前的标准流,不能通过方位属性进行移动;

        之后说的定位不包括静态定位,一般特指后几种:相对、绝对、固定;

4、相对定位  position:relative;

自恋型定位,相对于自己之前的位置进行移动;

position:relative;

特点:需要配合方位属性进行移动;相对于自己原来位置进行移动;在页面中占位置(没有脱标);

应用场景:配合绝对定位组cp(子绝父相);用于小范围的移动;

5、绝对定位

拼爹型定位,相对于非静态定位的父元素进行定位移动;

position:absolute;

特点:需要配合方位属性实现移动;默认相对于浏览器可视区域进行移动;在页面中不占位置(已经脱标);

应用场景:配合相对定位组cp(子绝父相); 


绝对定位相对于谁进行偏移?

祖先元素中没有定位——默认相对于浏览器进行移动;

祖先元素有定位——相对于 最近的 有定位 的祖先元素进行移动;

6、子绝父相

场景:让子元素相对于父元素进行自由移动;

含义:子元素——绝对定位,父元素——相对定位;

好处:父元素是相对定位,则对网页布局影响最小;

    .father{width: 600px;height: 600px;background-color: pink;position: relative;}.son{width: 400px;height: 400px;background-color: blue;position: absolute;right:100px;bottom: 100px;}

 7、子绝父绝

场景:在使用子绝父相的时候,发现父元素已经有绝对定位了,此时直接子绝即可;

原因:父元素已经有定位已经满足要求,如果盲目修改父元素定位方式,可能会影响之前写好的布局;

   .father{width: 600px;height: 600px;background-color: pink;position: relative;}.son{width: 400px;height: 400px;background-color: blue;position: absolute;right:0px;bottom: 0px;}.sun{width: 200px;height: 200px;background-color: yellow;position: absolute;right:0px;}

子绝父相水平居中案例:

需求:使用子绝父相,让子盒子在父盒子中水平居中(父子元素任意宽度下都能实现)

解决方案:1> 子绝父相;

                2> 先让子盒子往右移动父盒子的一半;left: 50%;

                3> 再让子盒子往左移动自己的一半;

        普通做法:margin-left:-100px; 父盒子宽度的一半;

        缺点:子盒子宽度变化后需要重新改代码;

        优化:transform:translateX(-50%);

        优点:表示沿着X轴负方向(往左)始终移动了自己宽度的一半,子盒子宽度变化不需要更改代码;


Android网络图片加载框架详解

高级 • 1125人在学习




底部半透明遮罩



 10、元素层级问题

不同布局方式元素的层级关系:标准流 < 浮动 < 定位

不同定位之间的层级关系:相对、绝对、固定默认层级相同,此时HTML中写在下面的元素层级更高,会覆盖上面的元素;


更改定位元素的层级:

场景:改变定位元素的层级;(非定位元素无效果)

属性名:z-index

属性值:数字,数字越大,层级越高


二、装饰

1、垂直对齐方式

1.1基线

基线:浏览器文字类型元素排版中存在用于对齐的基线(baseline)

 1.2、文字对齐问题

场景:解决行内/行内块元素垂直对齐问题

问题:当图片和文字在一行中显示时,其实底部是对不齐的,而是和文字基线对齐。

 1.3、垂直对齐方式  vertical-align

属性名:vertical-align

属性值:

   img{/* 基线对齐 */vertical-align: baseline;/* 顶部对齐 */vertical-align: top;/* 中部对齐 */vertical-align: middle;/* 底部对齐 */vertical-align: bottom;}

 1.4、vertical-align可以解决的问题

文本框与表单按钮无法对齐




input标签和img标签无法对齐的问题

 

 



 div中的文本框,文本框无法贴顶问题




 div不设高度由img标签撑开,此时img标签会存在额外间隙问题




使用line-height属性让img标签垂直居中问题

 




注意点:

浮动之后,不推荐使用行内块元素让div一行中显示,因为可能会出现垂直对齐问题;

推荐优先使用浮动完成效果更加稳定;

2、光标类型  cursor

场景:设置鼠标光标在元素上时显示的样式。

属性名:cursor

常见属性值:

 3、边框圆角 border-radius

场景:让盒子四个角变得圆润,增加页面细节,提升用户体验;

属性名:border-radius

常见取值:数字 + px  /   百分比

原理:

 赋值规则:从左上角开始赋值,然后顺时针赋值,没有赋值的看对角;

    .box{width: 200px;height:200px;background-color: pink;/* border-radius: 30px; */border-radius: 30px 80px ;}

 边框圆角应用:

画一个正圆:盒子要求正方形

    .box{width: 200px;height:200px;background-color: pink;/* border-radius: 30px; */border-radius: 50% ;}

 胶囊按钮:盒子要求是长方形,border-radius为盒子高度的一半

    .box{width: 400px;height:200px;background-color: pink;/* border-radius: 30px; */border-radius: 100px ;}

 4、溢出部分显示效果  overflow

 溢出部分:盒子内容部分所超出盒子范围的区域

场景:控制内容溢出部分的显示效果,如:显示、隐藏、滚动条.....

属性名:overflow

常见属性值:

 

 

    .box{width: 400px;height:200px;background-color: pink;overflow: auto;}

 5、元素本身隐藏

场景:让某元素本身在屏幕中不可见,如鼠标hover之后元素隐藏;

常见属性:visibility:hidden  /   display:none;

区别:

visibility:hidden 隐藏元素本身,并且在网页中  占位置

display:none 隐藏元素本身,在网页中  不占位置; 

 注意点:开发中经常会通过display 属性完成元素的显示隐藏切换;

display:none ——隐藏;/  display:block;——显示;


案例:默认son元素隐藏,当鼠标移入father后让son元素显示




导航二维码显示隐藏切换

关键代码如下,其余代码同上:

    .nav .app .code{position: absolute;left:50%;transform: translateX(-50%);top: 40px;border: 1px solid #ccc;display: none;}.nav .app:hover .code{display: block;}

6、元素整体透明度

场景:让某元素整体(包括内容)一起变透明;

属性名:opacity

属性值:0~1之间的数字;1表示完全不透明;0表示完全透明;

注意点:opacity 会让元素整体透明,包括里面的内容,如:文字,子元素等....

    .box{width: 400px;height:400px;background-color: pink;opacity:0.5;}

 7、边框合并

场景:让相邻表格边框进行合并,得到细线边框效果

border-collapse:collapse;

效果如下:

 

   table{width: 250px;height: 150px;border: 1px solid #000;border-collapse: collapse;}th,td{border: 1px solid #000;text-align: center;}

8、用CSS画三角形

实现原理:利用盒子边框完成;

实现步骤:设置一个盒子,设置四周不同颜色的边框;将盒子宽高设置为0,仅保留边框。

通过调整不同边框的宽度,可以调整三角形的形态;

.box{width: 200px;height: 200px;background-color: rgba(0, 0, 0,0);border-top:100px solid red;border-right:100px solid blue;border-bottom:100px solid orange;border-left:100px solid yellow;width: 0px;height: 0px;border-right:50px solid rgba(0, 0, 0,0);border-bottom:100px solid rgba(0, 0, 0,0);border-left:50px solid rgba(0, 0, 0,0);
}

三、选择器拓展

1、链接伪类选择器

常用于选中超链接的不同状态

注意点:

如果需要同时实现以上四种伪类状态效果,需要按照LVHA顺序书写;

:hover伪类选择器使用更为频繁,常用于选择各类元素的悬停状态;

2、焦点伪类选择器

场景:用于选中元素获取焦点时的状态,常用于表单控件;

input:focus{

        background-color:sky blue;

}

效果:表单控件获取焦点时默认会显示外部轮廓线;

3、属性选择器

通过元素上的HTML属性来选择元素,常用于选择input 标签

 


昵称:
密码:


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部