09-CSS定位装饰

目录

一、定位

1)使用定位步骤

2)相对定位

3)绝对定位

4)定位-居中

5)案例banner

6)固定定位

7)元素的层级关系

二、装饰

1)垂直对齐方式

1.认识基线

 2.垂直对齐方式

2)光标类型

3)边框圆角

4)overflow溢出部分显示效果

5)元素本身隐藏

6)案例-二维码显示隐藏

三、选择器(拓展)元素整体透明度


一、定位

目标:能够说出 定位 的常见应用场景,并且能够说出 不同定位方式 的特点

作用:

  • 可以解决盒子与盒子之间的层叠问题
  • 可以让盒子始终固定在屏幕中的某个位置

1)使用定位步骤

1.设置定位方式

        属性名:position

        常见属性值:

定位方式属性值
静态定位static
相对定位relative
绝对定位absolute
固定定位fixed

2.设置偏移值

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

        选取的原则一般是就近原则

2)相对定位

(相对于自己之前的位置进行移动 不改变标签的显示模式特点)

position:relative;

特点:

  •            需要配合方位属性实现移动
  •            相对于自己原来位置进行移动
  •            在页面中占有原来位置——没有脱标

场景:

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

3)绝对定位

(相对于非静态定位的父元素进行定位移动 改变标签的显示模式特点)

position:absolute;

特点:

  •            先找已经定位的父级,如果有这样的父级就以这个父级为参照物进行定位;
  •            有父级,但没有定位,以浏览器窗口为参照物定位
  •            需要配合方位属性实现移动
  •            默认相对于浏览器可视区域进行移动
  •            在页面中不占位置——已经脱标

场景:

  •            配合绝对定位组CP(子绝父相

4)定位-居中

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

 <style>
        .box{
            /* 标准流用margin-auto居中 定位用left-50%居中  */

            position: absolute;
            /* left: 50%; 整个盒子i东到浏览器中间偏右的位置 */
            left: 50%;
            /* 将盒子向左侧移动,自己宽度的一般来居中 */
            margin-left: -150px;

            top: 50%;
            margin-top: -150px;

            width: 300px;
            height: 300px;
            background-color: yellow;
        }

transfrom: translate( );

实现位移:自己高度宽度的一半

(改变width / height时,自动计算,减少重复改代码的工作量)

    <style>
        .box{
            /* 标准流用margin-auto居中 定位用left-50%居中  */

            position: absolute;
            /* left: 50%; 整个盒子i东到浏览器中间偏右的位置 */
            left: 50%;
            /* 将盒子向左侧移动,自己宽度的一般来居中 */
            /* margin-left: -150px; */

            top: 50%;
            /* margin-top: -150px; */

            /* 位移:自己宽度高度的一半 */
            transform: translate(-50%, -50%);

            width: 300px;
            height: 300px;
            background-color: yellow;
        }
    </style>

5)案例banner

(底部半透明遮罩效果)

注意点:定位的元素会脱标(如:绝对定位),脱标后的元素宽高默认由内容撑开

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .banner{
            position: relative;
            margin: 0 auto;

            width: 1226px;
            height: 600px;
        }

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

</body>
</html>

6)固定定位

(相对于浏览器进行定位移动)

position:fixed;

特点:

  •            需要配合方位属性实现移动
  •            相对于浏览器可视区域进行移动
  •            在页面中不占位置——已经脱标

7)元素的层级关系

元素层级问题

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

  •         标准流<浮动<定位

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

  •         相对、绝对、固定默认层级相同
  •         此时HTML中写在下面的元素层级更高,会覆盖上面的元素(后来者居上)

z-index:整数;

取值越大,显示顺序越靠上

默认值为0 必须配合定位才生效

二、装饰

1)垂直对齐方式

1.认识基线

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

 2.垂直对齐方式

属性名:vertical-align

baseline默认,基线对齐
top顶部对齐
middle中部对齐
bottom底部对齐

注意:

浏览器把行内行内块标签当作文字处理,默认基线对齐。

所以另外还有解决方法:转为块级元素

2)光标类型

(设置鼠标光标在元素上时显示的样式)

属性名:cursor

default默认值,通常是箭头
pointer小手效果,提示用户可以点击
text工字型,提示用户可以选择文字
move十字光标,提示用户可以移动

3)边框圆角

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

属性名:border-radius

数字+px、百分比

常见应用:

  • 正圆(头像…)——正方形盒子宽高的一半(border-radius: 50%;)
  • 胶囊按钮——长方形盒子(border-radius: 盒子高度的一半;)

4)overflow溢出部分显示效果

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

 属性值:overflow

visible默认值,溢出部分可见
hidden溢出部分隐藏
scroll无论是否溢出,都显示滚动条
auto根据是否溢出,自动显示或隐藏滚动条

5)元素本身隐藏

常见应用:子菜单

常见属性:

visibility: hidden(占位)

display:none(不占位)

6)案例-二维码显示隐藏

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    /* 因为有通栏:占满一行的边框,所以需要有一个通栏:占满一行的盒子 */
    .nav {
      height: 40px;
      border-bottom: 1px solid #ccc;
    }

    /* 因为ul中所有的内容都是在网页的宽度固定并且水平居中的盒子内部,所以设置ul为宽度固定并且水平居中的效果(后面项目中所用到的版心) */
    ul {
      list-style: none;
      width: 1200px;
      margin: 0 auto;
    }

    ul li {
      float: left;
      width: 20%;
      height: 40px;
      border-right: 1px solid #ccc;
      /* 自动内减 */
      box-sizing: border-box;
      text-align: center;
      line-height: 40px;
    }

    ul .last {
     border-right: none;
    }

    ul li a {
      /* a标签默认是行内元素,宽高由内容撑开,并且无法设置宽高,此时默认情况用户只能点击文字区域才能调整 */
      /* 如果把a标签转换成块级元素,此时可以设置宽高,会让a标签范围更大,用户可以点击调整的区域也越大 */
      display: block;
      /* 宽度不设置块元素会默认占满一行 */
      height: 40px;
      text-decoration: none;
      color: #000;
    }

    ul li .app {
      position: relative;
    }

    .code {
      position: absolute;
      left: 50%;
      top: 41px;

      /* 隐藏二维码 */
      display: none;

      transform: translate(-50%);
    }

    /* 鼠标悬停a 显示二维码图片 */
    .nav li a:hover img {
        display: block;
    }
  </style>
</head>
<body>
  <!-- 导航 -->
  <div class="nav">
    <ul>
      <li><a href="#">我要投资</a></li>
      <li><a href="#">平台介绍</a></li>
      <li><a href="#">新手专区</a></li>
      <!-- 因为用户鼠标放在二维码图片上也能跳转,所以证明img也是在a的范围内,因此把img写在a标签的内部 -->
      <li><a href="#" class="app">手机微金所 <img src="../code.jpg" alt="" class="code"> </a></li>
      <li class="last"><a href="#">个人中心</a></li>
    </ul>
  </div>

</body>
</html>

三、选择器(拓展)元素整体透明度

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

属性名:opacity

属性值:0~1数字

0: 完全透明

1: 完全不透明

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 400px;
            height: 400px;
            background-color: green;

            opacity: 0.5;
        }
    </style>
</head>
<body>
    <div>
        <img src="../cat.gif" alt="">
        文字透明吗
    </div>
</body>
</html>

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

biank trrrry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值