CSS-4

news2024/12/23 9:51:02

平面转换

整体认识

    div {
        margin: 100px 0;

        width: 100px;
        height: 100px;
        background-color: pink;

        /* 过渡效果 */
        transition: all 1s;
    }

    /* 当鼠标悬停到div时,进行平面转换 */
    div:hover {
        transform: translate(800px) rotate(360deg) scale(2) skew(180deg);
    }
作用:为元素添加动态效果,一般与过渡配合使用
概念:改变盒子在平面内的形态(位移、旋转、缩放、倾斜)

平移

案例展示:通过平移实现"居中"效果
(原理:利用 transform: translate(); 取值为百分比时候,是参照盒子自身尺寸计算结果的特点)

<style>
    .box {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);

        width: 100px;
        height: 100px;
        background-color: pink;
    }
</style>

<body>
    <div class="box"></div>
</body>
属性:
	transform: translate(X轴移动距离,Y轴移动距离);

取值:
	1.像素单位数值
	2.百分比(参照盒子自身尺寸计算结果)
	3.正负均可

技巧:
	1.translate() 只写一个值,表示沿着X轴移动
	2.单独设置X或者Y轴移动距离:translateX()translateY()

旋转

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: pink;

        transition: all 2s;
    }

    .box:hover {
        transform: rotate(360deg);
    }
</style>

<body>
    <div class="box"></div>
</body>
属性:
	 transform: rotate(旋转角度);
	 
角度单位:deg

技巧:
	取值为正,顺时针旋转
	取值为负,逆时针旋转

转换原点

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: pink;

        transition: all 2s;
        /* 将旋转的原点改为右边+底部 */
        transform-origin: right bottom;
    }

    .box:hover {
        transform: rotate(360deg);
    }
</style>

<body>
    <div class="box"></div>
</body>
默认情况下,转换原点是盒子中心点
转换原点是一个原点,当发生转换时候(包括旋转、缩放、平移等等),以此为原点进行坐标的定位

属性:
	transform-origin: 水平原点位置  垂直原点位置;

取值:
	1.方位名词(left、top、right、bottom、center)
	2.像素单位数值
	3.百分比

多重转换

多重转换的实现:先平移再旋转
	transform: translate(...) rotate(...);

缩放

<style>
    .box {
        margin: 100px auto;
        
        width: 100px;
        height: 100px;
        background-color: pink;

        transition: all 2s;
    }

    .box:hover {
        transform: scale(2);
    }
</style>

<body>
    <div class="box"></div>
</body>
属性:
	transform: scale( 缩放倍数 );
	transform: scale( X轴缩放倍数, Y轴缩放倍数);

技巧:
	通常,只为scale设置一个值,表示X轴和Y轴等比例缩放
	通常大于1表示放大,取值小于1表示缩小

倾斜

<style>
    .box {
        margin: 100px auto;
        
        width: 100px;
        height: 100px;
        background-color: pink;

        transition: all 0.5s;
    }

    .box:hover {
        transform: skew(-30deg);
    }
</style>

<body>
    <div class="box"></div>
</body>
属性:
	transform: skew(倾斜角度);

渐变

渐变效果

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: pink;

        transition: all 0.5s;
    }

    .box:hover {
        background-image: linear-gradient(
            to right,
            red,
            green
        );

        background-image: linear-gradient(
            45deg,
            red,
            green
        );

        background-image: linear-gradient(
            red 80%,
            green
        );
    }
</style>
渐变是多个颜色逐渐变换的效果,一般用于设置盒子背景
分类:
	1.线性渐变(沿着直线的方向发生渐变)
	2.径向渐变(沿着圆心向四周发生渐变)
	
属性:
	background-image: linear-gradient(
		渐变方向,
		颜色1 终点位置,
		颜色2 终点位置,
		...
	);
	
取值:
	1.渐变的方向:可选择不写
		to 方位名词
		角度度数
	
	2.终点位置:可选择不写
		百分比

