【JAVA】CSS定位与CSS3属性、渐变、CSS3字体、2D变换

1 定位

1.1 相对定位

相对定位没有脱离文档流

定位元素的显示层级比普通元素高

定位元素可以通过margin,float调整位置,但不推荐

包含块:父元素

left和right同时写,右失效

上下同时写,下失效

java 复制代码
<head>
        <style>
         *{
                margin: 0;
                padding:0;
         }
         .outer{
                width: 500px;
                border:1px solid black;
                background-color: chocolate;
                padding: 20px;
         }
         .box{
                width: 80px;
                height: 80px;
         }
         .box1{
                background-color: aqua;
         }
         .box2{
                background-color: brown;
                position: relative;
                /* 正值离left多少距离 */
                left:100px;
                bottom:100px;
         }
         .box3{
                background-color: yellowgreen;
         }
        </style>
</head>
<body>
        <div class="outer">
                <div class="box box1"></div>
                <div class="box box2"></div>
                <div class="box box3"></div>
        </div>
</body>

在box2中加入:

java 复制代码
float: left;

1.2 绝对定位

绝对定位脱离文档流

绝对定位+浮动:浮动失效

绝对定位+margin:可以但不推荐

包含块:第一个拥有定位的祖先元素,没有就是页面元素

子绝父相:这样父亲就可以管理儿子

子元素想在宽度上和父元素对齐,定位后left:0,right:0,全铺满,top:0,bottom:0

java 复制代码
 <style>
      .outer{
        width: 500px;
        background-color: aqua;
        border: 1px solid red;
        padding: 20px;
        position:relative;
      }
      .box{
        width: 200px;
        height: 100px;
        font-size: 20px;
      }
      .box1{
        background-color: blue;
      }
      .box2{
        background-color: rgb(110, 238, 6);
        /* 绝对定位脱离文档流,与浮动不同,浮动是文字环绕图片或文字环绕文字,浮动会把3 t出来 */
        position:absolute;
      }
      .box3{
        background-color: rgb(248, 17, 232);
      }
      /* 鼠标碰到盒子,box2盒子往右移动显示出box3 */
      .outer:hover .box2{
        left:220px;
      }
        </style>
</head>     
<body>
       <div class="outer">
        <!-- 对box1,box3,outer是包含块 -->
        <!-- 对box2,如果outer的css里面有position:relative;那么outer是包含块,否则html是包含块 -->
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>

       </div>
</body>

1.3 固定定位

参考点:视口(红色框内部分)

java 复制代码
position:fixed;

1.4 粘性定位

参考点:第一个有滚动机制的祖先元素

不脱离文档流

粘性定位+浮动:可以但不推荐

粘性定位+margin:可以但不推荐

java 复制代码
<!DOCTYPE html>

<html lang="en">
<head>
        <style>
        *{
        margin: 0;
        padding: 0;
      }
      .page-header{
        height: 100px;
        background-color: orange;
        text-align: center;
        line-height: 100px;
      }
      .item{
        background-color: #ccc;
      }
      .first,.second,.third{
        background-color: skyblue;
        position: sticky;
        /* 参考点:离它最近的能滚动的祖先元素 */
        /* 此处是content的div */
        top: 0px;
      }
      .body{
        height: 2000px;
      }
      .content{
        height: 200px;
        overflow: scroll;
      }
        </style>
</head>
<body>
        <div class="page-header">头部</div>
        <div class="content">
          <div class="item">
            <div class="first">Aa      </div> 
              <h1>a1</h1>
              <h1>a2</h1>
              <h1>a3</h1>
              <h1>a4</h1>
              <h1>a5</h1>
              <h1>a6</h1>
              <h1>a7</h1>
              <h1>a8</h1>
            </div>
            <div class="item">
            <div class="first">Ab   </div>     
              <h1>b1</h1>
              <h1>b2</h1>
              <h1>b3</h1>
              <h1>b4</h1>
              <h1>b5</h1>
              <h1>b6</h1>
              <h1>b7</h1>
              <h1>b8</h1>
            </div>
              <div class="item">
            <div class="first">Ac        </div>   
              <h1>c1</h1>
              <h1>c2</h1>
              <h1>c3</h1>
              <h1>c4</h1>
              <h1>c5</h1>
              <h1>c6</h1>
              <h1>c7</h1>
              <h1>c8</h1>
            </div>
          </div>
      
