CSS进阶(二)

104 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

8、定位

8.1 使用场景

1.可以解决盒子与盒子之间的层叠问题

·定位之后的元素层级最高,可以层叠在其他盒子上面

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

8.2使用方式

1.设置定位方式

属性名:position

常见属性值:

2.设置偏移值

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

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

8.2.1相对定位(relative)

相对定位position的属性值是什么?

·relative

1.相对定位是否需要配合方位属性实现移动?

·需要配合方位属性实现移动

2.相对定位的元素相对于谁进行移动?

·相对于自己原来位置进行移动

3.相对定位的元素在网页中是否占位置?

·在页面中占位置→没有脱标

ps:

如果left和right都有,以left为准;top和bottom都有以top 为准

8.2.2绝对定位(absolute)

1.先找已经定位的父级,如果有这样的父级就以这个父级为参照物进行定位;(此父级是广义的父级,就近查找父级,如果逐层找不到这样的父级就以浏览器为参考进行定位)

  1. 有父级,但父级没有定位,以浏览器窗口为参照为进行定位

特点:

1、脱标,不占位

2、改变标签的显示模式特点:具备行内块特点(在一行共存,宽高生效)

ps:实际应用中一般父级使用相对定位,子级使用绝对定位(子绝父相)

8.2.3 固定定位

代码:position:fixed;特点:

1.需要配合方位属性实现移动

2.相对于浏览器可视区域进行移动

3.在页面中不占位置→已经脱标

应用场景:

1.让盒子固定在屏幕中的某个位置

·box{
position:fixed;
  left:0;
  width:200px;
  height:200px;
  background-color:pink;
}

8.3定位居中

绝对定位的盒子不能使用左右margin auto居中

解决方法:按百分比移动50%后调整外边距

高级改法:使用CSS3中的transform

.box{
  /*1.绝对定位的盒子不能使用左右margin auto居中*/
  position:absolute;/*margin:e auto;*/
    /*1eft:5e%,整个盒子移动到浏览器中间偏右的位置*/
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    width:400px;
    height:300px;
    background-color:□pink;
}

8.4元素层级问题

1.不同布局方式元素的层级关系:

·标准流<浮动<定位

2.不同定位之间的层级关系:

·相对、绝对、固定默认层级相同

·此时HTML中写在下面的元素层级更高,会覆盖上面的元素

.z-index:整数;取值越大,显示顺序越靠上 ,z-index默认值是0

9、装饰

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

9.1垂直对齐方式

属性名:vertical-align

属性值

浏览器遇到行内和行内块标签当作文字处理,默认文字是按基线对齐

解决方法:

input{
  height:50px;
  box-sizing:border-box;
  vertical-align:middle;
}

9.2光标类型

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

属性名:cursor

常见属性值:

9.3边框圆角

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

属性名:border-radius

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

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

原理:

没给的位置代表跟对角取值相同

常见应用:

/*画一个正圆*/
1.盒子必须是正方形
2.设置边框圆角为盒子宽高的一半→border-radius50%
/*胶囊按钮*/
1.盒子要求是长方形
2.设置→border-radius:盒子高度的一半

9.4溢出部分显示效果

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

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

属性名:overflow

常见属性值

9.5元素本身隐藏

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

常见属性:

1.visibility:hidden(占位)

2.display:none(不占位)

例:

实现鼠标悬停时显示一个色块,鼠标不悬停时隐藏的效果:

 <style>
        .father {
            width: 200px;
            /* height: 200px; */
        }
        .son1{
           display: none;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
        .son2{
            width: 200px;
            height: 200px;
            background-color: green;
        }
        .father:hover .son1{
            display:block;
        }
    </style>

<body>
    <div class="father">
        <div class="son1"></div>
        <div class="son2"></div>
    </div>
   
</body>

9.6元素整体透明度

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

属性名:opacity

属性值:0~1之间的数字

·1:表示完全不透明

·0:表示完全透明

注意点:

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

ps内容

css书写顺序:

1.浮动/display

2.盒子模型:margin border padding宽度高度背景色

3.文字样式

好处是浏览器执行效率更高

4.控制placeholder的文字样式:

.选择器 input::placeholder{
    font-size: 14px;
    color:#bfbfbf;
}

\