背景颜色渐变的案例

<style>
    .box {
        position: relative;

        width: 100px;
        height: 100px;
        background-color: pink;
    }

    .mask {
        position: absolute;
        left: 0;
        top: 0;

        width: 100%;
        height: 100%;

        background-image: linear-gradient(
            transparent,  /*  transparent 它代表着全透明黑色,即一个类似rgba(0,0,0,0)这样的值 */
            rgba(0,0,0,0.5)
        );
        /* 将透明度设置为0,起到"关闭显示效果"的作用 */
        opacity: 0;
    }

    .box:hover .mask {
        /* 将透明度设置为1,起到"开启显示的效果"的作用 */
        opacity: 1;
    }
</style>

<body>
    <div class="box">
        <span>Hello World</span>
        <div class="mask"></div>
    </div>
</body>

径向渐变

<style>
    .box {
        width: 100px;
        height: 100px;
        background-color: pink;
        border-radius: 50%;

        background-image: radial-gradient(
            /* 一条半径 */
            50px at center center,
            red,
            pink
        );
    }

    .box:hover {
        background-image: radial-gradient(
            /* 两条半径 */
            50px 20px at center center,
            pink,
            red
        );
    }
</style>

<body>
    <div class="box"></div>
</body>
作用:给按钮添加高光效果
取值:
	1.半径1条则为圆,2条则为椭圆
	2.圆心位置取值:像素单位数值/百分比/方位名词

空间转换

平移

属性:
	transform: translate3d(x, y, z);
	transform: translateX();
	transform: translateY();
	transform: translateZ();
	
取值(正负均可)
	1.像素单位数值
	2.百分比(参照盒子自身尺寸计算结果)
	
注意事项:
	电脑屏幕是平面的,z轴的效果无法直接体现,所以可以配合"视距"知识点使用

视距

作用:指定了观察者与 z = 0 平面的距离,为元素添加透视效果

透视效果:近大远小

属性:
	添加给直接父级,取值范围一般为 800 ~ 1200
	perspective: 视距;

平移与视距的综合效果

<style>
    .father {
        perspective: 800px;
    }

    .son {
        margin: 100px auto;
        width: 100px;
        height: 100px;
        background-color: orange;
        transition: all .5s;
    }

    .son:hover {
        transform: translateZ(300px);
    }

</style>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>

旋转

<style>
    .father {
        /* 旋转时候,使用"视距"所带来的透视效果,会使得旋转更明显(因为"视距"会自动实现"近大远小,近实远虚") */
        perspective: 800px;
    }

    .son {
        margin: 100px auto;
        width: 200px;
        height: 200px;
        background-color: pink;
        transition: all 0.5s;
    }

    .son:hover {
        /* transform: rotateZ(60deg); */
        /* transform: rotateX(60deg); */
        transform: rotateY(-60deg);
    }

</style>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
 属性:
     transform: rotateX(角度);
     transform: rotateY(角度);
     transform: rotateZ(角度);
 
 角度单位:deg
 
 例子: 
 	transform: rotateZ(60deg);

 拓展:
	rotate3d(x,y,z,角度度数):用来设置自定义旋转轴的位置及旋转的角度
	x,y,z 取值为 0-1 之间的数字
左手法则:根据旋转方向确定取值正负

操作:
	左手握住旋转轴,拇指指向正值方向。其他四个手指弯曲方向为旋转正值方向。

立体呈现

立体知识

<style>
    .cube {
        position: relative;
        margin: 100px auto;
        width: 200px;
        height: 200px;
        transition: all 2s;

        transform-style: preserve-3d;
    }

    .cube div {
        position: absolute;
        left: 0;
        top: 0;
        width: 200px;
        height: 200px;
    }

    .front {
        background-color: orange;
        transform: translateZ(100px);
    }

    .back {
        background-color: green;
        transform: translateZ(-100px);
    }

    .cube:hover {
        transform: rotateY(90deg);
    }
