首页 > 编程语言 >HTML,CSS,JavaScript实例——3D骰子,跨纬度蠕虫,动态登录表单。

HTML,CSS,JavaScript实例——3D骰子,跨纬度蠕虫,动态登录表单。

时间:2024-06-08 11:03:15浏览次数:14  
标签:center 100% JavaScript width HTML let login border CSS

文章目录


一、3D筛子

在这里插入图片描述

1.HTML

<!--ring div starts here-->
<div class="ring">
  <i style="--clr:#00ff0a;"></i>
  <i style="--clr:#ff0057;"></i>
  <i style="--clr:#fffd44;"></i>
  <div class="login">
    <h2>Login</h2>
    <div class="inputBx">
      <input type="text" placeholder="Username">
    </div>
    <div class="inputBx">
      <input type="password" placeholder="Password">
    </div>
    <div class="inputBx">
      <input type="submit" value="Sign in">
    </div>
    <div class="links">
      <a href="#">Forget Password</a>
      <a href="#">Signup</a>
    </div>
  </div>
</div>
<!--ring div ends here-->

2.CSS

@import url("https://fonts.googleapis.com/css2?family=Quicksand:wght@300&display=swap");
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Quicksand", sans-serif;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  background: #111;
  width: 100%;
  overflow: hidden;
}
.ring {
  position: relative;
  width: 500px;
  height: 500px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.ring i {
  position: absolute;
  inset: 0;
  border: 2px solid #fff;
  transition: 0.5s;
}
.ring i:nth-child(1) {
  border-radius: 38% 62% 63% 37% / 41% 44% 56% 59%;
  animation: animate 6s linear infinite;
}
.ring i:nth-child(2) {
  border-radius: 41% 44% 56% 59%/38% 62% 63% 37%;
  animation: animate 4s linear infinite;
}
.ring i:nth-child(3) {
  border-radius: 41% 44% 56% 59%/38% 62% 63% 37%;
  animation: animate2 10s linear infinite;
}
.ring:hover i {
  border: 6px solid var(--clr);
  filter: drop-shadow(0 0 20px var(--clr));
}
@keyframes animate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
@keyframes animate2 {
  0% {
    transform: rotate(360deg);
  }
  100% {
    transform: rotate(0deg);
  }
}
.login {
  position: absolute;
  width: 300px;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  gap: 20px;
}
.login h2 {
  font-size: 2em;
  color: #fff;
}
.login .inputBx {
  position: relative;
  width: 100%;
}
.login .inputBx input {
  position: relative;
  width: 100%;
  padding: 12px 20px;
  background: transparent;
  border: 2px solid #fff;
  border-radius: 40px;
  font-size: 1.2em;
  color: #fff;
  box-shadow: none;
  outline: none;
}
.login .inputBx input[type="submit"] {
  width: 100%;
  background: #0078ff;
  background: linear-gradient(45deg, #ff357a, #fff172);
  border: none;
  cursor: pointer;
}
.login .inputBx input::placeholder {
  color: rgba(255, 255, 255, 0.75);
}
.login .links {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
}
.login .links a {
  color: #fff;
  text-decoration: none;
}


二、跨纬度蠕虫

在这里插入图片描述

1.HTML

<div id="controls"></div>

2.CSS

* { margin:0; padding:0; } 
html, body { width:100%; height:100%; overflow: hidden; background:black;} 
canvas { display:block; }
#controls {
  z-index: 2;
  margin: 20px;
  position: absolute;
  top: 0; left: 0;
  color: white;
}

3.JS

let maxPoints = 2000;
let addSpeed  = 4;

class Vec3{
  constructor(x, y, z, r=10){
    this.x = x;
    this.y = y;
    this.z = z;
    this.r = r;
    this.count = 0;
  }
  op(p, f){
    this.x = f(this.x, p.x != undefined ? p.x : p);
    this.y = f(this.y, p.y != undefined ? p.y : p);
    this.z = f(this.z, p.z != undefined ? p.z : p);
    return this;
  }
  plus  (p){return this.op(p, (a, b) => a + b)}
  minus (p){return this.op(p, (a, b) => a - b)}
  times (p){return this.op(p, (a, b) => a * b)}
  div   (p){return this.op(p, (a, b) => a / b)}
  distTo(p){return Math.hypot(this.x-p.x, this.y-p.y, this.x-p.z)}
  clone  (){return new Vec3(this.x, this.y, this.z, this.r)}
  updateRotation(){
    let {x, y, z} = this.clone().minus(origin);
    this.screenCoord = [
      (x*cx - y*sx),
      (y*cx + x*sx)*cy + sy*z
    ];
    this.depth = z*cy - sy*(y*cx + x*sx);
  }
  render(){
    this.count++;
    
    let amt = this.count/maxPoints;
    amt = 1-(cos(amt*addSpeed*TAU)+1)/2;
    amt = pow(amt, .5);
    
    noFill();
    stroke(this.hue, .3, 1, .05);
    strokeWeight(.5);
    
    let r = noise((this.x+frameCount)/200, this.y/200, this.z/200)*50 + 10;
    rect(...this.screenCoord, r*amt, r*amt);
  }
}

function setup (){
  pixelDensity(1);
  createCanvas();
  colorMode(HSB, 1, 1, 1);
  rectMode(CENTER);
  windowResized();
}

let points = [];
let r = (n) => random(-n, n);
let v3 = (x, y, z) => new Vec3(x, y, z);
let l3 = (p1, p2, c) => new Line(p1, p2, c);
let rPoint = (n) => v3(r(n), r(n), r(n));

let step = 0;
let d = 200;
let t = 0;
let p = 0;
let nextPoint = () => {
  step++;

  d = lerp(d, 150, .001);
  d += (noise(step/100, 1e6)*2-1)*.1;
  d = constrain(d, 100, 200);
  t += (noise(step/200, 1e7)*2-1)*.02;
  p += (noise(step/200, 1e8)*2-1)*.02;

  let x = d * sin(t) * cos(p);
  let z = d * sin(t) * sin(p);
  let y = d * cos(t);

  let v = v3(x, y, z);
  v.hue = ((step/3)/maxPoints)%1;
  return v;
}

let init = () => {
  points = [];
  step = 0;
  d = 200;
  t = 0;
  p = 0;
  
  noiseSeed(random()*1e8);
  
  for (let i = 0; i < maxPoints; i++){    
    points.push(nextPoint());
  }
}

let rotY = -Math.PI/4;
let rotX = .4;
let zoom = 2;
let cx, sx, cy, sy;

let near = 500;

let mX = 0;
let mY = 0;

let origin = new Vec3(0, 0, 0);

function draw(){
  background(0, .3);
  stroke(1);
  
  push();
  updateCamera();
  translate(width/2, height/2);
  scale(zoom);
  let [x, y] = origin.screenCoord;
  translate(x, y);
  
  let n = near/(zoom*zoom);
  
  blendMode(ADD);
  for (let i = 0; i < addSpeed; i++){
    points.shift();
    points.push(nextPoint());
  }
  points.map(p => p.updateRotation());
  points.map(p => p.render());
  pop();
}

let updateCamera = () => {
  rotX += mX;
  rotY += mY;
  rotY = constrain(rotY, -PI, 0);
  mX *= .9;
  mY *= .9;
  
  [cx, sx, cy, sy] = [cos(rotX), sin(rotX), cos(rotY), sin(rotY)];
  
  rotX += .002;
  
  origin.updateRotation();
}

let pointerIsDown = false;
let prevX = 0;
let prevY = 0;
window.addEventListener("pointerdown", evt => {
  pointerIsDown = true;
  prevX = evt.clientX;
  prevY = evt.clientY;
  console.log("pointerdown");
});

window.addEventListener("pointerup", evt => {
  pointerIsDown = false;
  console.log("pointerup");
})

window.addEventListener("pointermove", evt => {

  if (pointerIsDown){
    let [x, y] = [evt.clientX, evt.clientY];
    if (prevX && prevY && x && y){
      let moveX = x-prevX;
      let moveY = y-prevY;
      mX = -moveX/100;
      mY =  moveY/100;
      prevX = x;
      prevY = y;
    }
  }
});

function windowResized(){
  resizeCanvas(windowWidth, windowHeight);
  zoom = min(width, height)*2/862;
  init();
}

三、动态登录表单

在这里插入图片描述

1.HTML

<!--ring div starts here-->
<div class="ring">
  <i style="--clr:#00ff0a;"></i>
  <i style="--clr:#ff0057;"></i>
  <i style="--clr:#fffd44;"></i>
  <div class="login">
    <h2>Login</h2>
    <div class="inputBx">
      <input type="text" placeholder="Username">
    </div>
    <div class="inputBx">
      <input type="password" placeholder="Password">
    </div>
    <div class="inputBx">
      <input type="submit" value="Sign in">
    </div>
    <div class="links">
      <a href="#">Forget Password</a>
      <a href="#">Signup</a>
    </div>
  </div>
</div>
<!--ring div ends here-->

2.CSS

@import url("https://fonts.googleapis.com/css2?family=Quicksand:wght@300&display=swap");
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Quicksand", sans-serif;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  background: #111;
  width: 100%;
  overflow: hidden;
}
.ring {
  position: relative;
  width: 500px;
  height: 500px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.ring i {
  position: absolute;
  inset: 0;
  border: 2px solid #fff;
  transition: 0.5s;
}
.ring i:nth-child(1) {
  border-radius: 38% 62% 63% 37% / 41% 44% 56% 59%;
  animation: animate 6s linear infinite;
}
.ring i:nth-child(2) {
  border-radius: 41% 44% 56% 59%/38% 62% 63% 37%;
  animation: animate 4s linear infinite;
}
.ring i:nth-child(3) {
  border-radius: 41% 44% 56% 59%/38% 62% 63% 37%;
  animation: animate2 10s linear infinite;
}
.ring:hover i {
  border: 6px solid var(--clr);
  filter: drop-shadow(0 0 20px var(--clr));
}
@keyframes animate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
@keyframes animate2 {
  0% {
    transform: rotate(360deg);
  }
  100% {
    transform: rotate(0deg);
  }
}
.login {
  position: absolute;
  width: 300px;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  gap: 20px;
}
.login h2 {
  font-size: 2em;
  color: #fff;
}
.login .inputBx {
  position: relative;
  width: 100%;
}
.login .inputBx input {
  position: relative;
  width: 100%;
  padding: 12px 20px;
  background: transparent;
  border: 2px solid #fff;
  border-radius: 40px;
  font-size: 1.2em;
  color: #fff;
  box-shadow: none;
  outline: none;
}
.login .inputBx input[type="submit"] {
  width: 100%;
  background: #0078ff;
  background: linear-gradient(45deg, #ff357a, #fff172);
  border: none;
  cursor: pointer;
}
.login .inputBx input::placeholder {
  color: rgba(255, 255, 255, 0.75);
}
.login .links {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
}
.login .links a {
  color: #fff;
  text-decoration: none;
}

标签:center,100%,JavaScript,width,HTML,let,login,border,CSS
From: https://blog.csdn.net/weixin_49837118/article/details/139543683

相关文章

  • Web大学生网页作业成品——仿腾讯游戏官网网站设计与实现(HTML+CSS+JavaScript)
    ......
  • vsode (Visual Studio Code) JS -- HTML 教程
    vsode(VisualStudioCode)JS–HTML教程JavaScript是什么-JavaScript是一种基于对象和事件驱动的脚本语言,广泛用于在网页上实现动态交互效果。JavaScript可以嵌入到HTML页面中,通过在脚本标签中编写JavaScript代码来实现各种功能。它主要用于处理用户交互、操......
  • JavaScript中的async/await
    async/await是什么?async是一个修饰符,async定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数。await也是一个修饰符,await关键字只能放在async函数内部,await关键字的作用就是获取Promise中返回......
  • html页面上点击图片放大
    需求:我这里是搭配wangeditor插件使用,然后用直接拿到wangeditor输入的内容用dangerouslySetInnerHTML直接渲染的html页面,页面的代码里面并没有<p><p/><img/>这类标签dangerouslySetInnerHTML渲染如下所示:因为代码里面并不存在标签,也没办法给加事件,所以这里只能是用原生js......
  • 原生html+js实现两两元素配对,用线条连接两个元素
    效果如下:画线部分借鉴了“https://blogweb.cn/article/1403842582411”此链接文章作者的代码,感谢!直接放出代码:点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>配对</title><scripttype=&qu......
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
    .netcore使用js,.netcore使用javascript,在.netcore项目中怎么使用javascript我项目里需要用到“文字编码”,为了保证前端和后端的编码解码不处bug,所以,我在项目中用了这个下面推荐之前在.netF4.0时的方法文章一:c#解码js的escape_c#escape-CSDN博客文章二:c#对js......
  • css3
    css之盒子模型和浮动盒子模型定义:网页设计中用来描述布局元素的一种模型,将每个元素看做一个具有4个边界的矩形盒子组成部分:内容区域content内边距padding边框border外边距margin{margin:上右下左}{padding:浮动块级标签脱离页面,浮动在页面之上:问题:遮盖......
  • HTML5+CSS3+JS小实例:网格图库
    实例:网格图库技术栈:HTML+CSS+JS效果:源码:【HTML】<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 获取自定义 HTML 开头标记和结尾标记之间的文本
    $data="<Data>hello</Data>";preg_match_all("/\<Data\>[.]+\<\/Data\>/",$data,$match);print_r($match);返回:Array([0]=>Array())Array([0]=>Array())所以我猜没有匹配到?你是对的,你的正则表达式没有匹配......
  • html
    基本标签注释<!--注释标签--><!---->DOCTYPE<!--标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档。--><!DOCTYPEhtml>html<!--html的代码都写在这个标签中,写在标签外是不会显......