CSS篇.day04-单位,流式布局,弹性布局(flex),网格布局,渐变,变形与过渡

目录

1. 单位

2.流式布局

3.弹性布局(flex)

4.网格布局

5.渐变

6.变形与过渡


1. 单位

  • px:  绝对单位  像素
  • em:  相对单位  基准点为父节点字体大小  若自身定义了font-size按自身来计算(一般浏览器默认16px)
  • rem: 相对单位  相对根节点html的字体大小, css3新增属性, 根元素相对设备尺寸自动变换,Chrome/firefox/ie9+支持
  • 注意: Chrome强制最小字体为12px, 当html的字体大小设置为10px时, 显示12px, rem计算还是以12px为准

宽高:

  • vw/vh: viewpoint width/height, 视窗的宽/高度,  1vw/vh 等于视窗宽度的1%
  • vmin/vmax: vw和vh中较小/大的那个
  • vw兼容性: ie9-11,opera浏览器不支持

2.流式布局

  •  一种等比例缩放布局方式, 在CSS代码中使用百分比来设置宽度, 也称百分比自适应的布局
  • 实现方法是将CSS固定像素宽度换算为百分比宽度。换算公式如下: 目标元素宽度 / 父盒子宽度 = 百分数宽度
<style type="text/css">
    *{
      margin: 0;
      padding: 0;
    }
    header{
      width: 100%;
      height: 10vh;
      background-color: rgb(250, 223, 223);
    }
    nav{
      height: 5vh;
      background-color: rgb(244, 197, 197);
    }
    section{
      overflow: hidden;
    }
    main{
      float: right;
      width: 80%;
      height: 80vh;
      background-color: rgb(235, 175, 175);
    }
    aside{
      float: left;
      width: 15%;
      height: 80vh;
      background-color: rgb(248, 164, 164);
    }
    footer{
      height: 5vh;
      background-color: rgb(249, 161, 161);
    }
  </style>

<body>
  <!-- 流式布局 
  一种等比例缩放布局方式,在CSS代码中使用百分比来设置宽度,也称百分比自适应的布局。 
  实现方法是将CSS固定像素宽度换算为百分比宽度。换算公式如下: 目标元素宽度 / 父盒子宽度 = 百分数宽度-->

  <header>header</header>
  <nav>nav</nav>
  <section>
    <main>main</main>
    <aside>aside</aside>
  </section>
  <footer>footer</footer>
</body>

3.弹性布局(flex)

  • 采用flex布局的元素, 为 flex容器    
  • display属性: flex(块级flex容器)或 inline-flex(类似 inline-block的行内块级flex容器)
  • 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)
  • 项目(子元素)默认沿主轴排列
  • 当一个元素设置了Flex布局以后,其子元素的 float、clear 和 vertical-align 等属性将失效
 <style type="text/css">
    .main{
      /* width: 700px; */
      height: 700px;
      background-color: rgb(246, 133, 133);

      /* flex布局  弹性布局
          采用flex布局的元素, 为 flex容器     
          display属性: flex(块级flex容器)或 inline-flex(类似 inline-block的行内块级flex容器)
          容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)
          项目(子元素)默认沿主轴排列
          当一个元素设置了Flex布局以后,其子元素的 float、clear 和 vertical-align 等属性将失效
      */
      display: flex;

      /* 主轴项目排列方式 默认row从左往右  */
      flex-direction: row ;   /* row-reverse 水平方向从右往左  column沿垂直方向从上到下   column-reverse沿垂直方向从下到上*/

      /* 换行方式  */
      flex-wrap: wrap;  /* 默认nowrap不换行   wrap换行 */

      /* 排列及换行简写 */
      /* flex-flow: column wrap; */

      /* 元素主轴对齐方式 */
      /* 
          flex-start 	默认值,左对齐
          flex-end 	右对齐
          center 	居中
          space-between 	两端对齐,项目之间的间隔是相等的
          space-around 	每个项目两侧的间隔相等
          initial 	将此属性设置为属性的默认值
          inherit 	从父元素继承属性的值
      */ 
      justify-content: space-between; 

      /* 元素侧轴(纵轴)对齐方式 */
      /*     
          stretch 	默认值,项目将被拉伸以适合容器
          center 	项目位于容器的中央
          flex-start 	项目位于容器的顶部
          flex-end 	项目位于容器的底部
          initial 	将此属性设置为属性的默认值
          inherit 	从父元素继承属性的值
       */
      align-items: center;

      /* 与justify-content属性类似   在弹性盒子的侧轴还有多余空间时调整容器内项目的对齐方式   */
      /* 
        stretch 	默认值,将项目拉伸以占据剩余空间
        center 	项目在容器内居中排布
        flex-start 	项目在容器的顶部排列  (如果翻转换行, 则底部对齐 )
        flex-end 	项目在容器的底部排列
        space-between 	多行项目均匀分布在容器中,其中第一行分布在容器的顶部,最后一行分布在容器的底部
        space-around 	多行项目均匀分布在容器中,并且每行的间距(包括离容器边缘的间距)都相等
        initial 	将此属性设置为属性的默认值
        inherit 	从父元素继承该属性的值
      */
      /* align-content: center; */

    }
    .main div{
      width: 250px;
      height: 250px;
      background-color: rgb(238, 172, 172);
    }
    .main div:first-child{
      /* 设置项目在容器中出现的顺序  默认为 0*/
      order: 0;
      /*  为某个项目设置不同于其它项目的对齐方式,可以覆盖 align-items 属性的值*/
      /* 
        auto 	默认值,表示元素将继承其父容器的 align-items 属性值,如果没有父容器,则为“stretch”
        stretch 	项目将被拉伸以适合容器
        center 	项目位于容器的中央
        flex-start 	项目位于容器的顶部
        flex-end 	项目位于容器的底部
        baseline 	项目与容器的基线对齐
        initial 	将此属性设置为属性的默认值
        inherit 	从父元素继承属性的值
      */
      align-self: auto;

      /*  flex-grow、flex-shrink 和 flex-basis 三个属性的简写 */
      /* 
          flex-grow:(必填参数)一个数字,用来设置项目相对于其他项目的增长量,默认值为 0;
          flex-shrink:(选填参数)一个数字,用来设置项目相对于其他项目的收缩量,默认值为 1;
          flex-basis:(选填参数)项目的长度,合法值为 auto(默认值,表示自动)、inherit(表示从父元素继承该属性的值) 或者以具体的值加 "%"、"px"、"em" 等单位的形式。

          另外,flex 属性还有两个快捷值,分别为 auto(1 1 auto)和 none(0 0 auto
      */
      flex: 1;  /* 可设置占多少份 */
    }
    
  </style>