</body>

</html> 

效果: 划完一个item内容蓝条换下一个

1.5 定位层级

java 复制代码
//通过z-index调整该块的定位层级
z-index:n;

同级定位,后来者居上

CSS3

2 浏览器私有前缀

Can I use... Support tables for HTML5, CSS3, etc查浏览器能不能支持css3和h5新特性

Chrome、Edge、Safari浏览器内核:-webkit-

eg:-webkit-border-radius:20px

3 长度单位

rem:根元素字体大小倍数

10vm:视口宽度的10%

10vh:视口高度的10%

4 盒子属性

4.1 怪异盒模型

java 复制代码
<head>
        <style>
        .box1{
          width: 200px;
          height: 200px;
          padding: 100px;
          background-color: aqua;
        }
        .box2{
          width: 200px;
          height: 200px;
          padding: 100px;
          box-sizing: border-box;
          background-color: brown;
        }
        </style>
</head>
<body>
        <div class="box1"></div>
        <div class="box2"></div>
</body>

4.2 resize

java 复制代码
<head>
        <style>
        .box1{
          width: 200px;
          height: 200px;
          padding: 100px;
          background-color: aqua;
          /* 水平方向上可以调,也可垂直方向:vertical */
          resize: horizontal;
          /* resize属性起作用必须有overflow */
          overflow: hidden;
        }
        </style>
</head>
<body>
        <div class="box1"></div>
</body>

4.3 box-shadow

java 复制代码
        <style>
        .box1{
          width: 200px;
          height: 200px;
          background-color: aqua;
          margin: 200px;
          /* 阴影1,水平|垂直 
          box-shadow:10px 10px; */
          /* 阴影2 
          box-shadow: 20px 20px red; */
          /* 阴影3 ,5px为模糊程度
          box-shadow: 20px 20px 5px red; */
          /* 阴影4
          box-shadow: 20px 20px 5px; */
          /* 阴影5 100px为外延值 
           box-shadow: 20px 20px 5px 100px red ; */
           /* 阴影6,inset为内阴影
           box-shadow: 20px 20px 5px 100px red inset; */
           position: relative;
           top: 0;
           left: 0;
           transition: 1s linear all;
        }
          .box1:hover{
            box-shadow: 20px 20px 5px  red ;
            top: -1px;
            left: 0;
          }
        </style>
</head>
<body>
        <div class="box1"></div>
</body>

4.4 opacity

java 复制代码
<head>
        <style>
        .box2{
          position: relative;
          width: 150px;
        }
        span{
          /* 把文字放到图片上面 */
          position: absolute;
          /* 左上角 */
          top: 0;
          left: 0;
          color: red;
          width: 100%;
          background-color: white;
          opacity: 0.5;
        }
        .box2 img{
          width: 150px;
          height: 150px;

        }
        </style>
</head>
<body>
        <diV class="box2">
          <img src="./image/favicon.ico">
          <span>彭于晏</span>
        </diV>
</body>

5 背景属性

5.1 background-origin

5.2 background-clip

java 复制代码
<head>
        <style>
        .box1{
          width: 500px;
          height: 500px;
          background-color: aqua;
          background-image: url('./image/landscape.png');
          font-size: 100px;
          background-clip: text;
          /* background-clip: text;生效必需条件 */
          color:transparent
        }
        
        
        </style>
</head>
<body>
        <div class="box1">盒子测试</div>
</body>
java 复制代码
<head>
        <style>
        .box1{
          width: 500px;
          height: 500px;
          background-color: aqua;
          padding: 50px;
          background-image: url('./image/landscape.png');
          font-size: 100px;
          /* 只留下content内容区的图片 */
          background-clip:content-box;
          border:5px dotted red;
        }
        </style>