</style>

<body>
    <div class="cube">
        <div class="front">前面</div>
        <div class="back">后面</div>
    </div>
</body>
作用:控制元素的子元素是位于3D空间中还是平面中
属性名:transform-style
属性值:
	flat: 子级处于平面中
	preserve-3d: 子级处于3D空间

立方体案例

<style>
    .cube {
        width: 300px;
        height: 300px;
        font-size: 80px;
        text-align: center;
        line-height: 300px;
        transition: 2s;
        transform: rotateY(-30deg) rotateX(-35deg);
        transform-style: preserve-3d;
        margin: 300px auto;
    }

    .cube:hover {
        transform: rotateY(30deg) rotateX(35deg);
    }

    .cube>div {
        width: 300px;
        height: 300px;
        position: absolute;
        left: 0;
        top: 0;
        transition: 2s;
        opacity: 0.5;
        border: 1px dashed black;
    }

    .cube .flat1 {
        background-color: red;
        transform: translateY(-150px) rotateX(90deg);
    }

    .cube .flat2 {
        background-color: orange;
        transform: translateY(150px) rotateX(90deg);
    }

    .cube .flat3 {
        background-color: yellow;
        transform: translateX(-150px) rotateY(90deg);
    }

    .cube .flat4 {
        background-color: green;
        transform: translateX(150px) rotateY(90deg);
    }

    .cube .flat5 {
        background-color: lightgreen;
        transform: translateZ(150px);
    }

    .cube .flat6 {
        background-color: blue;
        transform: translateZ(-150px);
    }
</style>

<body>
    <div class="cube">
        <div class="flat1">上</div>
        <div class="flat2">下</div>
        <div class="flat3">左</div>
        <div class="flat4">右</div>
        <div class="flat5">前</div>
        <div class="flat6">后</div>
    </div>
</body>

3D导航案例

<style>
    * {
        margin: 0;
        padding: 0;
    }

    ul {
        margin-top: 100px;
        margin-left: 36%;
    }

    ul li {
        float: left;
        margin: 0 5px;
        width: 120px;
        height: 35px;
        list-style: none;
        /* 一会我们需要给box旋转 也需要透视干脆给li加里面的子盒子都有透视效果 */
        perspective: 500px;
    }

    .box {
        position: relative;
        width: 100%;
        height: 100%;
        background-color: pink;
        transform-style: preserve-3d;
        transition: all .4s;
    }

    .box:hover {
        transform: rotateX(90deg);
    }

    .front,
    .bottom {
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
    }

    .front {
        background-color: red;
        opacity: 0.5;
        transform: translateZ(17.5px);
    }

    .bottom {
        background-color: green;
        opacity: 0.5;
        /* 这个x轴一定是负值 */
        /* 我们如果有移动 或者其他样式,必须先写我们的移动 */
        transform: translateY(17.5px) rotateX(90deg);
    }
</style>

<body>
    <ul>
        <li>
            <div class="box">
                <div class="front">导航一</div>
                <div class="bottom">111</div>
            </div>
        </li>
        <li>
            <div class="box">
                <div class="front">导航二</div>
                <div class="bottom">222</div>
            </div>
        </li>
        <li>
            <div class="box">
                <div class="front">导航三</div>
                <div class="bottom">333</div>
            </div>
        </li>
    </ul>
</body>

缩放

transform: scale3d(x,y,z);
transform: scaleX();
transform: scaleY();
transform: scaleZ();

动画

认识动画

过渡:实现两个状态间的变换过程
动画:实现多个状态间的变换过程,动画过程可控(重复播放、最终画面、是否暂停)

定义动画

<style>
    @keyframes 动画名称 {
        from {}
        to {}
    }
</style>
<style>
    @keyframes 动画名称 {
        0% {}
        10% {}
        ...
        100% {}
    }
</style>

使用动画

<style>
    .box {
        animation: 动画名称 动画花费时长;
    }
</style>

