重学JavaWeb第二天(七)

简介: 重学JavaWeb第二天

translateZ() 沿着z轴方向平移

z轴平移,调整元素在z轴的位置,正常情况就是调整元素和人眼之间的距离,

距离越大,z轴离人越进。距离约小,元素离人越远

z轴平移属于立体效果(近大远小),默认情况下网页是不支持透视,如果需要看见效果

必须要设置网页的视距

html{
            /* 设置当前网页的视距为800px,人眼距离网页的距离 */
            perspective: 800px;
}
            transform: translateZ(100px);

平移过渡效果

旋转 rotate

通过旋转可以使元素沿着x y 或 z旋转指定的角度

rotateX()沿着x轴方向平移

transform: rotateX(180deg);

旋转过渡效果

rotateY()沿着y轴方向平移

transform: rotateY(180deg);

旋转过渡效果

b0c5111fb605dea93d24181e1d694229.gif

rotateZ()沿着z轴方向平移

transform: rotateZ(180deg);

旋转过渡效果

99e6de164104276e4f38a9089e85ca7f.gif

backface-visibility:是否显示元素的背面

backface-visibility: hidden;

效果

缩放 scale

scaleX()水平方向缩放

transform: scaleX(.5);

缩放过渡效果

scaleY()垂直方向缩放

transform: scaleY(.5);

缩放过渡效果

c3dee7084daa89d00f2fad2ab6590a61.gif

scale双方向缩放

transform: scale(1.5);
• 1

缩放过渡效果

设置3d变形效果

transform-style: preserve-3d;

Z轴

练习

biao.gif

