html+css一些简单案例:爱心点击,盒子模型,2d动画


canvas绘制爱心

效果预览

image-20201216145101665

上代码





    HTML5 Canvas爱心飘动动画特效
    



    
    
    




表格标签

  • 表格标签学习
    table:声明一个表格
    • 属性:
      • border:给表格加边框
      • width设置表格的宽度
      • height设置表格高度
      • cellpadding设置内容距边框的距离
      • cellspacing设置边框的大小
    • 元素
      • th:声明一个单元格默认加黑
      • tr:声明一行
      • td:声明一个单元格
        • 属性:
        • width设置表格的宽度
        • height设置表格高度
        • cowspan行合并
        • rowspan列合并
        • 特点:默认根据数据的大小显示





    时间册图片链接2017.html
    
    



    
  • 第一张

  • 第一张

  • 第一张

  • 第一张

  • 第一张

  • 第一张

  • 第一张

图标引用


照片墙案例

效果预览

image-20201216151640920

上代码





    css的样式使用
    
    



    



注册页面

效果预览

image-20201216151800136

上代码



    
        注册页面
        
    
    
        

注册页面


用户名:
密码:
邮箱:
手机号:
性别:
爱好: 唱歌 打球 睡觉
籍贯:
个人介绍:
是否同意本公司协议

爱心点击

效果预览

image-20201216152230876

上代码





    my css调用
    
    
    



    

    



/*!
 * Fairy Dust Cursor.js
 * - 90's cursors collection
 * -- https://github.com/tholman/90s-cursor-effects
 * -- http://codepen.io/tholman/full/jWmZxZ/
 /js/fairyDustCursor.js
 */

(function fairyDustCursor() {
  
  var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"]
  var width = window.innerWidth;
  var height = window.innerHeight;
  var cursor = {x: width/2, y: width/2};
  var particles = [];
  
  function init() {
    bindEvents();
    loop();
  }
  
  // Bind events that are needed
  function bindEvents() {
    document.addEventListener('mousemove', onMouseMove);
    document.addEventListener('touchmove', onTouchMove);
    document.addEventListener('touchstart', onTouchMove);
    
    window.addEventListener('resize', onWindowResize);
  }
  
  function onWindowResize(e) {
    width = window.innerWidth;
    height = window.innerHeight;
  }
  
  function onTouchMove(e) {
    if( e.touches.length > 0 ) {
      for( var i = 0; i < e.touches.length; i++ ) {
        addParticle( e.touches[i].clientX, e.touches[i].clientY, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
      }
    }
  }
  
  function onMouseMove(e) {    
    cursor.x = e.clientX;
    cursor.y = e.clientY;
    
    addParticle( cursor.x, cursor.y, possibleColors[Math.floor(Math.random()*possibleColors.length)]);
  }
  
  function addParticle(x, y, color) {
    var particle = new Particle();
    particle.init(x, y, color);
    particles.push(particle);
  }
  
  function updateParticles() {
    
    // Updated
    for( var i = 0; i < particles.length; i++ ) {
      particles[i].update();
    }
    
    // Remove dead particles
    for( var i = particles.length -1; i >= 0; i-- ) {
      if( particles[i].lifeSpan < 0 ) {
        particles[i].die();
        particles.splice(i, 1);
      }
    }
    
  }
  
  function loop() {
    requestAnimationFrame(loop);
    updateParticles();
  }
  
  /**
   * Particles
   */
  
  function Particle() {

    this.character = "*";
    this.lifeSpan = 120; //ms
    this.initialStyles ={
      "position": "absolute",
      "display": "block",
      "pointerEvents": "none",
      "z-index": "10000000",
      "fontSize": "16px",
      "will-change": "transform"
    };

    // Init, and set properties
    this.init = function(x, y, color) {

      this.velocity = {
        x:  (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2),
        y: 1
      };
      
      this.position = {x: x - 10, y: y - 20};
      this.initialStyles.color = color;
      console.log(color);

      this.element = document.createElement('span');
      this.element.innerHTML = this.character;
      applyProperties(this.element, this.initialStyles);
      this.update();
      
      document.body.appendChild(this.element);
    };
    
    this.update = function() {
      this.position.x += this.velocity.x;
      this.position.y += this.velocity.y;
      this.lifeSpan--;
      
      this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px,0) scale(" + (this.lifeSpan / 120) + ")";
    }
    
    this.die = function() {
      this.element.parentNode.removeChild(this.element);
    }
    
  }
  
  /**
   * Utils
   */
  
  // Applies css `properties` to an element.
  function applyProperties( target, properties ) {
    for( var key in properties ) {
      target.style[ key ] = properties[ key ];
    }
  }
  
  init();
})();

列表标签

  • 列表标签学习
    • 无序列表ul
      • li:一个行数据(默认数据前有黑圆点)
    • 有序列表ol
      • type:1,a等等(顺序由小到大)
    • 自定义列表dl
      • dt数据标题
      • dd一行数据

