最近在学习html5以及css3,在这里记录一下学到的一些新的属性,部分内容来自:http://www.w3school.com.cn

box-sizing盒子尺寸

box-sizing规定了盒子的计算方式,常用于消除hover时,盒子之间的影响,有三个属性:

box-sizing: content-box|border-box|inherit

content-box:默认值,表示盒子的尺寸为加上边框以及内边距之后的大小
border-box:规定了盒子的大小就是盒子的width以及height
inherit:表示盒子继承父元素box-sizing的值,示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
      .box{
        width: 200px;
        height: 200px;
        border: 20px solid red;
        padding: 20px;
        background-color: yellow;
        /*此时盒子尺寸为宽度加高度加内边距加边框,为280x280*/
        /*box-sizing: content-box;*/
        /*此时盒子尺寸为width以及height的值,为200x200*/
        box-sizing: border-box;
      }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

background-image多背景

background-image可以设置多背景,常用于把一张图切成几张图,当成背景,用于网站图片加载可以减轻网站的访问压力,用法如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>多背景</title>
    <style>
        .box{
          width: 623px;
          height: 417px;
          background-repeat: no-repeat;
          /*多张图片用逗号隔开*/
          background-image: url(images/bg1.png),
                            url(images/bg2.png),
                            url(images/bg3.png),
                            url(images/bg4.png),
                            url(images/bg5.png);
          background-position: left top,
                              right top,
                              right bottom,
                              left bottom,
                              center center;
        }

    </style>

</head>

<body>
    <div class="box"></div>
</body>

</html>

background-size背景尺寸

background-size可以实现修改背景的尺寸

background-size: length|percentage|cover|contain;

length:表示可以用长度宽度设置背景的尺寸
percentage:表示可以用百分比设置背景的尺寸
以上两种一般是设置两个值,如果只设置一个值,则另一个值为自动
cover:保证图片填充满元素,不管图片是否完整
contain:保证图片完整显示,不保证是否填充满元素,示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box {
      width: 500px;
      height: 500px;
      box-shadow:  0 0 1px #000;
      background-image: url("./images/1.jpg");
      background-repeat: no-repeat;
      background-size: contain;
    }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

background-origin背景原点

background-origin规定了background-position定位的位置

background-origin: padding-box|border-box|content-box;

border-box:从边框开始定位
padding-box:从内边距开始定位
content-box:从盒子内容开始定位,示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box {
      width: 400px;
      height: 400px;
      border: 20px solid rgba(255,0,0,0.5);
      padding: 20px; 
      background-repeat: no-repeat;
      background-image: url("./images/54.jpg");
      background-origin: content-box;
    }
  
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

background-clip背景裁切

background-clip控制背景显示多大的区域

background-clip: border-box|padding-box|content-box;

border-box:控制图片在border以内的区域也显示
padding-box:控制图片在padding以内的区域也显示
content-box:控制图片在内容以内的区域显示,示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box {
      width: 363px;
      height: 219px;
      border: 20px solid rgba(255, 0, 0, 0.5);
      padding: 20px;
      background-repeat: no-repeat;
      background-origin: border-box;
      background-image: url("./images/54.jpg");
      background-clip: content-box;
    }
  </style>
</head>

<body>
  <div class="box"></div>
</body>
</html>

transition过渡

过渡: 就是给改变添加过程

transition: property duration timing-function delay;

transition-property:规定设置过渡效果的 CSS 属性的名称。
transition-duration:规定完成过渡效果需要多少秒或毫秒。
transition-timing-function:规定速度效果的速度曲线。
transition-delay:定义过渡效果何时开始。代码如下;

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>过渡</title>
  <style>
      .box {
        width: 20px;
        height: 80px;
        background-color: red;
        /*简单写法*/
        /*transition: all 1s;*/
        /*专业写法*/
        transition-property:width;
        transition-duration: 1s;
        transition-delay: 1s;
        transition-timing-function: ease-in;
        /* linear 线性  匀速运动 */
        /* ease   先快后慢 */
        /* ease-in-out  先慢 后快 最后慢 */
        /* ease-out  越来越慢 */
        /* ease-in   越来越快 */
      }

      .box:hover {
        width: 800px;
        background-color: green;
      }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