</head>
<body>
        <div class="box1">盒子测试</div>
</body>

5.3 background-size

java 复制代码
<head>
        <style>
        .box1{
          width: 500px;
          height: 500px;
          background-color: aqua;
          background-image: url('./image/landscape.png');
          /* 1.background-size: 400px 400px; */
          /* 2.background-size: 100% 100%;参考父辈的宽高 */
          /* 3.background-size: auto;默认 */
          background-repeat: no-repeat;
          /* contain为等比缩放,让图片的宽或高与容器的宽或高相等,可能不能铺满 */
          background-size:contain;
          /* 全铺满 
          background-size:cover; */
        }
        </style>
</head>
<body>
        <div class="box1"></div>
</body>

5.3 复合属性

应用:多背景图

java 复制代码
<head>
        <style>
        .box1{
          width: 500px;
          height: 500px;
          border: 2px red solid;
          background:url('./123.gif') no-repeat ,
          url('./favicon.ico') no-repeat right top;
        }
        </style>
</head>
<body>
        <div class="box1"></div>
</body>

6 边框属性

6.1 边框圆角

java 复制代码
/* 宽或高的50% */
          border-radius: 20%;
          /* 圆角,半径为30px */
          border-radius: 30px;

6.2 边框外轮廓

java 复制代码
 /* 边框外轮廓 */
          outline-offset: 5px;
          outline-color: blue;
          outline-width: 20px;
          outline-style: dotted;

7 文本属性

7.1 文本阴影

java 复制代码
<head>
        <style>
        h1{
          text-shadow: 50px 50px red;
          font-size: 100px;
          color: rgb(104, 247, 9);
        }
        </style>
</head>

        <h1>你学废了么</h1>
</body>

7.2 文本换行

java 复制代码
<head>
        <style>
        h1{
          width:400px;
          height: 400px;
          border: 1px red solid;
          /* white-space: pre;按原文显示 */
          white-space: pre-wrap;
          /* white-space: pre-line;与white-space: pre-wrap;作用相同,但忽略文章前后的空格 */
          /* white-space: nowrap;不换行 */
        }
        </style>
</head>
<h1>路上只我一个人,背着手踱着。这一片天地好像是我的;我也像超出了平常旳自己,到了另一世界里。我爱热闹,也爱冷静;爱群居,也爱独处。像今晚上,一个人在这苍茫旳月下,什么都可以想,什么都可以不想,便觉是个自由的人。白天里一定要做的事,一定要说的话,现在都可不理。这是独处的妙处,我且受用这无边的荷香月色好了。 </h1>
</body>

7.3 文本溢出

在7.2代码中加入

java 复制代码
overflow: hidden;
          /* text-overflow生效,overflow不能为visible */
          text-overflow:ellipsis;
java 复制代码
text-overflow:clip

7.4 文本修饰

java 复制代码
<head>
        <style>
        h1{
          width:420px;
          height: 400px;
          text-decoration: dashed  overline;
          text-decoration-color: greenyellow;
          
        }
        </style>
</head>
<body>
  <h1>路上只我一个人,背着手踱着。</h1>
</body>

7.5 文本描边

java 复制代码
<head>
        <style>
        h1{
          font-size: 100px;
          -webkit-text-stroke:  rgb(246, 154, 6) 10px;
          color: transparent;
        }
        </style>
</head>
<body>
  <h1>路上只我一个人,背着手踱着。</h1>
</body>

8 渐变

java 复制代码
<!DOCTYPE html>