<!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>
        .box1{
            height: 500px;
            width: 500px;
            background-color: lightsalmon;
            margin: 0 auto;
            border-radius: 50%;
        }
        .box2{
            height: 500px;
            width: 500px;
            /* background-color:lightseagreen; */
            margin: 0 auto;
            animation-name: test;
            /* 一次动画执行时间 */
            animation-duration: 60s;   
            /* 动画循环执行 */
            animation-iteration-count:infinite;   
            animation-timing-function: steps(60);  
        }
        .box3{
            height: 250px;
            width: 2px;
            background-color: black;
            margin: 0 auto;
        }
        @keyframes test{
            from{
                transform: rotateZ(0deg);
            }
            to{
                transform: rotateZ(360deg);
            }
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2">
            <div class="box3"></div>
        </div>
    </div>
</body>
</html>

立方体

<!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>
        html{
            /* 设置视距 */
            perspective: 800px;
        }
        .conetnt{
            width: 200px;
            height: 200px;
            /* background-color: cadetblue; */
            margin: 100px auto;
            /* 设置关键帧名称 */
            animation-name: test;
            /* 设置动画时间 */
            animation-duration: 10s;
            /* 设置动画循环 */
            animation-iteration-count: infinite;
            /* 开启3d样式 */
            transform-style: preserve-3d;
        }
        .conetnt div {
            /* 设置透明度 */
           opacity: 0.7;
           /* 绝对定位 */
           position: absolute;
        }
        @keyframes test {
            from{
                /* x轴平移 y轴平移 */
                transform: rotateX(0deg) rotateZ(0deg);
            }
            to{
                transform: rotateX(360deg) rotateZ(360deg);
            }
        }
        img{
            vertical-align: top;
        }
        .box1{
            /* y轴旋转90 z轴平移100  */
            transform: rotateY(90deg) translateZ(100px);
        }
        .box2{
            transform: rotateY(-90deg) translateZ(100px);
        }
        .box3{
            transform: rotateX(90deg) translateZ(100px);
        }
        .box4{
            transform: rotateX(-90deg) translateZ(100px);
        }
        .box5{
            transform: rotateY(180deg) translateZ(100px);
        }
        .box6{
             transform: rotateY(0deg) translateZ(100px); 
        }
    </style>
</head>
<body>
    <div class="conetnt">
        <div class="box1">
            <img src="https://s1.ax1x.com/2020/05/04/YCGsPK.jpg">
        </div>
        <div class="box2">
            <img src="https://s1.ax1x.com/2020/05/04/YCGcxe.jpg">
        </div>
        <div class="box3">
            <img src="https://s1.ax1x.com/2020/05/04/YCGqMQ.jpg">
        </div>
        <div class="box4">
            <img src="https://s1.ax1x.com/2020/05/04/YCGOqs.jpg">
        </div>
        <div class="box5">
            <img src="https://s1.ax1x.com/2020/05/04/YCGvaq.jpg">
        </div>
        <div class="box6">
            <img src="https://s1.ax1x.com/2020/05/04/YCJCzF.jpg">
        </div>
    </div>
</body>
</html>

效果

元素透明效果

opacity: 0.7;

less是一门css的预处理语言


less是一个css的增强版,通过less可以编写更少的代码实现更强大的样式

在less中添加了许多的新特性:像对变量的支持、对mixin的支持… …

less的语法大体上和css语法一致,但是less中增添了许多对css的扩展,

所以浏览器无法直接执行less代码,要执行必须向将less转换为css,然后再由浏览器执行


原声css对变量的支持

IE支持度不高

声明与使用

--color:#ff0;
background-color: var(--color);

easy less插件

安装插件后再写less代码时会自动生成css代码

image.png

层级后代关系

body{
    width: 100px;
    height: 100px;
    div{
        color: red;
        p{
            color: royalblue;
        }
    }
}

注释

//less单行注释
/*
  css多行注释
*/

变量

声明与赋值

//单位变量
@a:100px
@b:#bfa
div{
  width:@a;
  color:@b;
}

选择器

&当前块

body{
    // &:hover = body:hover
    &:hover{
        color: red;
    }
}
body:hover {
  color: red;
}

样式继承

.box1{
    width: 200px;
}
.box2:extend(.box1){
    color: blue;
}
.box1,
.box2 {
  width: 200px;
}
.box2 {
  color: blue;
}

样式复制

.box1{
    width: 200px;
}
.box2{
    .box1();
    color: blue;
}
.box1 {
  width: 200px;
}
.box2 {
  width: 200px;
  color: blue;
}

公共样式,类似函数

.box1(){
    width: 200px;
    color: red;
}
.box2{
    .box1();
}
.box2 {
  width: 200px;
  color: red;
}

混合函数

方法调用,传参

.box1(@h,@w){
    width: @w;
    height: @h;
    color: red;
}
.box2{
     // .box1(100px,200px);
    .box1(@w:200px,@h:100px);
}
.box2 {
  width: 200px;
  height: 100px;
  color: red;
}

移动端

像素

  • 屏幕是由一个一个发光的小点构成,这一个个的小点就是像素
  • 分辨率:1920 x 1080 说的就是屏幕中小点的数量,横向1920个像素点,纵向1080个像素点

image.png

在前端开发中像素要分成两种情况讨论:CSS像素 和 物理像素

物理像素,显示器的小点点就属于物理像素

CSS像素,编写网页时,我们所用像素都是CSS像素

浏览器在显示网页时,需要将CSS像素转换为物理像素然后再呈现

一个css像素最终由几个物理像素显示,由浏览器决定:

默认*情况下在*pc端,一个css像素** = 一个物理像素 1:1


视口 viewport

  • 视口就是屏幕中用来显示网页的区域


image.png

  • 可以通过查看视口的大小,来观察CSS像素和物理像素的比值
  • 默认情况下:
    视口宽度 1920px(CSS像素)
    1920px(物理像素)
- 此时,css像素和物理像素的比是 1:1

image.png


  • 浏览器放大两倍的情况:
    image.png

视口宽度 960px(CSS像素)

1920px(物理像素)


image.png

    - **此时,css像素和物理像素的比是1:2**即一个浏览器显示一个css像素宽度,物理像素用了两个像素显示(此处忽略高度),`也就是100个css像素经过缩放200%后显示器显示200个像素`。
  • 我们可以通过改变视口的大小,来改变CSS像素和物理像素的比值

影响视口宽度的因素有 浏览器缩放百分比,系统缩放,拖动浏览器窗口

image.png

04599336757f22b86c460ced76bd5f4f.png

image.png

移动端完美视口

不同屏幕,单位像素的多少是不同的,单位像素越多屏幕会越清晰,

image.png

默认情况下,移动端的网页都会将视口设置为 980像素(css像素)。 以确保pc端网页可以在移动端正常访问,但是如果网页的宽度超过了980,移动端的浏览器会 自动对网页缩放以完整显示网页。


image.png


所以基本大部分的pc端网站都可以在移动端中正常浏览,但是往往都不会有一个好的体验, 为了解决这个问题,大部分网站都会 专门为移动端设计网页


移动端默认情况下像素比是 980/移动端宽度,即视口宽度(css像素)/移动端物理屏幕宽度


我的手机是小米6,默认情况下像素比是980/1080=0.907


如果我们直接在网页中编写移动端代码,这样在980的视口下,像素比是非常不好,导致网页中的内容非常小


编写移动页面时,必须要确保有一个比较合理的 像素比:

1css像素 对应 2个物理像素

1css像素 对应 3个物理像素


可以通过meta标签来设置视口宽度,控制像素比,如果这样固定视口宽度会导致再不同机型下显示效果不同。


所以 不能将视口宽度写死

<meta name="viewport" content="width=100px">

每一款移动设备设计时,都会有一个最佳的像素比,所以设备不同,像素比不同

一般我们只需要将像素比设置为该值即可得到一个最佳效果

将像素比设置为最佳像素比的视口大小我们称其为完美视口

<meta name="viewport" content="width=device-width">

完美视口问题

不同手机完美视口的大小是不同的。

iphonex 375px

iphone6 414px

image.pngimage.png

如果设置一个元素宽度为375px,再iphonex里显示正常,再iphone6中就不能占满宽度。


由于不同设备视口和像素比不同,所以同样的375个像素在不同的设备下意义是不一样,


eb522946c755437f1036cf9b5f894a26.png

b0f19dfe271588e22d817bd98b2d2922.png



为什么不用100%呢?


在多层元素嵌套下,百分比的参照物不同,所以不能用百分比进行布局。


VW单位

vw表示的是视口的宽度(viewport width)


100vw = 一个视口的宽度

1vw = 1%视口宽度

vw单位永远参考于视口宽度进行计算


image.png

常规的设计图宽度750px,使用vw如何通过设计图中的大小来设计网站大小?


设计图中48x 35像素大小的元素如何在页面中保证元素大小?


100vw = 750px (设计图中像素)


0.1333333333333333333vw = 1px


0.13333333333vw x 48px = 6.4vw


0.13333333333vw x 35px = 4.66666666666vw


如果根据设计图像素计算vw , 必须通过0.133333333333*px ,数值的换算非常不方便


VW适配

1rem = 1 html的字体大小

能否将font-size设置为0.1333333333来方便设置vw呢?

font-size: 0.1333333333333333vw;

网页中字体大小最小是12px,不能设置一个比12像素还小的字体

如果我们设置了一个小于12px的字体,则字体自动设置为12

现在将font-size 扩大100倍

font-size: 13.33333333333333vw;

每次使用时设计图像素除100

width: 0.48rem;
height: 0.35rem;

练习

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
    <!-- 禁止缩放 -->
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../static/css/reset.css">
    <link rel="stylesheet" href="//at.alicdn.com/t/font_1800526_56a16ttb0kw.css">
    <link rel="stylesheet" href="style.css">
</head>
<body>
        <!-- 创建头部容器 -->
        <div class="head">
            <div class="menu"><i class="iconfont icon-menu"></i></div>
            <h1 class="learn">I Learn</h1>
            <div class="search"><i class="iconfont icon-search"></i></div>
        </div>
        <div class="banner">
            <a href="">
                <img src="../static/img/banner.png" alt="">
            </a>
        </div>
        <div class="btn-grop">
            <a href="" class="book">
                <i class="iconfont icon-book"></i>
                我的读书
            </a>
            <a href="" class="star">
                <i class="iconfont icon-star"></i>
                高星教师
            </a>
            <a href="" class="tag">
                <i class="iconfont icon-37tag"></i>
                我的收藏
            </a>
            <a href="" class="down">
                <i class="iconfont icon-down"></i>
                我的下载
            </a>
        </div>
        <div class="list">
            <div class="title">
                <h2>课程</h2>
                <a href="">
                    更多
                    <i class="iconfont icon-add"></i>
                </a>
            </div>
            <div class="items">
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
            </div>
        </div>
        <div class="list">
            <div class="title">
                <h2>课程</h2>
                <a href="">
                    更多
                    <i class="iconfont icon-add"></i>
                </a>
            </div>
            <div class="items">
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
                <div class="item">
                    <a href="" class="title-img">
                        <img src="../static/img/cover.png">
                    </a>
                    <a class="title-name">欣赏美丽日出</a>
                    <a href="" class="user-name">
                        <img src="../static/img/avatar.png">
                        <p>
                            Zhao Jishun
                        </p>
                    </a>
                </div>  
            </div>
        </div>
</body>
</html>
*{
    margin: 0;
    padding: 0;
}
// 设置设计图宽度
@total-wigth:750;
//设置宽度
@content-width:6.93rem;
a{
    text-decoration: none;
}
html{
    // 设置rem比值
    font-size: 100vw / @total-wigth * 100;
    background-color: #eff0f4;
}
.head{
    display: flex;
    // background-color: skyblue;
    justify-content: space-between;
    height: 1.75rem;
    width: 6.93rem;
    line-height: 1.75rem;
    margin: 0 auto;
    // 辅轴对齐方式
    align-items: center;
    .learn{
        font-size: 0.7rem;
        color: #24253d;
    }
    i{
        color: #656565;
        font-size: 28px;
    }
}
.banner{
    width: 6.93rem;
    // height: 2.27rem;
    margin: 0 auto;
    // background-color: sandybrown;
    img{
        width: 100%;
        background-color: rosybrown;
        border-radius: 15px;
    }
}
.btn-grop{
    width: 6.93rem;
    height: 3.29rem;
    margin: 0 auto;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    align-content: space-evenly;
    a{
        color: seashell;
        height: 1.04rem;
        width: 3.27rem;
        font-size: 0.42rem;
        line-height: 1.04rem;
        border-radius: 8px;
        text-align: center;
        i{
            font-size: 0.42rem;
        }
    }
    .book{
        background-color: #f97053;
    }
    .star{
        background-color: #c961ff;
    }
    .tag{
        background-color: #ff3971;
    }
    .down{
        background-color: #1d9bfe;
    }
}
.list{
    height: 4rem;
    margin-bottom: 0.89rem;
    .title{
        height: 0.46rem;
        width: 6.60rem;
        display: flex;
        font-size: 0.39rem;
        justify-content: space-between;
        margin: 0 auto 14px auto;
        padding-left: 14px;
        border-left: 2px solid #3a84ff;
        align-items: center;
        line-height: 0.46rem;
        text-align: center;
        a{
            color: #656565;
        }
    }
    .items{
        // background-color: steelblue;
        padding: 0.3rem;
        display: flex;
        overflow: auto;
        .item{
            flex: none;
            height: 3.03rem;
            width: 2.85rem;
            background-color: #ffffff;
            box-shadow: 0 0 10px rgba(0, 0, 0, .3);
            padding: 0.22rem;
            display: flex;
            flex-direction: column;
            border-radius: 0.2rem;
            justify-content: space-between;
            margin-right: 0.24rem;
            .title-img{
                height: 1.55rem;
                img{
                    width: 100%;
                }
            }
            .title-name{
                font-size: 0.35rem; 
                color: #24253d;
            }
            .user-name{
                display: flex;
                align-items: center;
                img{
                    width: 0.42rem;
                    height: 0.42rem;
                    margin-right: 5px;
                    vertical-align: top;
                }
                p{
                    font-size: 0.29rem; 
                    color: #969494;
                }
            }
        }
    }
}

响应式布局


网页可以根据不通的设备或窗口大小呈现出不同的效果

使用响应式布局,可以使一个网页适用于所有设备

响应布局的关键就是 媒体查询

通过媒体查询,可以为不通的设备,或设备不同状态来分别设置样式


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGcJZs9A-1657942884442)(https://gaoziman.oss-cn-hangzhou.aliyuncs.com/img/%E5%93%8D%E5%BA%94%E5%BC%8F%E5%B8%83%E5%B1%80.gif)]


媒体查询

语法:@media 查询规则{}


媒体类型


all 所有设备

print 打印设备

screen 带屏幕的设备

speech 屏幕阅读器

可以使用,连接多个媒体类型,这样它们之间就是一个或的关系

@media only screen {
            body{
                background-color: #bfa;
            }
        }

媒体特性

  • width 视口的宽度
  • height 视口的高度
  • min-width 视口的最小宽度(视口大于指定宽度时生效)
  • max-width 视口的最大宽度(视口小于指定宽度时生效)
@media (max-width: 500px){
             body{
                background-color: #bfa;
             }

样式切换的分界点,我们称其为断点,也就是网页的样式会在这个点时发生变化

下面是比较常用的断点


小于768 超小屏幕 max-width=768px

大于768 小屏幕 min-width=768px

大于992 中型屏幕 min-width=992px

大于1200 大屏幕 min-width=1200px


@media only screen and (min-width: 500px) and (max-width:700px){
             body{
                background-color: #bfa;
             }
         }
目录
相关文章
|
6月前
|
存储 前端开发 JavaScript
基于JavaWeb实现停车场管理系统
基于JavaWeb实现停车场管理系统
|
6月前
|
前端开发 JavaScript Java
图书借阅管理平台|基于JavaWeb实现图书借阅系统
图书借阅管理平台|基于JavaWeb实现图书借阅系统
121 1
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
444 37
|
2月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
33 2
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
60 5
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
6月前
|
前端开发 Java 关系型数据库
JavaWeb开发简介
JavaWeb开发简介
58 0
|
3月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
118 2
|
3月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
6月前
|
SQL Java 数据库连接
JavaWeb Mapper代理开发
JavaWeb Mapper代理开发