CSS定位装饰

一、定位

1、定位的基本介绍

① 网页常见布局方式

1.标准流
块级元素独占一行 → 垂直布局
行内元素/行内块元素一行显示多个 → 水平布局
2.浮动
可以让原本垂直布局的 块级元素变成水平布局
3.定位
可以让元素自由的摆放在网页的任意位置
一般用于盒子之间的层叠情况

②定位常用于

可以解决盒子与盒子之间的层叠问题:定位之后的元素层级最高,可以层叠在其他盒子上面
可以让盒子始终固定在屏幕中的某个位置

2、定位的基本使用

① 设置定位方式
➢ 属性名:position
➢ 常见属性值:
在这里插入图片描述
② 设置偏移值
➢ 偏移值设置分为两个方向,水平和垂直方向各选一个使用即可
➢ 选取的原则一般是就近原则 (离哪边近用哪个)
在这里插入图片描述

3、静态定位

➢ 介绍:静态定位是默认值,就是之前认识的标准流。

➢ 代码:position:static;

➢ 注意点:

  1. 静态定位就是之前标准流,不能通过方位属性进行移动
  2. 之后说的定位不包括静态定位,一般特指后几种:相对、绝对、固定

4、相对定位

➢ 介绍:相对于自己之前的位置进行移动
(如果left和right都有,以left为准,如果top和bottom都有,以top为准)
➢ 代码:position:relative;

➢ 特点:

  1. 需要配合方位属性实现移动
  2. 相对于自己原来位置进行移动
  3. 在页面中占位置 → 没有脱标
  4. 定位前后标签显示特点不改变,(div仍是块级元素,独占一行)

➢ 应用场景:

配合绝对定位组CP(子绝父相);
用于小范围的移动

5、绝对定位

➢ 介绍:相对于非静态定位的父元素进行定位移动
(①先找已经定位的父级,如果有这样的父级要以这个父级为参照物;
②有父级,但父级没有定位,以浏览器窗口为参照进行定位)

➢ 代码:position absolute;

➢ 特点:

  1. 在页面中不占位置 → 已经脱标
  2. 定位前后标签显示特点改变:具备行内块的特点(在一行共存,宽高生效)

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

子集绝对定位后,父级相对定位/绝对定位都可以,但是工作中一般使用相对定位,父元素是相对定位,则对网页布局影响最小
不一定必须是直系父元素,祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动

② 相对浏览器窗口顶部50,右边50

/* 无定位父元素 */
<style>
        .father{
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: #ff4;
        }
        .sun{
            width: 100px;
            height: 100px;
            background-color: aqua;
            position: absolute;
            right: 50px;
            top: 50px;
        }
    </style>
    
 <body>
    <div class="father">
        <div class="son">
            <div class="sun">

            </div>
        </div>
    </div>
</body>

在这里插入图片描述

① 相对父元素(黄色)顶部50,右边50

/*有定位的父元素*/
 <style>
        .father{
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: #ff4;
            position: relative;

        }
        .sun{
            width: 100px;
            height: 100px;
            background-color: aqua;
            position: absolute;
            right: 50px;
            top: 50px;
        }
    </style>
    
<body>
    <div class="father">
        <div class="son">
            <div class="sun">

            </div>
        </div>
    </div>
</body>

在这里插入图片描述

案例1 卡片模块的hot图标定位案例

➢ 需求:根据设计图,通过PxCook量取数据,在 day05-作业-卡片模块案例 基础上,定位hot图片完成一致的效果


/* 精品课程hot定位 */
.box .contant li{
    position: relative;
}
.box .contant li .hot{
    width: 40px;
    height: 24px;
    position: absolute;
    top: 4px;
    right: -4px;
}

在这里插入图片描述

案例2 子绝父相水平居中案

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

绝对定位后,所有标准流的规则都不适用,所以要使绝对定位的盒子居中不能用margin:0 auto;

  1. 子绝父相
  2. 先让子盒子往右移动父盒子的一半
    • left:50%
  3. 再让子盒子往左移动自己的一半
    • 普通做法:margin-left:负的子盒子宽度的一半
    缺点:子盒子宽度变化后需要重新改代码
    • 优化做法:transform:translateX(-50%)
    优点:表示沿着X轴负方向(往左)始终移动自己宽度的一半,子盒子宽度变化不需要更改代码
 <style>
        .father{
            width: 300px;
            height: 300px;
            background-color: pink;
            position: absolute;
            left: 50%;
            /* margin-left: -150px; */
            top: 50%;
            /* margin-top: -150px; */
            transform: translate(-50%,-50%);
        }
    </style>

在这里插入图片描述

案例3 导航二维码居中定位案例

➢ 需求:根据设计图,在 day06-作业-微金所导航案例 基础上,定位二维码图片完成一致的效果
在这里插入图片描述

ul li .app{
            position: relative;    
        }
ul li .code{
            position:absolute;
            left: 50%;
            transform: translate(-50%);
            top: 42px;
            }
<body>
    <div>
        <ul>
            <li><a href="#">我要投资</a></li>
            <li><a href="#">平台介绍</a></li>
            <li><a href="#">新手专区</a></li>
            <li><a href="#" class="app">手机微金所 <img src="./code.jpg" class="code"></a> </li>
            <li><a href="#">个人中心</a></li>
        </ul>
    </div>
</body>

案例4 底部半透明遮罩效果