基本演示

动画一演示:宽度从200变化到800

<style>
    .box {
        width: 200px;
        height: 100px;
        background-color: pink;
        
        /* 第二步:使用动画 */
        animation: change-size 1s;
    }

    /* 第一步:定义动画 */
    @keyframes change-size {
        from {
            width: 200px;
        }

        to {
            width: 800px;
        }
    }
</style>

<body>
    <div class="box"></div>
</body>
动画二演示:从 200*100 变化到 300*300 再变化到 800*500

<style>
    .box {
        width: 200px;
        height: 100px;
        background-color: pink;

        animation: changed 1s;
    }

    /* 注意:这里的 0%、20%、100% 表示的意思是动画时常的百分比 */
    @keyframes changed {
        0% {
            width: 200px;
            height: 100px;
        }

        20% {
            width: 300px;
            height: 300px;
        }

        100% {
            width: 800px;
            height: 500px;
        }
    }
</style>

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

其他属性值

<style>
    .box {
        width: 200px;
        height: 100px;
        background-color: pink;

        /* 速度曲线 */
        animation: change 2s linear;       /* linear: 匀速运动 */
        animation: change 2s steps(3);     /* steps(n步): 将动画按照"步骤"分成n步 */

        /* 延迟时间 */
        animation: change 2s 4s;           /* 第一个时间是动画时长,第二个时间是延时时间 */

        /* 重复次数 */
        animation: change 2s 3;           /* 动画重复播放3次 */
        animation: change 2s infinite;    /* 动画一直重复播放 */

        /* 动画方向 */
        animation: change 2s alternate;    /* alternate:反向 */

        /* 执行完毕时状态 */
        animation: change 2s forwards;
        animation: change 2s backwards;    /* 默认效果 */
        
        /* 暂停动画 */
        animation-play-state: paused;		/* 通常配合:hover使用 */
    }

    @keyframes change {
        from {
            width: 200px;
        }

        to {
            width: 800px;
        }
    }
</style>

<body>
    <div class="box"></div>
</body>
animation: 动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态

提示:
	1.动画名称和动画时长必须赋值
	2.取值不分先后顺序
	3.如果有两个时间值,第一个时间值表示动画时长,第二个时间值表示延迟时间

走马灯案例

<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }

    li {
        list-style: none;
    }

    img {
        display: block;
        width: 200px;
        height: 102px;
    }

    .box {
        margin: 100px auto;
        width: 600px;
        height: 112px;
        border: 5px solid #000;
        overflow: hidden;
    }

    .box ul {
        display: flex;
        animation: move 6s infinite linear;
    }

    /* 定义位移动画:ul使用动画:鼠标悬停暂停动画 */
    @keyframes move {
        0% {
            transform: translate(0);
        }

        100% {
            /* 向左移动,使用负数;一张图片宽度为200px,4张图片宽度为800px,故而向左移动4张图片的宽度为-800px */
            transform: translate(-800px);
        }
    }

    .box:hover ul {
        animation-play-state: paused;
    }
</style>

<body>
    <div class="box">
        <ul>
            <!-- 真正要展示的图片 -->
            <li><img src="./images/img0.png" alt=""></li>
            <li><img src="./images/img1.png" alt=""></li>
            <li><img src="./images/img2.png" alt=""></li>
            <li><img src="./images/img3.png" alt=""></li>

            <!-- 复制前几张图片进行再次展示,只是为了弥补方框中的空白 -->
            <li><img src="./images/img0.png" alt=""></li>
            <li><img src="./images/img1.png" alt=""></li>
            <li><img src="./images/img2.png" alt=""></li>
        </ul>
    </div>
</body>

精灵动画案例

在这里插入图片描述

<style>
    div {
        width: 140px;
        height: 140px;
        border: 1px solid #000;
        background-image: url(./images/run.png);

        /* 本张精灵图有12个小图,故而steps(12) */
        animation: run 1s steps(12) infinite;
    }

    @keyframes run {
        from {
            background-position: 0 0;
        }

        to {
            background-position: -1680px 0;
        }
    }