transform 2D转换

transform方法有很多,下面介绍几种最基础的:

transform: translate(x,y);位置偏移,参数为偏移的距离
transform:  rotate(0deg);角度偏移,参数为旋转角度,正负对应顺逆时针
transform: scale(0.5);缩放转换,参数大于1则放大,小于1则缩小
transform-origin:left top;设置转换原点,参数可以是px或者百分比
transform: skew(x, y);参数分别问沿着x轴以及y轴倾斜的角度

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
      .box {
        width: 200px;
        height: 200px;
        background-color: red;
        transform:rotate(100deg);
      }
      .box2 {
        width: 200px;
        height: 200px;
        background-color: red;
         transform: translate(200px, 300px);
      }
      .box3 {
        width: 200px;
        height: 200px;
        background-color: red;
        transition: all 2s;
      }
      .box3:hover{
        width: 200px;
        height: 200px;
        background-color: red;
        transform: scale(0.5);
      }
      .box4{
        position: absolute;
        top: 50%;
        left: 50%;
        margin-left: -155px;
        margin-top: -219px;
        width: 310px;
        height: 438px;
      }
      img{
      width: 200px;
      position: absolute;
      bottom: 0;
      left: 0;
      box-shadow:  0 0 1px #f7f7f7;
      transition: all 1s;
      transform-origin: left top;
      }
      .box4:hover img:nth-child(1){
        transform: rotate(60deg);
      }
      .box4:hover img:nth-child(2){
        transform: rotate(120deg);
      }
      .box4:hover img:nth-child(3){
        transform: rotate(180deg);
      }
      .box4:hover img:nth-child(4){
        transform: rotate(240deg);
      }
      .box4:hover img:nth-child(5){
        transform: rotate(300deg);
      }
      .box4:hover img:nth-child(6){
        transform: rotate(360deg);
      }
      .box5{
        width: 300px;
        height: 300px;
        background-color: yellow;
        margin-left: 1100px;
        transform: skew(152deg,60deg);
      }
  </style>
</head>
<body>
  <div class="box"></div>
  <div class="box2"></div>
  <div class="box3"></div>
  <div class="box4">
    <img src="./images/pk1.png" alt="">
    <img src="./images/pk1.png" alt="">
    <img src="./images/pk1.png" alt="">
    <img src="./images/pk1.png" alt="">
    <img src="./images/pk1.png" alt="">
    <img src="./images/pk1.png" alt="">
  </div>
  <div class="box5">
      66666666666666666666666
  </div>
</body>
</html>

动画

@keyframes:mymove 5s infinite 自定义动画名称
animation 将动画与 div 元素绑定
animation-iteration-count,控制动画的次数,infinite无数次
animation-delay 控制动画开始时间
animation-play-state 控制动画状态, paused(暂停) running(继续)
animation-direction: normal|alternate 控制动画播放是否循环
animation-fill-mode:forwards;控制动画结束时的状态 backwards(回到动画的初始状态) forwards(停留在动画的结束状态)
示例代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box {
      position: relative;
      width: 500px;
      height: 500px;
      border: 2px solid red;
      margin: 50px auto;
    }

    i {
      position: absolute;
      top: -9px;
      left: -9px;
      width: 18px;
      height: 18px;
      background-color: chartreuse;
      border-radius: 50%;
      animation: move 3s;l
      
    }

    @keyframes move{
      0% {
          transform: translate(0px,0px );
      }
      100%{
          transform: translate(500px,0px );
      }
    }
  </style>
</head>

<body>
  <div class="box">

    <i></i>
  </div>
</body>
</html>