位置: IT常识 - 正文

叮咚,您有一封告白信件待查收(原生HTML+CSS+JS绘制表白信件,代码+链接+步骤详解)(叮咚你有一份好运请查收图片)

编辑:rootadmin
叮咚,您有一封告白信件待查收(原生HTML+CSS+JS绘制表白信件,代码+链接+步骤详解)

推荐整理分享叮咚,您有一封告白信件待查收(原生HTML+CSS+JS绘制表白信件,代码+链接+步骤详解)(叮咚你有一份好运请查收图片),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:叮咚,你有一条爱意的信息请注意查收!,叮咚您有一封信请查收动画,叮咚你有一份好运请查收图片,叮咚你有一份好运请查收图片,叮咚,您有一封信英语,叮咚您有一封信请查收,叮咚您有一封信请查收动画,叮咚您有一封信请查收视频,内容如对您有帮助,希望把文章链接给更多的朋友!

 马上就要5月20号啦,准备好如何向心仪的她/他表白了嘛!特此出一篇告白小信件,效果图如下。纯html+css绘制,包含详细教程注释,干货满满哦。

链接置于文章结尾总结处。

文章目录一、叮咚!查收您的信件!1.envelope1.1 绘制信封主体1.2 绘制信封细节1.2.1 CSS绘制三角形—border法1.2.2 绘制信封1.3 信封开合动画1.4 加入阴影1.5 envelope全部代码2. card2.1 加入卡片元素并设置其样式2.2 加入卡片划出的动画2.3 加入卡片后的全部代码3. pikachu3.1加入文本3.2 绘制皮卡丘3.2.1 绘制躯干3.2.1.1 身体3.2.1.2 绘制头部3.2.1.3 绘制眼睛,脸颊以及脚3.2.2 绘制耳朵及尾巴3.2.2.1 绘制耳朵3.2.2.2 绘制尾巴3.2.3 绘制爱心3.2.4 绘制手臂3.2.5 绘制嘴巴4. 信件全部代码二、打开您的信件三、联结两个页面总结一、叮咚!查收您的信件!

 信件页面主要由信封,卡片,以及卡片上的皮卡丘组成。接下来也将分三部分进行讲解。  我们先创建envelope.html及envelope.css。

1.envelope1.1 绘制信封主体

envelope.html

 首先,绘制我们的信封,创建类名为container的<div>及类名为envelope的<div>。  我们将信封,卡片,以及卡片上的皮卡丘放在一个container中,方便我们调适三者统一的位置。

代码如下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"> <div class="envelope"></div> </div></body></html>

envelope.css

 在最开始导入我们后面将会用到的字体样式。  接着,重置浏览器样式,设置背景颜色,及信封颜色和大小。  其中,container和envelope均设置为相对定位。  绝对定位和相对定位,总结一下就是不希望影响到其他元素的就设置为绝对定位,反之,需要在页面中占有位置的就设置为相对定位。具体实例见此文对Absolute(绝对定位)与Relative(相对定位)的解析。

vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%)vh:视窗高度的百分比vmin:当前 vw 和 vh 中较小的一个值vmax:当前 vw 和 vh 中较大的一个值

代码如下:

@import url('https://fonts.googleapis.com/css2?family=Pangolin&display=swap');/*重置浏览器样式*/* { margin: 0; padding: 0;}/* 使主体居中 vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%) vh:视窗高度的百分比*/body { height: 100vh; width: 100vw; background: #FFE3EC; font-family: 'Pangolin', cursive; font-size: 1vmin; /*弹性布局*/ display: flex; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center;}/*使用相对定位(什么时候用相对定位或绝对定位?在文档流中相对定位的元素占有位置,而且会影响后面的元素(块元素、行内块元素),比如两个div并排,另外一个会换行。而绝对定位就是把该元素从文档流中踢出,不会占用文档流的位置,也不会影响后面的元素。)vmin:当前 vw 和 vh 中较小的一个值vmax:当前 vw 和 vh 中较大的一个值*/.container { position: relative; top: 0vmin;}/*相对定位,并设置背景色和大小*/.envelope { position: relative; background: #eb7885; height: 30vmin; width: 48vmin;}

运行效果:

1.2 绘制信封细节

 信封主要由上下左右四个颜色不同的三角形组成。  我们加入一个新的<div>命名为cover,在原先的信封上覆盖上该元素。

<div class="cover"></div>

 并通过设置该元素前后伪元素的样式形成四个三角。  加入该<div>后的html代码如下: envelop.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"> <div class="envelope"></div> <div class="cover"></div> </div></body></html>

envelop.css 可以看到,信封有四个三角形组成。

1.2.1 CSS绘制三角形—border法

那么如何绘制出三角形呢? (会的看官可以直接往下) 这里我们使用 CSS 盒模型中的 border(边框) 即可实现。

原理: 首先来看在为元素添加 border 时,border 的样子。假设有如下代码(与本文所写项目无关):

<div></div>div { width: 50px; height: 50px; border: 2px solid orange;}

效果图:  这是我们平常使用 border 最普遍的情况——往往只给 border 一个较小的宽度(通常为 1 ~ 2px);然而这样的日常用法就会容易让大家对 border 的形成方式产生误解,即认为元素的 border 是由四个矩形边框拼接而成。

 然而事实并不是这样。实际上,元素的 border 是由三角形组合而成,为了说明这个问题,我们可以增大 border 的宽度,并为各 border 边设置不同的颜色:

div { width: 50px; height: 50px; border: 40px solid; border-color: orange blue red green;}

效果图 既然如此,那么更进一步,把元素的内容尺寸设置为 0 会发生什么情况呢?

div { width: 0; height: 0; border: 40px solid; border-color: orange blue red green;}

效果图 我们将发现,此时元素由上下左右 4 个三角形“拼接”而成;那么,为了实现最终的效果,即保留最下方的三角形,还应该怎么做?很简单,我们只需要把其它border 边的颜色设置为白色或透明色:

div { width: 0; height: 0; border: 40px solid; // 分别代表:上 左右 下 border-color: transparent transparent red;}

效果图  不过,被“隐藏”的上border 仍然占据着空间,要想使得绘制出的三角形尺寸最小化,还需要将上border的宽度设置为0(其它情况同理)。

1.2.2 绘制信封

绘制我们的信件 相信看了上面的讲解,大家一定了解了如何绘制三角形了。接下来我们将cover即其前后伪元素绘制成如下三个三角形。完成我们信封的制作。 (不了解伪元素的可以看下这篇::before选择器和::after选择器)  由于cover元素不应该影响envelope元素在页面中的位置,所以设置为绝对定位。但我们又需要该元素显示在envelope之上,我们通过修改元素的堆叠顺序,来实现该效果,即设置 z-index: 3;代码如下: envelope.css

.cover { position: absolute; height: 0; width: 0; border-bottom: 15vmin solid #f5b5bb; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 15vmin; z-index: 3;}.cover::after { /*left triangle*/ position: absolute; content: ''; border-left: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -24vmin;}.cover::before { position: absolute; content: ''; border-right: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -0.5vmin;}

最终效果如下:

1.3 信封开合动画

接着绘制信封开合的动画。信封的开合同样是一个三角形,绕信封顶部边缘旋转180°实现的。 我们先加入该三角形的<div>命名为lib加入到envelope.html中。

<div class="lid"></div>

envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"> <div class="envelope"></div> <div class="cover"></div> <div class="lid"></div> </div></body></html>

 接着创建信件开合的动画,分别为open和open-rev。  我们使用transform属性,该属性允许我们对元素进行旋转、缩放、移动或倾斜。  设置参数rotate(angle) 定义 2D 旋转,在参数中规定角度。在这里我们将angle分别设置为180deg和-180deg,从而实现三角形的旋转,呈现效果为信封的开合。 动画定义代码如下: envelope.css

@keyframes open { 100% { transform: rotatex(180deg); }}/*信件合上的动画*/@keyframes open-rev { from { transform: rotatex(-180deg); }}

 接着,我们将该元素绘制为三角形,并通过transform-origin属性,设置旋转元素的基点位置。  通过animation属性为该元素设置定义好的动画,及动画执行时间。当鼠标hover于信封时,信封打开,反之信封合上。

代码如下: envelope.css

.lid { position: absolute; height: 0; width: 0; border-top: 15vmin solid #ff8896; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 0; /*设置旋转元素的基点位置,为盒子的顶部边缘*/ transform-origin: top; animation: open-rev 2s;}.container:hover .lid { animation: open 0.5s; animation-fill-mode: forwards;}

 至此,我们的信封就大功告成啦!

运行效果:

1.4 加入阴影

 这一步较为,简单,也可以省略该元素,加入显得稍有立体感。  首先,在envelope.html中加入类名为shadow的元素。 envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"> <div class="envelope"></div> <div class="cover"></div> <div class="lid"></div> <div class="shadow"></div> </div></body></html>

 随后设置该元素的样式,为一个较窄的横向的椭圆。 envelope.css

.shadow { position: relative; top: 3vmin; border-radius: 50%; opacity: 0.7; height: 2vmin; width: 48vmin; background: #e8c5d0;}

 我们envelop部分至此就完成了!

运行效果如下:

1.5 envelope全部代码

envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"> <div class="envelope"></div> <div class="cover"></div> <div class="lid"></div> <div class="shadow"></div> </div></body></html>

envelope.css

@import url('https://fonts.googleapis.com/css2?family=Pangolin&display=swap');/*重置浏览器样式*/* { margin: 0; padding: 0;}/* 使主体居中 vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%) vh:视窗高度的百分比*/body { height: 100vh; width: 100vw; background: #FFE3EC; font-family: 'Pangolin', cursive; font-size: 1vmin; /*弹性布局*/ display: flex; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center;}/*使用相对定位(什么时候用相对定位或绝对定位?在文档流中相对定位的元素占有位置,而且会影响后面的元素(块元素、行内块元素),比如两个div并排,另外一个会换行。而绝对定位就是把该元素从文档流中踢出,不会占用文档流的位置,也不会影响后面的元素。)vmin:当前 vw 和 vh 中较小的一个值vmax:当前 vw 和 vh 中较大的一个值*/.container { position: relative; top: 0vmin;}/*相对定位,并设置背景色和大小*/.envelope { position: relative; background: #eb7885; height: 30vmin; width: 48vmin;}.cover { position: absolute; height: 0; width: 0; border-bottom: 15vmin solid #f5b5bb; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 15vmin; z-index: 3;}.cover::after { /*left triangle*/ position: absolute; content: ''; border-left: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -24vmin;}.cover::before { position: absolute; content: ''; border-right: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -0.5vmin;}/*创建信件打开的动画,使用rotateX(),围绕其在给定的度数在x轴旋转*/@keyframes open { 100% { transform: rotatex(180deg); }}/*信件合上的动画*/@keyframes open-rev { from { transform: rotatex(-180deg); }}.lid { position: absolute; height: 0; width: 0; border-top: 15vmin solid #ff8896; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 0; /*设置旋转元素的基点位置,为盒子的顶部边缘*/ transform-origin: top; animation: open-rev 2s;}.container:hover .lid { animation: open 0.5s; animation-fill-mode: forwards;}.shadow { position: relative; top: 3vmin; border-radius: 50%; opacity: 0.7; height: 2vmin; width: 48vmin; background: #e8c5d0;}2. card2.1 加入卡片元素并设置其样式

 接着,就是绘制卡片部分了,也较为简单,是一个长方形的白色卡片,设置其样式,并为其添加滑动的动画。  首先,我们在container内添加元素<div>,并命名为card。为方便我们观察,先将关于信封的元素注释掉。  代码如下: envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

接着,设置样式为白色背景的长方形。 envelope.css

.card { position: absolute; /*白色的卡片*/ background: white; height: 25vmin; width: 43vmin; display: flex; /*设置div水平显示*/ flex-direction: column; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center; left: 2.5vmin; top: 0vmin; /*卡片落回动画*/ animation: slide-rev 0.2s ease-out;}

运行效果:

2.2 加入卡片划出的动画

 首先,编写划出和落回信封的滑动动画。命名为slide和slide-rev。  我们通过transform属性来实现,设置translatey参数,使卡片纵向移动。  同时,由于卡片设置为绝对定位,为了不被信封遮挡住,我们需要在卡片划出时,提高元素的堆叠顺序,通过更改z-index属性实现。

 滑动动画代码如下: envelope.css

/*卡片划出信封*/@keyframes slide { 100% { transform: translatey(-15vmin); z-index: 2; }}/*卡片落回信封*/@keyframes slide-rev { from { transform: translatey(-15vmin); }}

接着,我们加入鼠标hover于信封时,卡片执行划出动画。

.container:hover .card { /*卡片划出动画*/ animation: slide 0.2s; animation-delay: 0.5s; /*把卡面动画地从一个地方移动到另一个地方,并让它停留在那里。*/ animation-fill-mode: forwards;}

 至此,我们的卡片就完成了。 运行效果:

2.3 加入卡片后的全部代码

envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

envelope.css

@import url('https://fonts.googleapis.com/css2?family=Pangolin&display=swap');/*重置浏览器样式*/* { margin: 0; padding: 0;}/* 使主体居中 vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%) vh:视窗高度的百分比*/body { height: 100vh; width: 100vw; background: #FFE3EC; font-family: 'Pangolin', cursive; font-size: 1vmin; /*弹性布局*/ display: flex; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center;}/*使用相对定位(什么时候用相对定位或绝对定位?在文档流中相对定位的元素占有位置,而且会影响后面的元素(块元素、行内块元素),比如两个div并排,另外一个会换行。而绝对定位就是把该元素从文档流中踢出,不会占用文档流的位置,也不会影响后面的元素。)vmin:当前 vw 和 vh 中较小的一个值vmax:当前 vw 和 vh 中较大的一个值*/.container { position: relative; top: 0vmin;}/*相对定位,并设置背景色和大小*/.envelope { position: relative; background: #eb7885; height: 30vmin; width: 48vmin;}.cover { position: absolute; height: 0; width: 0; border-bottom: 15vmin solid #f5b5bb; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 15vmin; z-index: 3;}.cover::after { /*left triangle*/ position: absolute; content: ''; border-left: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -24vmin;}.cover::before { position: absolute; content: ''; border-right: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -0.5vmin;}/*创建信件打开的动画,使用rotateX(),围绕其在给定的度数在x轴旋转*/@keyframes open { 100% { transform: rotatex(180deg); }}/*信件合上的动画*/@keyframes open-rev { from { transform: rotatex(-180deg); }}.lid { position: absolute; height: 0; width: 0; border-top: 15vmin solid #ff8896; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 0; /*设置旋转元素的基点位置,为盒子的顶部边缘*/ transform-origin: top; animation: open-rev 2s;}.container:hover .lid { animation: open 0.5s; animation-fill-mode: forwards;}.shadow { position: relative; top: 3vmin; border-radius: 50%; opacity: 0.7; height: 2vmin; width: 48vmin; background: #e8c5d0;}.card { position: absolute; /*白色的卡片*/ background: white; height: 25vmin; width: 43vmin; display: flex; /*设置div水平显示*/ flex-direction: column; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center; left: 2.5vmin; top: 0vmin; animation: slide-rev 0.2s ease-out;}.container:hover .card { /*卡片划出动画*/ animation: slide 0.2s; animation-delay: 0.5s; /*把卡面动画地从一个地方移动到另一个地方,并让它停留在那里。*/ animation-fill-mode: forwards;}/*卡片划出信封*/@keyframes slide { 100% { transform: translatey(-15vmin); z-index: 2; }}/*卡片落回信封*/@keyframes slide-rev { from { transform: translatey(-15vmin); }}3. pikachu

 现在,要开始绘制卡片上的内容啦!由文本及可爱的皮卡丘组成。为了方便观察,我们还是注释掉信封元素。

3.1加入文本叮咚,您有一封告白信件待查收(原生HTML+CSS+JS绘制表白信件,代码+链接+步骤详解)(叮咚你有一份好运请查收图片)

 首先,我们从简单的开始,在card元素间,加入我们的文本元素,命名为message,大家可以写自己想说的话。

<h1 class="message" >WILL YOU BE MY VALENTINE?</h1>

 加入文本后的代码: envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

 然后,设置文本向上移。 envelope.css

![请添加图片描述](https://img-blog.csdnimg.cn/40c8ef2d15aa43edabd8391044c0d80a.png)

运行效果:

3.2 绘制皮卡丘

 皮卡丘由躯干,耳朵,尾巴,手臂,嘴巴,以及捧着的小心心组成。我们将一一绘制。

3.2.1 绘制躯干

 首先,在card元素内,加入命名为pikachu的div元素。 envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> </div> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

 接着,我们通过设置该元素(pikachu)及其前后伪元素的样式,来绘制躯干,眼睛,脸颊以及小脚丫。

3.2.1.1 身体

 身体部分,是一个黄色的椭圆形。我们通过设置pikachu元素的样式来实现。 envelope.css

.pikachu { position: absolute; background: #f9ebaa; height: 8vmin; width: 10vmin; border-radius: 40%; top: 15vmin; display: flex;}

运行效果:

3.2.1.2 绘制头部

 头部,是一个较小的黄色椭圆形。我们通过设置pikachu::before选择的伪元素的样式来实现。 envelope.css

.pikachu::before { content: ''; position: absolute; background: #f9ebaa; height: 6vmin; width: 9vmin; border-radius: 90% 90% 60% 60%; top: -4vmin; left: 0.5vmin;}

运行效果:

3.2.1.3 绘制眼睛,脸颊以及脚

 眼睛,脸颊以及脚,通过设置pikachu::after选择的伪元素中的阴影(box-shadow)实现。 envelope.css

.pikachu::after { content: ''; position: absolute; background: transparent; height: 1vmin; width: 1vmin; top: 2vmin; left: -1.5vmin; color: #4a4947; border-radius: 50%; box-shadow: 4vmin -3.5vmin, 8vmin -3.5vmin, 2vmin -2vmin #fad598, 10vmin -2vmin #fad598, 3vmin 5vmin #f9ebaa, 9.3vmin 5vmin #f9ebaa;}

运行效果:

3.2.2 绘制耳朵及尾巴

 首先,在pikachu元素内,加入命名为limbs的div元素。 envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> <div class="limbs"></div> </div> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

 接着,我们通过设置该元素(limbs)及其前后伪元素的样式,来绘制左耳右耳及尾巴。

3.2.2.1 绘制耳朵

 两只耳朵分别为两个椭圆形。形状相同,但位置及偏移角度不同。我们通过设置limbs元素及.limbs::after选择的伪元素的样式分别实现左耳和右耳。 envelope.css

.limbs { position: relative; width: 0; height: 0; border-left: 1vmin solid transparent; border-right: 1vmin solid transparent; border-bottom: 6vmin solid #f9ebaa; border-radius: 80%; top: -6vmin; left: 1vmin; transform: rotate(-20deg);}.limbs::after { content: ''; position: absolute; width: 0; height: 0; border-left: 1vmin solid transparent; border-right: 1vmin solid transparent; border-bottom: 6vmin solid #f9ebaa; border-radius: 80%; top: 3vmin; left: 5vmin; transform: rotate(40deg);}

运行效果:

3.2.2.2 绘制尾巴

 尾巴也由两个椭圆形组成。我们通过设置.limbs::before选择的伪元素的样式,设置元素为椭圆形,再设置该元素的阴影(box-shadow)为相同颜色的椭圆形,绘制出尾巴。

envelope.css

.limbs::before { content: ''; position: absolute; background: #f9ebaa; width: 5vmin; height: 2vmin; border-radius: 40%; top: 10vmin; left: 4vmin; box-shadow: -1vmin 1.5vmin #f9ebaa;}

运行效果:  至此,皮卡丘的绘制就完成一大半啦!

3.2.3 绘制爱心

 首先,在pikachu元素内,加入命名为heart的div元素。

envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> <div class="limbs"></div> <div class="heart"></div> </div> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

 爱心由两个相同的不知道怎么说的形状组成(见图),我们通过设置heart元素样式,来固定爱心的位置,设置其前后伪元素相同的样式,并将其中一个伪元素旋转一定的角度,绘制出爱心。

 首先,固定位置,并绘制出两个半个的爱心。

envelope.css

.heart { position: relative; width: 5vmin; height: 4vmin; top: 2vmin; left: 0.6vmin;}.heart:before,.heart:after { position: absolute; content: ""; left: 2.5vmin; top: 0; width: 2.5vmin; height: 4vmin; background: #fc978b; border-radius: 2.5vmin 2.5vmin 0 0; transform: rotate(-45deg); transform-origin: 0 100%;}

运行效果:  由下图,可以看到,由于设置为绝对定位,两个相同的半个爱心,是重叠在一起的。  因此,我们只需要将其中一个,旋转一定的角度,使两个元素对称即可。

envelope.css

.heart:after { left: 0; transform: rotate(45deg); transform-origin: 100% 100%;}

 至此,我们的小爱心,也绘制完成了。

3.2.4 绘制手臂

 首先,在pikachu元素内,加入命名为arms的div元素。 envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> <div class="limbs"></div> <div class="heart"></div> <div class="arms"></div> </div> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

 手臂也是由两个与身体颜色相同的椭圆形组成的,我们通过设置arms元素及其后伪元素的样式,绘制出两只手臂。

envelope.css

.arms { position: relative; background: #f9ebaa; width: 4.2vmin; height: 2vmin; border-radius: 60% 60% 90% 60% / 50% 50% 90% 90%; top: 3vmin; left: -5vmin;}.arms::after { content: ''; position: absolute; background: #f9ebaa; width: 4vmin; height: 2vmin; border-radius: 60% 60% 90% 60% / 50% 50% 90% 90%; left: 5vmin; top: 0vmin;}

运行效果:

3.2.5 绘制嘴巴

 首先,在pikachu元素内,加入命名为smile的div元素。

envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"><!-- <div class="envelope"></div>--> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> <div class="limbs"></div> <div class="heart"></div> <div class="arms"></div> <div class="smile"></div> </div> </div><!-- <div class="cover"></div>--><!-- <div class="lid"></div>--><!-- <div class="shadow"></div>--> </div></body></html>

 嘴巴也是由两条弧线组成的,我们通过设置smile元素及其伪元素的样式,绘制出两条弧线,组成嘴巴。

envelope.css

.smile { position: relative; background: transparent; height: 1vmin; width: 1vmin; border-radius: 50%; border-bottom: 0.3vmin solid #4a4947; left: -5vmin; top: -1.3vmin;}.smile::before { position: absolute; content: ''; background: transparent; height: 1vmin; width: 1vmin; border-radius: 50%; border-bottom: 0.3vmin solid #4a4947; left: 0.7vmin;}

运行效果:

4. 信件全部代码

 我们的信件部分到此就完成了,解开注释看看具体效果吧。

全部代码如下:

envelope.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body> <div class="container"> <div class="envelope"></div> <div class="card" id="test"> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> <div class="limbs"></div> <div class="heart"></div> <div class="arms"></div> <div class="smile"></div> </div> </div> <div class="cover"></div> <div class="lid"></div> <div class="shadow"></div> </div></body></html>

envelope.css

@import url('https://fonts.googleapis.com/css2?family=Pangolin&display=swap');/*重置浏览器样式*/* { margin: 0; padding: 0;}/* 使主体居中 vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%) vh:视窗高度的百分比*/body { height: 100vh; width: 100vw; background: #FFE3EC; font-family: 'Pangolin', cursive; font-size: 1vmin; /*弹性布局*/ display: flex; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center;}/*使用相对定位(什么时候用相对定位或绝对定位?在文档流中相对定位的元素占有位置,而且会影响后面的元素(块元素、行内块元素),比如两个div并排,另外一个会换行。而绝对定位就是把该元素从文档流中踢出,不会占用文档流的位置,也不会影响后面的元素。)vmin:当前 vw 和 vh 中较小的一个值vmax:当前 vw 和 vh 中较大的一个值*/.container { position: relative; top: 0vmin;}/*相对定位,并设置背景色和大小*/.envelope { position: relative; background: #eb7885; height: 30vmin; width: 48vmin;}.cover { position: absolute; height: 0; width: 0; border-bottom: 15vmin solid #f5b5bb; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 15vmin; z-index: 3;}.cover::after { /*left triangle*/ position: absolute; content: ''; border-left: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -24vmin;}.cover::before { position: absolute; content: ''; border-right: 24.5vmin solid #ffbbc1; border-bottom: 15vmin solid transparent; border-top: 15vmin solid transparent; top: -15vmin; left: -0.5vmin;}/*创建信件打开的动画,使用rotateX(),围绕其在给定的度数在x轴旋转*/@keyframes open { 100% { transform: rotatex(180deg); }}/*信件合上的动画*/@keyframes open-rev { from { transform: rotatex(-180deg); }}.lid { position: absolute; height: 0; width: 0; border-top: 15vmin solid #ff8896; border-left: 24vmin solid transparent; border-right: 24vmin solid transparent; top: 0; /*设置旋转元素的基点位置,为盒子的顶部边缘*/ transform-origin: top; animation: open-rev 2s;}.container:hover .lid { animation: open 0.5s; animation-fill-mode: forwards;}.shadow { position: relative; top: 3vmin; border-radius: 50%; opacity: 0.7; height: 2vmin; width: 48vmin; background: #e8c5d0;}.card { position: absolute; /*白色的卡片*/ background: white; height: 25vmin; width: 43vmin; display: flex; /*设置div水平显示*/ flex-direction: column; /*设置flex子项在每个flex行的交叉轴上的中心对齐,交叉轴方向为column,即垂直方向**/ align-items: center; /*设置flex子项在主轴上的中心对齐*/ justify-content: center; left: 2.5vmin; top: 0vmin; animation: slide-rev 0.2s ease-out;}.container:hover .card { /*卡片划出动画*/ animation: slide 0.2s; animation-delay: 0.5s; /*把卡面动画地从一个地方移动到另一个地方,并让它停留在那里。*/ animation-fill-mode: forwards;}/*卡片划出信封*/@keyframes slide { 100% { transform: translatey(-15vmin); z-index: 2; }}/*卡片落回信封*/@keyframes slide-rev { from { transform: translatey(-15vmin); }}.message { position: absolute; top: 5vmin;}.pikachu { position: absolute; background: #f9ebaa; height: 8vmin; width: 10vmin; border-radius: 40%; top: 15vmin; display: flex;}.pikachu::before { content: ''; position: absolute; background: #f9ebaa; height: 6vmin; width: 9vmin; border-radius: 90% 90% 60% 60%; top: -4vmin; left: 0.5vmin;}.pikachu::after { content: ''; position: absolute; background: transparent; height: 1vmin; width: 1vmin; top: 2vmin; left: -1.5vmin; color: #4a4947; border-radius: 50%; box-shadow: 4vmin -3.5vmin, 8vmin -3.5vmin, 2vmin -2vmin #fad598, 10vmin -2vmin #fad598, 3vmin 5vmin #f9ebaa, 9.3vmin 5vmin #f9ebaa;}.limbs { position: relative; width: 0; height: 0; border-left: 1vmin solid transparent; border-right: 1vmin solid transparent; border-bottom: 6vmin solid #f9ebaa; border-radius: 80%; top: -6vmin; left: 1vmin; transform: rotate(-20deg);}.limbs::after { content: ''; position: absolute; width: 0; height: 0; border-left: 1vmin solid transparent; border-right: 1vmin solid transparent; border-bottom: 6vmin solid #f9ebaa; border-radius: 80%; top: 3vmin; left: 5vmin; transform: rotate(40deg);}.limbs::before { content: ''; position: absolute; background: #f9ebaa; width: 5vmin; height: 2vmin; border-radius: 40%; top: 10vmin; left: 4vmin; box-shadow: -1vmin 1.5vmin #f9ebaa;}.heart { position: relative; width: 5vmin; height: 4vmin; top: 2vmin; left: 0.6vmin;}.heart:before,.heart:after { position: absolute; content: ""; left: 2.5vmin; top: 0; width: 2.5vmin; height: 4vmin; background: #fc978b; border-radius: 2.5vmin 2.5vmin 0 0; transform: rotate(-45deg); transform-origin: 0 100%;}.heart:after { left: 0; transform: rotate(45deg); transform-origin: 100% 100%;}.arms { position: relative; background: #f9ebaa; width: 4.2vmin; height: 2vmin; border-radius: 60% 60% 90% 60% / 50% 50% 90% 90%; top: 3vmin; left: -5vmin;}.arms::after { content: ''; position: absolute; background: #f9ebaa; width: 4vmin; height: 2vmin; border-radius: 60% 60% 90% 60% / 50% 50% 90% 90%; left: 5vmin; top: 0vmin;}.smile { position: relative; background: transparent; height: 1vmin; width: 1vmin; border-radius: 50%; border-bottom: 0.3vmin solid #4a4947; left: -5vmin; top: -1.3vmin;}.smile::before { position: absolute; content: ''; background: transparent; height: 1vmin; width: 1vmin; border-radius: 50%; border-bottom: 0.3vmin solid #4a4947; left: 0.7vmin;}二、打开您的信件

 第二个页面,就是信件内容啦。其中元素与card上的元素基本相同。  博主在这个页面重新绘制了一只皮卡丘,增加了些光影的细节及动画。  当然,用之前那只也是可以的。

新的这只长酱紫: emmmm,现在是凌晨3点了,孩子想睡觉了,就先贴个代码吧!大家需要,可以留言或私信我,我会补上教程。相信聪明的大佬们自己也是能看懂的。

pikachu.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>pikachu</title> <link rel="stylesheet" href="pikachu.css"></head><body><div class="wrapper"> <h2>Will you be my valentine?</h2> <div class="pikachu"> <div class="head"> <div class="ears left brown"><div class="ears-inside yellow"></div></div> <div class="ears right brown"><div class="ears-inside yellow"></div></div> <div class="face yellow"> <span class="eye left brown"></span> <span class="eye right brown"></span> <span class="mouth">w</span> <span class="cachete left"></span> <span class="cachete right"></span> </div> </div> <div class="body yellow"> <div class="heart"></div> <div class="paw left yellow"></div> <div class="paw right yellow"></div> </div> <div class="leg left yellow-dark"></div> <div class="leg right yellow-dark"></div> <div class="tail yellow-dark"></div> </div></div></body></html>

pikachu.css

@import url(https://fonts.googleapis.com/css?family=Loved+by+the+King);body,html { background: #FFE3EC; height:100%; font-family: 'Loved by the King', cursive;}div, ul, span{ display: block; position: absolute; margin: auto; padding: 0; top: 0; bottom: 0; right: 0; left: 0;}.brown { background-color: #452211;}.yellow { background-color: #ffd814}.yellow-dark { background-color: #e0a100}.wrapper { height: 450px; width: 300px;}h2 { text-transform: uppercase; text-align: center; font-size: 2em; color: #452211;}.pikachu{ top: auto; height: 65%; width: 140px;}.pikachu::before { position: absolute; content: ''; background: rgba(0,0,0,0.15); height: 10px; width: 90%; margin: auto; left: 0; right: 0; bottom: 95px; border-radius: 50%;}.pikachu .head { bottom: auto; height: 120px; width: 120px; z-index: 3;}.pikachu .head .face{ width: 120px; height: 70px; top: auto; border-radius: 40px 40px 30px 30px; z-index: 2;}.face .eye { width: 14px; height: 14px; border-radius: 50%; bottom: auto; top: 28px; -webkit-animation: blink 4s infinite;}.eye.left { right: auto; left: 32px;}.eye.right { left: auto; right: 32px;}.face .mouth { text-align: center; height: 10px;}.face .cachete { width: 16px; height: 16px; border-radius: 50%; bottom: auto; top: 38px; background-color: #e64900; z-index: 9;}.cachete.left { right: auto; left: 10px;}.cachete.right { left: auto; right: 10px;}.pikachu .head .ears{ width: 20px; height: 90px; bottom: auto; border-radius: 50%; overflow: hidden; z-index: 1;}.ears.left{ right: auto; left: 10px;}.ears.right{ left: auto; right: 10px;}.ears .ears-inside{ top: auto; height: 70px; width: 30px; border-radius: 50%;}.ears.right .ears-inside{ position: absolute; left: -50%;}.pikachu .body { bottom: auto; top: 80px; height: 105px; width: 130px; border-radius: 80px 80px 40px 40px; overflow: hidden; z-index: 2;}.pikachu .body .paw{ bottom: auto; top: 50px; height: 15px; width: 30px; z-index: 9; border-bottom: 1px solid #e0a100; border-top: 1px solid #FFFFFF;}.pikachu .body .paw.left{ right: auto; left: 15px; border-radius: 0 50% 50% 0;}.pikachu .body .paw.right{ left: auto; right: 15px; border-radius: 50% 0 0 50%;}.pikachu .body .heart { width: 40px; height: 40px; bottom: auto; top: 10px; z-index: 8; animation:beat 0.45s infinite; -webkit-animation:beat 0.45s infinite;}.pikachu .body .heart:before,.pikachu .body .heart:after { position: absolute; content: ""; left: 20px; top: 30px; width: 50%; height: 100%; background: #e64900; -moz-border-radius: 20px 20px 0 0; border-radius: 10px 10px 0 0; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -ms-transform: rotate(-45deg); -o-transform: rotate(-45deg); transform: rotate(-45deg); -webkit-transform-origin: 0 100%; -moz-transform-origin: 0 100%; -ms-transform-origin: 0 100%; -o-transform-origin: 0 100%; transform-origin: 0 100%;}.pikachu .body .heart:after { left: 0px; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); transform: rotate(45deg); -webkit-transform-origin: 100% 100%; -moz-transform-origin: 100% 100%; -ms-transform-origin: 100% 100%; -o-transform-origin: 100% 100%; transform-origin :100% 100%;}.pikachu .leg { z-index: 1; bottom: auto; top: 172px; height: 20px; width: 30px;}.pikachu .leg.left { right: auto; left: 20px; border-radius: 80px 10px 80px 10px;}.pikachu .leg.right { left: auto; right: 20px; border-radius: 10px 80px 10px 80px;}.pikachu .tail { z-index: 1; height: 40px; width: 50px; left:auto; bottom: auto; top: 70px; border-radius: 10% 30%;}.signature { position: absolute; margin: auto; bottom: 0; top: auto;}.signature p{ text-align: center; font-family: Helvetica, Arial, Sans-Serif; font-size: 0.85em;}.signature .much-heart{ display: inline-block; position: relative; margin: 0 4px; height: 10px; width: 10px; background: #AC1D3F; border-radius: 4px; -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); transform: rotate(45deg);}.signature .much-heart::before,.signature .much-heart::after { display: block; content: ''; position: absolute; margin: auto; height: 10px; width: 10px; border-radius: 5px; background: #AC1D3F; top: -4px;}.signature .much-heart::after { bottom: 0; top: auto; left: -4px;}.signature a { color: #333; text-decoration: none; font-weight: bold;}@keyframes blink{0% { height: 14px; top: 28px;}5% { height: 2px; top: 34px;}10% { height: 14px; top: 28px;}40% { height: 14px; top: 28px;}50% { height: 2px; top: 34px;}55% { height: 14px; top: 28px;}100% { height: 14px; top: 28px;}}三、联结两个页面

 我们在信件页面,使用JS添加点击事件即可实现。

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>envelope</title> <link rel="stylesheet" href="envelope.css"></head><body><div class="container" > <div class="envelope" ></div> <div class="card" id="test"><!-- 添加文案--> <h1 class="message" >WILL YOU BE MY VALENTINE?</h1> <div class="pikachu"> <div class="limbs"></div> <div class="heart"></div> <div class="arms"></div> <div class="smile"></div> </div> </div> <div class="cover"></div> <div class="lid"></div> <div class="shadow"></div></div><script> window.onload = function (){ var go = document.getElementById("test"); go.onclick = function (){ location.href = "./pikachu.html" } }</script></body></html>总结

 预祝大家520快乐,愿你们今后每一个平凡的小普通,都是小牛马求而不得的心动QAQ。

链接:https://pan.baidu.com/s/1VOcJvm5555FVpdMA76XTJQ 提取码:LDL6

本文链接地址:https://www.jiuchutong.com/zhishi/299361.html 转载请保留说明!

上一篇:【毕业设计】疲劳驾驶检测系统 - python 深度学习(毕业设计烦死了)

下一篇:Linux- 系统随你玩之--玩出花活的命令浏览器上(linux中suid)

  • sql注入语句(sql注入语句万能密码)

    sql注入语句(sql注入语句万能密码)

  • qq音乐怎么设置微信来电铃声(qq音乐怎么设置不让别人看我的歌单)

    qq音乐怎么设置微信来电铃声(qq音乐怎么设置不让别人看我的歌单)

  • ios13能清空流量统计吗(ios怎么清除流量数据)

    ios13能清空流量统计吗(ios怎么清除流量数据)

  • 荣耀x10max有多屏协同功能吗(荣耀x10max可以多屏协同吗)

    荣耀x10max有多屏协同功能吗(荣耀x10max可以多屏协同吗)

  • 苹果相册里的视频删除了怎么恢复(苹果相册里的视频怎么设置壁纸)

    苹果相册里的视频删除了怎么恢复(苹果相册里的视频怎么设置壁纸)

  • 11与11pro区别(11和11pro 的区别)

    11与11pro区别(11和11pro 的区别)

  • v1814a是什么手机型号(v1813a是什么手机)

    v1814a是什么手机型号(v1813a是什么手机)

  • 为什么qq没有k歌红包(qq为什么没有唱歌红包了)

    为什么qq没有k歌红包(qq为什么没有唱歌红包了)

  • 电脑总是有乱七八糟广告怎么办(电脑总是有乱七八糟的游戏)

    电脑总是有乱七八糟广告怎么办(电脑总是有乱七八糟的游戏)

  • oppo手机忘记锁屏图案打不开手机怎么办(oppo手机忘记锁屏图案怎样解锁)

    oppo手机忘记锁屏图案打不开手机怎么办(oppo手机忘记锁屏图案怎样解锁)

  • 公众号能设几个管理员(公众号可以多个人管理吗)

    公众号能设几个管理员(公众号可以多个人管理吗)

  • xsmax多大(xsmax手机多大尺寸)

    xsmax多大(xsmax手机多大尺寸)

  • 正常ipad充电时间(ipad使用时充电)

    正常ipad充电时间(ipad使用时充电)

  • 腾讯会议静音后放音乐别人能听到吗(腾讯会议静音后录屏有声音吗)

    腾讯会议静音后放音乐别人能听到吗(腾讯会议静音后录屏有声音吗)

  • 戴尔电脑摄像头打不开怎么回事(戴尔电脑摄像头旁边的小孔是)

    戴尔电脑摄像头打不开怎么回事(戴尔电脑摄像头旁边的小孔是)

  • 电脑不支持5gwifi怎么办(电脑不支持5gwifi有什么办法)

    电脑不支持5gwifi怎么办(电脑不支持5gwifi有什么办法)

  • 手机没玩多久就发烫是怎么回事(手机没玩多久就特别烫是什么原因)

    手机没玩多久就发烫是怎么回事(手机没玩多久就特别烫是什么原因)

  • 头戴和入耳音质差别(头戴和入耳音质哪个好)

    头戴和入耳音质差别(头戴和入耳音质哪个好)

  • oppor17系统更新的坏处(oppor17系统更新到几个版本了?)

    oppor17系统更新的坏处(oppor17系统更新到几个版本了?)

  • 华为荣耀20可不可以超级截屏(华为荣耀可不可以无线充电)

    华为荣耀20可不可以超级截屏(华为荣耀可不可以无线充电)

  • oppo卡机如何关机(oppo手机卡住怎样关机)

    oppo卡机如何关机(oppo手机卡住怎样关机)

  • 导航浮窗是什么意思(导航浮标是什么)

    导航浮窗是什么意思(导航浮标是什么)

  • 苹果快捷指令中心打不开(苹果快捷指令中心怎么用)

    苹果快捷指令中心打不开(苹果快捷指令中心怎么用)

  • 通话中断痕迹怎么删除(通话中断怎么恢复)

    通话中断痕迹怎么删除(通话中断怎么恢复)

  • 华为不支持网易云音乐吗(华为不支持网易大神登录)

    华为不支持网易云音乐吗(华为不支持网易大神登录)

  • 苹果x红外线怎么开启(苹果x红外线坏了怎么修)

    苹果x红外线怎么开启(苹果x红外线坏了怎么修)

  • Lxbkbmon.exe是什么进程 有什么作用 Lxbkbmon进程查询(xwizard.exe是什么)

    Lxbkbmon.exe是什么进程 有什么作用 Lxbkbmon进程查询(xwizard.exe是什么)

  • 普通增值税有什么用
  • 残保金为啥经过个人账户
  • 企业土地使用税征收标准
  • 转出未交增值税年末怎么转平
  • 收到赔偿款怎么做分录
  • 高速公路上的机电一体化有哪些
  • 资产负债表中其他流动资产包括哪些科目
  • 个人提供劳务给个人,不开票要缴税吗
  • 月末在产品的原材料定额费用计算公式
  • 劳动保护费现金流量表项目
  • 外币折算会计处理例题
  • 货物已到发票未到怎么做账
  • 劳动局仲裁支付的补偿怎么做账?
  • 纳税申报表如何导出
  • 确定发出存货实际成本的方法
  • 甲供材简易征收税率
  • 出现一窗式比对失败,该纳税人没有防伪税控比对信息!
  • 企业所得税预缴可以不交吗
  • 电话费补贴属于免税收入吗
  • 小规模纳税人减免税明细表怎么填
  • 补发工资补缴公积金一直没到账
  • 外省工程需要什么手续
  • 视同销售行为怎么进行财税处理?
  • 库存商品的核算方法
  • 哪些科目适用于借方多栏式
  • 购货申请书
  • ping命令出现unreachable
  • efi bios u盘启动
  • 毛利润,纯利润
  • 预提电费及电费发票到账的会计分录
  • win11打开图片
  • 各种linux
  • windows设备超时是什么意思
  • php常用设计模式(大总结)
  • driver-e
  • Netlib.exe - Netlib是什么进程 有什么用
  • 吕宋岛以南坐落着21座极大的岛屿
  • 旧货回收增值税率是多少
  • qgc地面站源码
  • opencv如何使用
  • stable Diffusion安装教程
  • mfcc特征提取过程
  • ai与自动化有什么区别
  • 是否就地汇总纳税
  • 帝国cms到底好不好
  • 燃气管道安装费和暖气管道安装费两个的欠条怎么写
  • 销售房产收取预算费用
  • 本年累计金额怎么得到
  • 员工垫付公司的保险费
  • discuz怎么使用
  • 印花税的特点是
  • 汽车租赁费怎么赋码
  • 增值税进项税额加计抵减政策
  • 计提折旧的固定资产全年平均总值怎么算
  • 所得税汇算清缴调整后要账务处理吗
  • 印花税减免税优惠政策2019
  • 中级会计实务主观题怎么给分
  • 现金支付现金股利
  • 售后租回会计处理分录
  • 增值税年末一定要结转吗
  • 红冲发票金额大于原发票金额
  • 私营公司应付工资的规定
  • win7历史记录在哪里
  • 让Windows XP、2003、2008自动登录的设置
  • page文档的排版技巧
  • win10预览版好吗
  • win单击变双击
  • mac 8g 虚拟机
  • 戴尔笔记本自带win7系统盘重装系统
  • win7小技巧
  • js拖动图片
  • textview可以点击吗
  • c++ nops
  • 管道的实现
  • pythonweb框架有哪些
  • pycharm官方教程
  • node.js express中app.param的用法详解
  • Python中强大的命令行库click入门教程
  • jquery新增属性
  • 为何会税控盘时钟异常
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设