<html lang="en">
<head>
        <style>
        .box{
          width: 300px;
          height: 200px;
          border: 1px solid black ;
          float: left;
          margin-right: 50px;
        }
        /* box1-box5线性渐变 */
        .box1{
          background-image: linear-gradient(red,yellow,green);
        }
        .box2{
          background-image: linear-gradient(to top right,red,yellow,green);
        }
        .box3{
          /* 逆时针20° */
          background-image: linear-gradient(20deg,red,yellow,green);
        }
        .box4{
          /* height: 200px;,0-50px纯红,50-100px变黄,100px-150px变绿 */
          background-image: linear-gradient(red 50px,yellow 100px,green 150px);
        }
        .box5{
          background-image: linear-gradient(red 50px,yellow 100px,green 150px);
          font-size: 80px;
          text-align: center;
          line-height: 200px;
          color: transparent;
          background-clip: text;
        }
        /* box6-box10 是径向渐变 */
        .box6{
          /* 从圆心(盒子中心点)开始,向外是红色黄色绿色 */
          background-image: radial-gradient(red,yellow,green);
        }
        .box7{
          /* 圆心在右上角 */
          background-image: radial-gradient(at right top,red,yellow,green);
        }
        .box8{
          /* 200px是横向的 */
          background-image: radial-gradient(at 200px 50px,red,yellow,green);
        }
        .box9{
          /* 10px是半径,从圆心向外算距离,10px以内都是红色 */
          background-image: radial-gradient(red 10px,yellow 100px,green 200px);
        }
        .box10{
          /* 150px 50px表示长半径,短半径,椭圆 */
          background-image: radial-gradient(150px 50px at 200px 50px,red,yellow,green);
        }
        .box11{
          /* 重复渐变:在没有发生渐变的区域,重新开始渐变 */
          /* 参考box4 */
          background-image: repeating-linear-gradient(red 50px,yellow 100px,green 150px);
        }
        .box12{
          background-image:  repeating-radial-gradient(red 10px,yellow 100px,green 200px);;
        }
        .box13{
          background-image: repeating-linear-gradient(transparent 0,transparent 29px,gray 30px);
        }
        .box14{
          width: 200px;
          height: 200px;
          border-radius: 50%;
          background-image:radial-gradient(at 80px 80px,white,gray);
        }

        </style>
</head>
<body>
  <div class="box box1"></div>
  <div class="box box2"></div>
  <div class="box box3"></div>
  <div class="box box4"></div>
  <div class="box box5">你学废了么</div>
  <div class="box box6"></div>
  <div class="box box7"></div>
  <div class="box box8"></div>
  <div class="box box9"></div>
  <div class="box box10"></div>
  <div class="box box11"></div>
  <div class="box box12"></div>
  <div class="box box13"></div>
  <div class="box box14"></div>
</body>
</html> 

9 字体

9.1 web字体

在网上下载一个字体,导入代码文件夹中

java 复制代码
<head>
        <style>
        @font-face{
          font-family: "这是什么字体";
          src: url('./font1/HeFengShuDaoZhaoHeFeiLongTi-Shan\(GEETYPE-FeilongGBT-Flash\)-2.ttf');
        }
        h1{
          font-size: 100px;
          font-family: "这是什么字体"; 
        }
        </style>
</head>
<body>
  <h1>沿着荷塘,是一条曲折的小煤屑路。</h1>

缺点;字体占用空间大

iconfont-webfont平台

将下列文件放入代码font文件夹:

打开demo.html

将@font-face{}复制到style标签中

更改url,路径前加font文件夹路径