</style>

<body>
    <div></div>
</body>

多组动画

<style>
    div {
        width: 140px;
        height: 140px;
        /* border: 1px solid #000; */
        background-image: url(./images/run.png);

        /* 多组动画 */
        animation:
            run 1s steps(12) infinite,
            move 3s forwards
    }

    /* 实现原地跑的动画效果 */
    @keyframes run {
        from {
            background-position: 0 0;
        }

        to {
            background-position: -1680px 0;
        }
    }

    /* 实现向前移动的动画效果 */
    @keyframes move {
        0% {
            transform: translate(0);
        }

        100% {
            transform: translate(800px);
        }
    }
</style>

<body>
    <div></div>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫——使用代理IP池维护虚拟用户

目录 前言 一、什么是代理IP池&#xff1f; 二、爬取代理IP 三、验证代理IP的可用性 四、维护代理IP池 五、使用代理IP池进行爬取 六、总结 前言 在进行Web爬取时&#xff0c;使用代理IP是一种常见的策略&#xff0c;它可以帮助我们隐藏真实IP地址&#xff0c;绕过网站…

PyQT 多进程

在PyQt中&#xff0c;图形化界面&#xff08;GUI&#xff09;是运行在主线程中的&#xff0c;而多进程是在独立的进程中执行的。默认情况下&#xff0c;多进程之间是无法直接共享图形化界面的。 然而&#xff0c;有几种方法可以在多进程中与PyQt的图形化界面进行通信&#xff…

Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…

Linux驱动开发学习笔记7《并发与竞争》

目录 一、并发与竞争 1、并发与竞争简介 2、保护内容是什么 二、原子操作 1、 原子操作简介 2、原子整形操作API 函数 3、原子位操作API 函数 4、实验 &#xff08;1&#xff09; 修改设备树文件 &#xff08;2&#xff09; LED 驱动修改 &#xff08;3&#xff09;…

2023年度总结———豫见及遇见

目录 一.AI 人工智能方向 二.华为数通网络方向 三.腾讯云AI绘画方向 四.年度心得总结板块 博主C站主页&#xff1a;知孤云出岫_网络,计算机,计算机网络教案-CSDN博客 博主腾讯云主页&#xff1a; 知孤云出岫 - 个人中心 - 腾讯云开发者社区-腾讯云 2023年年度词&#xff1a…

集合高级知识点

集合高级 1. HashSet 底层原理 HashSet 的特点&#xff1a; HashSet 实现了 Set 接口HashSet 底层实质上是 HashMap可以存放 null 值&#xff0c;但是只能有一个 nullHashSet 不保证元素是有序的&#xff0c;取决于 hash 后&#xff0c;再确定索引的结果&#xff0c;即不保证…

Python 从入门到精通之通俗易懂学闭包

系列 Python从入门到精通之安装与快速入门-CSDN博客 Python从入门到精通之基本数据类型和变量-CSDN博客 Python从入门到精通之集合&#xff08;List列表、Tuple元组、Dict字典、Set&#xff09;-CSDN博客 Python从入门到精通之条件语句、循环语句和函数-CSDN博客 Python从…

单片机原理及应用:计数按键控制数码管显示

承接上文&#xff0c;我们来介绍一下按键和数码管的配合工作&#xff0c;由于数码管显示的字符和位数多种多样&#xff0c;无法做到一个字符对应一个按键&#xff0c;所以程序主要记录按键的使用次数来切换数码管的显示。 #include <reg52.h> //包含reg52.h头…

如何使用SeaFile搭建本地私有云盘并结合cpolar实现远程访问

文章目录 1. 前言2. SeaFile云盘设置2.1 SeaFile的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 现在我们身边的只能设备越来越多&#xff0c;…

2024洗地机哪家强?口碑洗地机推荐