➢ 需求:根据设计图,通过代码在网页中完成一致的效果
➢ 注意点:定位的元素会脱标(如:绝对定位),脱标后的元素宽高默认由内容撑开
在这里插入图片描述

<style>
        .banner{
            width: 1226px;
            height: 600px;
            margin: 0 auto;
            position: relative;
        }
        .mask{
            position: absolute;
            /* 绝对定位的盒子显示模式具有行内块的特点:加宽度高度生效,如果没有宽度也没有内容,宽度就是0 */
            width: 1226px;
            height: 150px;
            bottom: 0;
            left: 0;
            background-color: rgba(0,0,0,0.5);
        }
    </style>
    
<body>
    <div class="banner">
        <img src="./bg.jpg" alt="">
        <div class="mask"></div>
    </div>
</body>

这边自己用浮动试了一下,不过要把图片当背景图

6、固定定位

➢ 介绍:相对于浏览器进行定位移动

➢ 代码:position : fixed;

➢ 特点:
1.脱标,不占位置
2. 相对于浏览器可视区域进行移动
3. 定位后具有行内块特点

➢ 应用场景:
1.让盒子固定在屏幕中的某个位置

总结

在这里插入图片描述

7、元素的层级关系

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

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

(2) 更改定位元素的层级
➢ 场景:改变定位元素的层级

➢ 属性名:z-index

➢ 属性值:数字
• 数字越大,层级越高,默认值为0
(配合定位才生效)

二、装饰

1、垂直对齐方式

➢ 基线:浏览器文字类型元素排版中存在用于对齐的基线(baseline)
在这里插入图片描述
文字对齐问题:
➢ 场景:解决行内/行内块元素垂直对齐问题(浏览器遇到行内/行内块标签默认当文字处理)
➢ 问题:当图片和文字在一行中显示时,其实底部不是对齐的
在这里插入图片描述
垂直对齐方式:
➢ 属性名:vertical-align
➢ 属性值:
在这里插入图片描述
行内块和文字对齐或者行内块和行内块对齐,想要居中,都用middle。

(拓展)项目中 vertical-align 可以解决的问题
1.文本框和表单按钮无法对齐问题
2.input和img无法对齐问题
3.div中的文本框,文本框无法贴顶问题
4.div不设高度由img标签撑开,此时img标签下面会存在额外间隙问题
5.使用line-height让img标签垂直居中问题

➢ 注意点:
• 学习浮动之后,不推荐使用行内块元素让div一行中显示,因为可能会出现垂直对齐问题
• 推荐优先使用浮动完成效果

2、光标类型

➢ 场景:设置鼠标光标在元素上时显示的样式
➢ 属性名:cursor
➢ 常见属性值:
在这里插入图片描述

3、边框圆角

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

➢ 属性名:border-radius

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

➢ 原理:
在这里插入图片描述
➢ 赋值规则:从左上角开始赋值,然后顺时针赋值,没有赋值的看对角!

➢ 画一个正圆:
1.盒子必须是正方形
2.设置边框圆角为盒子宽高的一半 → border-radius:50%

➢胶囊按钮:
1.盒子要求是长方形
2.设置 → border-radius:盒子高度的一半

4、overflow溢出部分显示效果

➢ 溢出部分:指的是盒子 内容部分 所超出盒子范围的区域
在这里插入图片描述

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

➢ 属性名:overflow
➢ 常见属性值:
在这里插入图片描述

5、元素本身隐藏

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

➢ 常见属性:
1.visibility:hidden
2.display:none

➢ 区别:
1.visibility:hidden 隐藏元素本身,并且在网页中 占位置
2.display:none 隐藏元素本身,并且在网页中 不占位置

➢ 注意点:
• 开发中经常会通过 display属性完成元素的显示隐藏切换
• display:none;(隐藏)、 display:block;(显示)

导航二维码显示隐藏切换案例

➢ 需求:通过代码,在刚刚完成的 导航二维码居中定位案例 基础上,完成如效果图中元素显示隐藏切换效果

 ul li a:hover  img{
            display: block;
        }

要显示的是img,点在a上面然后显示img.

元素整体透明度

➢ 场景:让某元素整体(包括内容)一起变透明
➢ 属性名:opacity
➢ 属性值:0~1之间的数字
• 1:表示完全不透明
• 0:表示完全透明
➢ 注意点:
• opacity会让元素整体透明,包括里面的内容,如:文字、子元素等……

三、选择器拓展

1、 链接伪类选择器

➢ 场景:常用于选中超链接的不同状态
➢ 选择器语法:
在这里插入图片描述
➢ 注意点:
• 如果需要同时实现以上四种伪类状态效果,需要按照 LVHA 顺序书写
记忆口诀:男盆友送了你一个 LV 包包,你开心的 HA 哈笑
• 其中 :hover伪类选择器 使用更为频繁,常用于选择各类元素的悬停状态

2、焦点伪类选择器

➢ 场景:用于选中元素获取焦点时状态,常用于表单控件 :focus { }
➢ 选择器语法:
在这里插入图片描述
➢ 效果:选中时:
在这里插入图片描述

3、 属性选择器

➢ 场景:通过元素上的HTML属性来选择元素,常用于选择 input 标签
➢ 选择器语法:
在这里插入图片描述
➢ 选中页面中所有的文本框:input[type=“text”] { }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值