炫酷樱花花瓣飘落 HTML(附源码)

图片预览
由于本人比较懒就不录视频了
话不多咱们直接上代码

// A code block
var foo = 'bar';
// An highlighted block
var foo = 'bar';
正文
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <style>body {
   
    padding:0;
    margin:0;
    overflow:hidden;
	height: 600px;
}
canvas {
   
    padding:0;
    margin:0;
}
div.btnbg {
   
    position:fixed;
    left:0;
    top:0;
}</style>
 </HEAD>

 <BODY>
<canvas id="sakura"></canvas>
<div class="btnbg">
</div>

<!-- sakura shader -->
<script id="sakura_point_vsh" type="x-shader/x_vertex">
uniform mat4 uProjection;
uniform mat4 uModelview;
uniform vec3 uResolution;
uniform vec3 uOffset;
uniform vec3 uDOF;  //x:focus distance, y:focus radius, z:max radius
uniform vec3 uFade; //x:start distance, y:half distance, z:near fade start

attribute vec3 aPosition;
attribute vec3 aEuler;
attribute vec2 aMisc; //x:size, y:fade

varying vec3 pposition;
varying float psize;
varying float palpha;
varying float pdist;

//varying mat3 rotMat;
varying vec3 normX;
varying vec3 normY;
varying vec3 normZ;
varying vec3 normal;

varying float diffuse;
varying float specular;
varying float rstop;
varying float distancefade;

void main(void) {
   
    // Projection is based on vertical angle
    vec4 pos = uModelview * vec4(aPosition + uOffset, 1.0);
    gl_Position = uProjection * pos;
    gl_PointSize = aMisc.x * uProjection[1][1] / -pos.z * uResolution.y * 0.5;
    
    pposition = pos.xyz;
    psize = aMisc.x;
    pdist = length(pos.xyz);
    palpha = smoothstep(0.0, 1.0, (pdist - 0.1) / uFade.z);
    
    vec3 elrsn = sin(aEuler);
    vec3 elrcs = cos(aEuler);
    mat3 rotx = mat3(
        1.0, 0.0, 0.0,
        0.0, elrcs.x, elrsn.x,
        0.0, -elrsn.x, elrcs.x
    );
    mat3 roty = mat3(
        elrcs.y, 0.0, -elrsn.y,
        0.0, 1.0, 0.0,
        elrsn.y, 0.0, elrcs.y
    );
    mat3 rotz = mat3(
        elrcs.z, elrsn.z, 0.0, 
        -elrsn.z, elrcs.z, 0.0,
        0.0, 0.0, 1.0
    );
    mat3 rotmat = rotx * roty * rotz;
    normal = rotmat[2];
    
    mat3 trrotm = mat3(
        rotmat[0][0], rotmat[1][0], rotmat[2][0],
        rotmat[0][1], rotmat[1][1], rotmat[2][1],
        rotmat[0][2], rotmat[1][2], rotmat[2][2]
    );
    normX = trrotm[0];
    normY = trrotm[1];
    normZ = trrotm[2];
    
    const vec3 lit = vec3(0.6917144638660746, 0.6917144638660746, -0.20751433915982237);
    
    float tmpdfs = dot(lit, normal);
    if(tmpdfs < 0.0) {
   
        normal = -normal;
        tmpdfs = dot(lit, normal);
    }
    diffuse = 0.4 + tmpdfs;
    
    vec3 eyev = normalize(-pos.xyz);
    if(dot(eyev, normal) > 0.0) {
   
        vec3 hv = normalize(eyev + lit);
        specular = pow(max(dot(hv, normal), 0.0), 20.0);
    }
    else {
   
        specular = 0.0;
    }
    
    rstop = clamp((abs(pdist - uDOF.x) - uDOF.y) / uDOF.z, 0.0, 1.0);
    rstop = pow(rstop, 0.5);
    //-0.69315 = ln(0.5)
    distancefade = min(1.0, exp((uFade.x - pdist) * 0.69315 / uFade.y));
}
</script>
<script id="sakura_point_fsh" type="x-shader/x_fragment">
#ifdef GL_ES
//precision mediump float;
precision highp float;
#endif

uniform vec3 uDOF;  //x:focus distance, y:focus radius, z:max radius
uniform vec3 uFade; //x:start distance, y:half distance, z:near fade start

const vec3 fadeCol = vec3(0.08, 0.03, 0.06);

varying vec3 pposition;
varying float psize;
varying float palpha;
varying float pdist;

//varying mat3 rotMat;
varying vec3 normX;
varying vec3 normY;
varying vec3 normZ;
varying vec3 normal;

varying float diffuse;
varying float specular;
varying float rstop;
varying float distancefade;

float ellipse(vec2 p, vec2 o, vec2 r) {
   
    vec2 lp = (p - o) / r;
    return length(lp) - 1.0;
}