4.网格布局

display: grid;

    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        div.gridCls {
            display: grid;
            /* 设置每一列的宽度  fr占几份 */
            grid-template-columns: 1fr 2fr 2fr 1fr;
            /* 设置每一行的高度 */
            grid-template-rows: 200px 100px;  
        }

        div.gridCls div {
            background-color: rgb(240, 178, 178);
            text-align: center;
            padding: 20px;
            border: 2px solid rgb(239, 239, 161);
        }     
    </style>

5.渐变

  <style>
    div{
      width: 500px;
      height: 200px;
      border: 1px solid bisque;
    }

    div.div1{
      /* 线性渐变 */
      background-image: linear-gradient(to right, pink, skyblue, rgb(243, 243, 177));
    }
    div.div2{
      /* 对角线渐变 */
      background-image: linear-gradient(to top right, pink, skyblue, rgb(243, 243, 177));
    }
    div.div3{
      /* 角度渐变   水平线与渐变线之间的角度, 逆时针计算 */
      background-image: linear-gradient(175deg, pink, skyblue, rgb(243, 243, 177));
    }
    div.div4{
      /* 重复性线性渐变   百分比 确定重复多少次*/
      background-image: repeating-linear-gradient(75deg, pink, skyblue, rgb(243, 243, 177) 25%);
    }
    div.div5{
      /* 径向渐变   默认情况下,渐变的中心是 center(表示在中心点),渐变的形状是 ellipse(表示椭圆形),渐变的大小是 farthest-corner(表示到最远的角落)  */
      background-image: radial-gradient(circle at 40px, pink 20%, skyblue 60%, rgb(243, 243, 177) 20%)
    }
  </style>

放一个效果图叭(其实我是想拥有一封面嘿嘿嘿~~~)

6.变形与过渡

2D时,通常设置x,y轴两个方向的变化.

  <style>
    div{
      width: 200px;
      height: 200px;
      background-color: pink;
    }
    div:hover{
        width: 400px;
        /* 移动 */
        transform: translate(0, 200px);
        /* 旋转 */
        transform: rotate(30deg);
        /* 放大或缩小 */
        transform: scale(2,3);
        /* 倾斜 */
        transform: skew(30deg, 50deg);
        /* 过渡 */
        transition: transform 2s, width 4s;  /* 转换效果, 2s内完成,  宽度变化4s完成*/
    }
  </style>

PreviousNotes:

https://mp.csdn.net/mp_blog/creation/editor/124712091

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mteee.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值