java 复制代码
<head>
        <style>
        @font-face{
          font-family: "这是什么字体";
          src: url('./font1/HeFengShuDaoZhaoHeFeiLongTi-Shan\(GEETYPE-FeilongGBT-Flash\)-2.ttf');
        }
       /* 高兼容性写法 */
        @font-face {
    font-family:"webfont123";
    font-display: swap;
    src: url('./font2/webfont.eot'); /* IE9 */
    src: url('./font2/webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('./font2/webfont.woff2') format('woff2'),
    url('./font2/webfont.woff') format('woff'), /* chrome、firefox */
    url('./font2/webfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
    url('./font2/webfont.svg#webfont') format('svg'); /* iOS 4.1- */
}
        h1{
          font-size: 100px;
          font-family: "这是什么字体"; 
        }
        h2{
          font-family: "webfont123";
          font-size: 100px;
        }
        h3{
          font-size: 100px;
        }
        </style>
</head>
<body>
  <h1>沿着荷塘,是一条曲折的小煤屑路。</h1>
  <h2>执子之手,将子拖走!子若不走,拍晕了继续拖走!</h2>
  <h3>执子之手,将子拖走!子若不走,拍晕了继续拖走!</h3>
</body>

9.2 字体图标

iconfont-阿里巴巴矢量图标库点击icon

10 2D变换

10.1 位移

java 复制代码
<head>
        <style>
       .outer{
        width: 200px;
        height: 200px;
        border: 2px black solid;
        margin: 0 auto;
        margin-top: 200px;
        position: relative;
       }
       .inner{
        width: 60px;
        height: 60px;
        background-color: aqua;
        /* 50%是自身width的50% */
         /* 水平位移 
        transform: translateX(50%); */
        /* /垂直位移 
        transform: translateY(50%); */
        /* 只有后者transform: translateY(50%); 有效果
        transform: translateX(50%);
        transform: translateY(50%);  */
        /* 水平+垂直位移 
        transform: translate(20px,20px); */
        position: absolute;
        /* 此时50%相对于父元素的50% */
        top:50%;
        left:50%;
        /* 基于上面代码垂直居中法一:
        margin-left: 30px;
        margin-top: 30px; */
        /* 位移百分比说的是自己 */
        /* 基于上面代码垂直居中法二 */
        transform:translate(-50%,-50%)
       }
        </style>
</head>
<body>
  <div class="outer">
    <div class="inner"></div>
  </div>
</body>

10.2 缩放

java 复制代码
/* ()中数值>1放大,<1缩小,1表示不缩放 */
        transform: scale();
        transform: scaleX();
        transform: scaleY();

10.3 旋转

java 复制代码
/* 2D旋转,30deg顺时针旋转30° */
        /* transform: rotate(30deg)写一个值相当于transform: rotateZ(30deg) */
        transform: rotate(30deg)

10.4 多重变换

基本代码:

java 复制代码
<head>
        <style>
       .outer{
        width: 200px;
        height: 200px;
        border: 2px black solid;
        margin: 0 auto;
        margin-top: 200px;
       }
       .inner{
        width: 200px;
        height: 200px;
        background-color: aqua;
       }
        </style>
</head>
<body>
  <div class="outer">
    <div class="inner"></div>
  </div>
</body>

inner{}中添加:

java 复制代码
transform: translate(100px,100px) scale(0.5);
java 复制代码
transform: scale(0.5) translate(200px,200px) ;

可以理解为缩放0.5,位移也减少0.5倍,实际移动的是100px

java 复制代码
 transform: translate(100px,100px) rotate(30deg);
java 复制代码
transform: rotate(30deg) translate(100px,100px) ;

坐标系发生变化

10.5 改变旋转原点

java 复制代码
 /* 旋转原点在左上角 */
        transform-origin: left top;
        /* 离盒子左上角各50px */
        transform-origin:50px 50px;
        /* 25%指的是父元素宽高的25% */
        transform-origin:25% 25%;
        /* 原点只在左上角x轴变化50px */
        transform-origin:50px;
        /* 绕盒子左边中点转 */
        transform-origin:left;
        /* 改变原点对位移没有影响,对放缩有影响 */
        transform-origin: left top;
        /* 原点在左上,原点不动,缩小放大以对角线形式靠近或远离原点 */
        transform:scale();
相关推荐
winks33 分钟前
Spring Task的使用
java·后端·spring
秋意钟13 分钟前
Spring新版本
java·后端·spring
椰椰椰耶15 分钟前
【文档搜索引擎】缓冲区优化和索引模块小结
java·spring·搜索引擎
mubeibeinv17 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
青莳吖18 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
Buleall25 分钟前
期末考学C
java·开发语言
重生之绝世牛码27 分钟前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
小蜗牛慢慢爬行33 分钟前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
新手小袁_J1 小时前
JDK11下载安装和配置超详细过程
java·spring cloud·jdk·maven·mybatis·jdk11
呆呆小雅1 小时前
C#关键字volatile
java·redis·c#