void main(void) {
   
    vec3 p = vec3(gl_PointCoord - vec2(0.5, 0.5), 0.0) * 2.0;
    vec3 d = vec3(0.0, 0.0, -1.0);
    float nd = normZ.z; //dot(-normZ, d);
    if(abs(nd) < 0.0001) discard;
    
    float np = dot(normZ, p);
    vec3 tp = p + d * np / nd;
    vec2 coord = vec2(dot(normX, tp), dot(normY, tp));
    
    //angle = 15 degree
    const float flwrsn = 0.258819045102521;
    const float flwrcs = 0.965925826289068;
    mat2 flwrm = mat2(flwrcs, -flwrsn, flwrsn, flwrcs);
    vec2 flwrp = vec2(abs(coord.x), coord.y) * flwrm;
    
    float r;
    if(flwrp.x < 0.0) {
   
        r = ellipse(flwrp, vec2(0.065, 0.024) * 0.5, vec2(0.36, 0.96) * 0.5);
    }
    else {
   
        r = ellipse(flwrp, vec2(0.065, 0.024) * 0.5, vec2(0.58, 0.96) * 0.5);
    }
    
    if(r > rstop) discard;
    
    vec3 col = mix(vec3(1.0, 0.8, 0.75), vec3(1.0, 0.9, 0.87), r);
    float grady = mix(0.0, 1.0, pow(coord.y * 0.5 + 0.5, 0.35));
    col *= vec3(1.0, grady, grady);
    col *= mix(0.8, 1.0, pow(abs(coord.x), 0.3));
    col = col * diffuse + specular;
    
    col = mix(fadeCol, col, distancefade);
    
    float alpha = (rstop > 0.001)? (0.5 - r / (rstop * 2.0)) : 1.0;
    alpha = smoothstep(0.0, 1.0, alpha) * palpha;
    
    gl_FragColor = vec4(col * 0.5, alpha);
}
</script>
<!-- effects -->
<script id="fx_common_vsh" type="x-shader/x_vertex">
uniform vec3 uResolution;
attribute vec2 aPosition;

varying vec2 texCoord;
varying vec2 screenCoord;

void main(void) {
   
    gl_Position = vec4(aPosition, 0.0, 1.0);
    texCoord = aPosition.xy * 0.5 + vec2(0.5, 0.5);
    screenCoord = aPosition.xy * vec2(uResolution.z, 1.0);
}
</script>
<script id="bg_fsh" type="x-shader/x_fragment">
#ifdef GL_ES
//precision mediump float;
precision highp float;
#endif

uniform vec2 uTimes;

varying vec2 texCoord;
varying vec2 screenCoord;

void main(void) {
   
    vec3 col;
    float c;
    vec2 tmpv = texCoord * vec2(0.8, 1.0) - vec2(0.95, 1.0);
    c = exp(-pow(length(tmpv) * 1.8, 2.0));
    col = mix(vec3(0.02, 0.0, 0.03), vec3(0.96, 0.98, 1.0) * 1.5, c);
    gl_FragColor = vec4(col * 0.5, 1.0);
}
</script>
<script id="fx_brightbuf_fsh" type="x-shader/x_fragment">
#ifdef GL_ES
//precision mediump float;
precision highp float;
#endif
uniform sampler2D uSrc;
uniform vec2 uDelta;

varying vec2 texCoord;
varying vec2 screenCoord;

void main(void) {
   
    vec4 col = texture2D(uSrc, texCoord);
    gl_FragColor = vec4(col.rgb * 2.0 - vec3(0.5), 1.0);
}
</script>
<script id="fx_dirblur_r4_fsh" type="x-shader/x_fragment">
#ifdef GL_ES
//precision mediump float;
precision highp float;
#endif
uniform sampler2D uSrc;
uniform vec2 uDelta;
uniform vec4 uBlurDir; //dir(x, y), stride(z, w)

varying vec2 texCoord;
varying vec2 screenCoord;