现如今&#xff0c;智能家电在人们生活中变得越来越受欢迎&#xff0c;例如智能洗地机的出现&#xff0c;不仅省时省力&#xff0c;还实现了家务清洁的自由。在家庭中&#xff0c;地面清洁一直是一个令人头疼的问题&#xff0c;各种智能家居品牌通过开发各种智能家电产品来解决…

【工具】vscode搜索结果及工程目录的文件夹、文件的排除

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;善假于物&#…

【模拟电路】NE555-电子琴应用原理

一、声音和频率 二、振荡周期和占空比 三、NE555电子琴案例 四、NE555内部和方波发生器 一、声音和频率 声音和频率的关系确实是密切相关的。 在声学中&#xff0c;声音的频率被定义为声波的震动次数&#xff0c;通常以赫兹&#xff08;Hz&#xff09;为单位。频率越高&#x…

log4cplus visual c++ 编译及调试小记

简介 最近在调试一款SATA加密设备&#xff0c;发现设备有时加密出来的数据&#xff0c;再解密时与明文对不上&#xff0c;怀疑是通信问题。因此&#xff0c;急需要在测试工具中加入通信日志。由于对第三方日志库都不熟悉&#xff0c;所以随便选了个log4cplus软件集成到现有工具…

leetcode2975. 移除栅栏得到的正方形田地的最大面积

题目 有一个大型的 (m - 1) x (n - 1) 矩形田地&#xff0c;其两个对角分别是 (1, 1) 和 (m, n) &#xff0c;田地内部有一些水平栅栏和垂直栅栏&#xff0c;分别由数组 hFences 和 vFences 给出。 水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n)&#xff0c;垂直栅栏为…

STM32L4

STM32L4系列超低功耗微控制器 意法半导体通过构建新型芯片架构实现了同类产品中最佳的超低功耗及性能&#xff0c;这得益于应用设计上的高度灵活性。 STM32L4系列可以根据微处理器运行时不同的应用需求来适时调整电压从而实现功耗的动态平衡。 该系列包含不同的产品线&#…

(15)Linux 进程创建与终止函数forkslab 分派器

前言&#xff1a;本章我们主要讲解进程的创建与终止&#xff0c;最后简单介绍一下 slab 分派器。 一、进程创建&#xff08;Process creation&#xff09; 1、分叉函数 fork 在 中&#xff0c; fork 函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新的进程。 …

OCP NVME SSD规范解读-3.NVMe管理命令-part2

NVMe-AD-8&#xff1a;在某些情况下&#xff08;如Sanitize命令、Format NVM命令或TCG Revert方法后数据被清除&#xff09;&#xff0c;设备应允许读取已清除的LBAs而不产生错误&#xff0c;并在最后一次清除完成后&#xff0c;对未写入LBAs的读取返回所有零值给主机 NVMe-AD…

闭包,垃圾回收机制

1.垃圾回收机制 当函数执行完毕后,函数内部的变量就会被销毁。 代码&#xff1a; function fn() {var a 10;a;return a;}console.log(fn()); 输出的结果: 11 持续调用的结果: 2.变量的私有化 代码: function fn() {var a 10;return function fn1() {return a;}…

git的使用基础教程

最近项目在搞自动化测试&#xff0c;需要将各种测试脚本集成到自动化框架里边&#xff0c;这个就需要用到版本管理系统了,下面简单价绍一下git的使用。 首先从官网下载并安装git工具&#xff0c;下面以wins系统为例子说明 https://git-scm.com/downloads wins安装好后&#xff…

【学习笔记】环论

子环环同态理想单位元&#xff08;乘法单位元&#xff09;环与子环的单位元无必然关系,即子环不一定有单位元&#xff0c;有也不一定和环的单位元相同 比如 Z 6 Z_6 Z6​有单位元1&#xff0c;其子环 ( 2 ) (2) (2)单位元为4;Z有单位元1&#xff0c;其子环2Z没有单位元若R有单位…