前端——浮动+定位样式

一、浮动float------浮动是会使盒子脱离文档流

添加了浮动的元素

1.原本的位置不占用 脱离文档流

2.设置了浮动 就不支持auto自适应居中

3.文字会感受到浮动 跟着进行文字环绕效果 而不是浮动元素覆盖文字 文字和浮动处于同一层的关系

4.可以使行内元素支持 高宽设置 也支持上下外边距

5.可以按照自己设置 方向来进行移动

写法: 选择器{

float:属性值;

}

1.默认值: 没有浮动 none

2.left 元素向左浮动

3.right 元素向右浮动

/* 元素向左浮动 */

/* float: left; */

/* 元素向右浮动 */

float: right;

清楚浮动样式:

常用于解决父级高度塌陷问题:父级盒子不设置高度,默认是由里面的子级撑开,但是子级设置了浮动元素,浏览器在计算高度时不会把添加了浮动元素的子元素算进去 。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .wrap{
            width: 1000px;
            /* height: 500px; */

            /* overflow: hidden; */
            background-color: skyblue;
        }

        .box1{
            float: right;
            width: 300px;
            height: 300px;
            background-color: green;
        }

        .box2{
            float: left;
            width: 350px;
            height: 400px;
            background-color: pink;
        }

        .box3{
            float: left;
            /* float: right; */
            width: 350px;
            height: 450px;
            background-color: red;
        }

        .footer{
            width: 1000px;
            height: 500px;
            background-color: purple;
        }

        .clear{
            /* 清除浮动样式 */
            /* clear: left; 清除左浮动 */
            /* clear: right;  */

            /* 同时清除左右浮动 */
            /* clear: both; */
        }

        /* 用伪元素清除 wrap盒子的浮动 */
        .wrap::after{
            /* 开启伪元素  key */
            content: '';
            /* 伪元素是行内元素   变成块级元素  */
             display: block;
            /* 同时清除左右浮动 */
            clear: both;
        }
    </style>
</head>
<body>
      <div class="wrap">
           <div class="box1">左侧盒子</div>
           <div class="box2">中间盒子</div>
           <div class="box3">右侧盒子</div>

           <!-- 清除浮动样式 -->
           <div class="clear">

           </div>
      </div>

      <div class="footer">
         俺是底部内容盒子 
      </div>
</body>
</html>

实现效果:

二、定位样式------position

  1. 相对定位 position: relative;

a.不会脱离文档流 以自身左上角的位置来进行移动 原本的位置会继续保留

b.需要通过方位值来移动

c.不会影响元素自身 给块级元素设置相对定位 是支持auto自适应居中

/* 相对定位 */

position: relative;

  1. 绝对定位

a.脱离文档流 原地起飞

b.参考位置 以最近一个父级定位属性来移动 (如果说找不到最近的一个定位父级 那就找body 祖先元素 )

c.绝对定位 一般配合相对定位来使用 来达到一个 子绝父相 (父相子绝)的效果 子级是绝对定位 父级是相对定位 子级去参考 父级的相对定位来移动

d.可以让行内元素支持高宽 元素高宽默认不写为0 暂时不支持 auto自适应居中 (单独写不生效)

/* 绝对定位 */

position: absolute;

  1. 固定定位 position: fixed;

a.脱离文档流 参考位置是以浏览器窗口为准 来进行移动

b.使用方位值来移动 生效

c.margin:auto 失效

/* 固定定位 */

position: fixed;

  1. 粘性定位 position: sticky;

/* 粘性定位 */

position: sticky;

快速让子级盒子 在父级盒子里面 水平居中效果:

<!-- 给子级设置 -->

/* 第一种方法 */

/* position: absolute;

left: 0px;

right: 0px;

top: 0px;

bottom: 0px;

margin: auto; */

/* 第二种 */

/* position: absolute;

left: 50%;

top: 50%; */

/* 负自身宽度的一半 */

/* margin-left: -100px; */

/* 负自身高度的一半 */

/* margin-top: -100px; */

/* 这个写法相对于第二种 简写 优化写法 */

position: absolute;

left: calc(50% - 100px);

top: calc(50% - 100px);

5.定位层级 z-index 解决同级定位元素的覆盖问题 数字越大 越优先显示

  • 取值 数字越大越优先 默认值是 0/auto auto: 指的是你没写值

  • z-index 层数只允许写了定位属性元素使用

注意点: 方位值(left top right bottom ) 和 定位层级(z-index) 要配合定位属性使用

相关推荐
肥肠可耐的西西公主9 分钟前
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
前端·笔记·学习
大胖丫10 分钟前
vue 学习-vite api.js
开发语言·前端·javascript
孙桂月12 分钟前
ES6相关操作(2)
前端·javascript·es6
遇见很ok12 分钟前
js中 ES6 新特性详解
开发语言·javascript·es6
陈浩源同学12 分钟前
学习 TypeScript 栈和队列数据结构
前端·算法
我这一生如履薄冰~14 分钟前
简单封装一个websocket构造函数
前端·javascript·websocket
fangcaojushi14 分钟前
解决webpack5.54打包图片及图标的问题
前端·vue.js
海盗强14 分钟前
Webpack打包优化
前端·webpack·node.js
星之卡比*16 分钟前
前端面试题---vite和webpack的区别
前端·面试
没有晚不了安20 分钟前
1.13作业
开发语言·python