void main(void) {
   
    vec4 col = texture2D(uSrc, texCoord);
    col = col + texture2D(uSrc, texCoord + uBlurDir.xy * uDelta);
    col = col + texture2D(uSrc, texCoord - uBlurDir.xy * uDelta);
    col = col + texture2D(uSrc, texCoord + (uBlurDir.xy + uBlurDir.zw) * uDelta);
    col = col + texture2D(uSrc, texCoord - (uBlurDir.xy + uBlurDir.zw) * uDelta);
    gl_FragColor = col / 5.0;
}
</script>
<!-- effect fragment shader template -->
<script id="fx_common_fsh" type="x-shader/x_fragment">
#ifdef GL_ES
//precision mediump float;
precision highp float;
#endif
uniform s
### 回答1: 表白炫酷HTML网页源码是一种通过使用HTML标签和CSS样式表来创建一个炫酷的表白网页的技术。 首先,需要创建一个HTML文档,可以使用`<!DOCTYPE>`声明来指定文档类型,然后使用`<html>`标签包裹整个文档。 在`<html>`标签内,可以使用`<head>`标签来定义文档的头部信息,比如设置字符编码和引入外部CSS样式表。在`<head>`标签内,可以添加如下代码: ```html <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <title>表白炫酷网页</title> </head> ``` 上述代码定义了文档的字符编码为UTF-8,并引入了一个名为`style.css`的外部CSS样式表,同时定义了网页的标题为"表白炫酷网页"。 接着,在`<html>`标签内,可以使用`<body>`标签来定义文档的主体内容。在`<body>`标签内,可以添加各种HTML标签和CSS样式来创建炫酷的表白网页,比如添加背景图片、设置文字样式、添加动画效果等。 下面是一个简单的示例,展示如何创建一个带有背景图片的表白炫酷网页: ```html <body> <div class="container"> <h1>我喜欢你</h1> <p>你是我生命中最重要的人,愿意和你共度一生。</p> </div> </body> ``` 在上述代码中,我们使用了一个`<div>`标签来创建一个容器,并在容器内添加了一个`<h1>`标签和一个`<p>`标签来显示文字内容。 最后,我们可以在外部CSS样式表中添加样式定义,来进一步美化网页。例如,我们可以为容器添加背景图片,并修改文字样式,如下所示: ```css .container { background-image: url("background.jpg"); text-align: center; padding: 50px; } h1 { font-size: 48px; color: white; text-shadow: 2px 2px 4px #000000; } p { font-size: 24px; color: white; text-shadow: 1px 1px 2px #000000; } ``` 上述CSS样式定义了容器的背景图片为`background.jpg`,设置了居中对齐和内边距为50px。同时,定义了`<h1>`和`<p>`标签的字体大小、颜色和文字阴影效果。 通过编写以上HTML和CSS代码,就可以创建一个炫酷的表白网页。当然,以上只是一个简单的示例,实际上可以根据需要自定义更多的HTML标签和CSS样式,以及添加更多复杂的效果和交互。 ### 回答2: 表白是一种浪漫而勇敢的行为,如今在现代社交平台上,人们常常通过文字、图片和视频表达自己的情感。而制作一份炫酷HTML网页源码,可以让你的表白更加特别和难忘。 首先,你需要选择一个合适的HTML编辑器。可以选择常见的文本编辑器,如Notepad++或Sublime Text,或者使用专门的HTML编辑器,如Adobe Dreamweaver。然后,创建一个新的HTML文件。 在HTML文件中,你可以使用各种标签和元素来制作你的炫酷表白网页。你可以使用标题标签来显示你的表白标题,使用段落标签来展示你的表白内容。此外,你还可以使用图片和视频标签来展示你们的照片或视频。可以选择一些美丽的背景图片或动画效果,来增加整个页面的炫酷感。 另外,你可以使用CSS样式来美化你的网页。通过添加内联样式或链接外部样式表,你可以改变文字的颜色、字体和大小,设置背景的颜色和图片,以及添加各种鼠标悬停效果和过渡动画等等。这样可以使你的网页更加炫酷和个性化。 在整个网页的最后,你可以添加一段特别的表白语句和表白按钮。通过JavaScript和jQuery等技术,可以设置一个点击按钮,点击后会触发一段浪漫的音乐或显示隐藏的表白信息。 总之,制作一份炫酷HTML网页源码是一种特别的表白方式。通过选择合适的编辑器,并应用HTML、CSS和JavaScript等技术,你可以创造出一个独特而令人难忘的表白网页,传达你对对方的深深情感。这种创意与浪漫结合的方式,必定能够给对方带来惊喜和感动。 ### 回答3: 表白炫酷HTML网页源码是一种用于表达浪漫情感的网页设计代码。这种网页源码通常包含一系列动画、特效和图像元素,以吸引人们的注意力并增强浪漫氛围。以下是一个示例的300字回答: 表白炫酷HTML网页源码是一种令人叹为观止的网页设计代码,用于表达真挚的情感。通过使用HTML、CSS和JavaScript等技术,设计师可以打造出一个充满浪漫和创意的网页来宣示爱意。 首先,设计师可以选择一个浪漫的背景,例如星空、海滩或夜晚的城市风景。背景可以通过CSS代码来设置,并且可以使用不同的动态特效,例如动画星星闪烁或流动的水波纹效果。 其次,设计师可以在网页中加入一些特殊的动画元素来吸引人们的眼球。例如,在页面的顶部可以设置一个飘落的爱心雨效果,或者在屏幕上飞向目标的彩带效果。这些动画元素能够增加整个网页的浪漫氛围。 另外,设计师还可以加入一些个性化的特效来提升网页的炫酷程度。例如,当鼠标悬停在某个按钮上时,可以使用CSS和JavaScript来实现按钮的放大或颜色变化。这些特效可以营造出一种有趣和惊喜的交互体验。 最重要的是,设计师可以使用HTML和CSS来定制文字内容的样式和排版。通过选择合适的字体、颜色和大小,以及添加一些动态的文字特效,例如文字的闪烁或渐变,可以增加网页的吸引力。 总之,表白炫酷HTML网页源码是通过使用HTML、CSS和JavaScript等技术来设计一个充满浪漫和创意的网页,以表达真挚情感的一种方式。通过加入动画、特效和个性化的排版,可以打造一个令人难以忘怀的表白网页。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值