标题标签

  • 标题标签:h1-h6加黑加粗按级别
  • 属性:
    • align:center left right()居中,左对齐,右对齐
    • 水平线标签
      • hr:默认居中
      • 属性:
        • width=“宽度”
        • size=“高度”
        • color=“颜色”
    • 段落标签:
      • p:特点段间距大
      • 换行符:br
      • 空格符: 
      • 权重标签:b:加黑
      • i:斜体
      • u:下划线
      • del:删除线

CSS的声明

  • 在head标签中使用style标签声明
    • 作用:此声明一般声明当前网页的公共样式或者给某个标签单独样式
  • 在标签上使用style属性进行声明:
    • 作用:此声明会将CSS样式直接作用于当前标签
  • 在head标签中使用link标签引入外部声明好的CSS文件
    • 作用:此声明相当于调用,解决了不同网页间样式重复使用的问题
  • 问题:不同的声明给同一个标签操作了同一个样式,会先使用谁的?
    • 执行顺序,就是CSS样式的位置
    • 如果CSS的声明全部在head标签中,就遵循就近原则,谁离标签近,谁就会被显示

CSS定位position

  • 相对定位:relative
    • 作用:相对元素原有位置移动指定的距离(相对的自己的原有位置)
    • 可以使用top,left,right,bottom来进行设置网页界面
    • 注意:其他元素的位置是不改变的
  • 绝对定位:absolute
    • 作用:可以使用元素参照界面或者相对元素进行移动,就是上一级网块
    • 注意:如果父级元素成为参照元素,必须使用相对定位属性,默认情况选是以界面为基准进行移动的
  • 固定定位:fixed
    • 作用:将元素固定现在页面的指定位置,不会随着滚动条的移动而改变位置
    • 以上定位都可以使用top,left,right,bottom来进行移动
  • z-index:此属性是用来声明元素的显示

CSS选择器

  • 标签选择器:标签名{样式名1:样式名2;...}
    • 作用:会将当前网页内所有的该标签增加相同的样式
  • id选择器:#标签的id属性值{样式名1:样式名2;...}
    • 作用:给某个指定的标签添加指定样式
  • 类选择器:.类选择器名{样式名1:样式名2;...}
    • 作用:给不同的标签添加相同的样式
  • 全部选择器:*{样式名1:样式名2;...}
    • 作用:选择所有的HTML标签,并添加相同的样式
  • 组合选择器:选择器1,选择器2,......{样式名1:样式名2;..}
    • 作用:解决不同的选择器之间重复样式的问题
  • 子标签选择器:选择器1 子标签选择器{样式名1:样式名2;...}
  • 属性选择器:标签名[属性名=属性值]{样式名1:样式名2;...}
    • 作用:选择某标签指定具备某属性值为某属性值的标签,逐级递减添加到id选择器

form标签

  • form表单标签
    • 作用:收集并提交用户数据给指定服务器
    • 注意1:form标签会手机其标签内部的数据
      • 属性:
        • action:收集到的数据提交地址就是URL
        • method:收集到的数据提交方式
          • get:适合小量数据,表单数据以?隔开拼接在URL后面,不同的键值对使用&符号隔开,不安全。
          • post:适合大量数据,安全,隐式提交
    • 注意2:
      • 表单数据的提交,要提交的表单项必须要有name属性值,否则不会提交
      • 提交的表单项数据为键值对,健为name属性的值,值为用户书写的数据
      • form标签会手机其标签内部的数据
      • form表单的数据提交需要依赖submit提交按钮(value是按钮上的值)
  • form表单域
    • 作用:给用户提供可以进行数据书写或者选择的标签
    • 使用:input type
    • 文本框:
      • text收集少量数据,用户可见
      • password收集用户密码数据,黑点不可见
      • name:数据提交的健,也会被JS使用
      • value:默认值
    • 单选框:radio
      • name:name属性值相同的单选框只能选择一项数据
      • value:要提交的数据
      • checked:checked使用此属性的单选是默认状态
    • 多选框:checkbox
      • name:一个多选框需要使用相同的name属性值
      • value:要提交的数据
      • checked:checked使用此属性的单选是默认状态
    • 下拉框:select
      • name:数据提交的健名,必须声明
      • 子标签option:一个option标签表示一个下拉选项
      • value:要提交的数据
      • 注意:表单数据提交的是表单域标签的value值
    • 文本域:textarea
      • 声明一个可以书写大量文字的文本区域
      • name:数据提交的健名,js和CSS也会使用
      • cows:声明文本域的行数
      • rows: 声明文本域的列数
    • 普通按钮:button
  • 在点击数据提交时,form标签会将其内部所有form表单域标签中用户书写的数据使用method指明的提交方式提交给action属性所指明的提交地址

head配置

    
    
        html学习
        
        
        
        
        
    

变形2d案例

效果预览

image-20201216163854143

上代码





    
    
    
    Document
    



    
2D平移
2D旋转
2D缩放
2D扭曲
2D综合

导航块案例

效果预览

image-20201216164055087

上代码





    
    
    
    导航块
    



    



动画案例

效果预览

image-20201216170948637

上代码




    
    
    
    donghua
    
    


    

css3 animated buttons