zoukankan      html  css  js  c++  java
  • 《JavaScript DOM编程艺术》studyNote part2

    (X)HTML与CSS使用方法

    1、“Web的力量在于它最广泛的包容性,无条件的向每个人开放是它的一个基本特点。”

    2、网页的三层结构
    结构层:(X)HTML
    表示层:CSS
    行为层:JavaScript+DOM

    3、最佳编程准则:
    使用有意义的标记来构造内容
    使用CSS把样式信息与核心内容分离开来
    使用有着足够预留退路的JavaScript脚本来添加操作行为

    4、网站子目录结构/images /styles /scripts ;CSS定义为layout.css负责页面布局、color.css颜色相关的信息、typography.css文本字型有关的CSS信息;全局JS函数放在global.js中

    5、table的sumary属性的内容不会被可视化浏览器显示,对于很复杂的表格,添加一个summary属性使得那些用“听”的浏览者了解表格的内容。

    6、  overflow属性的四种可取值与含义:
    visible:不裁剪溢出的内容。
    hidden:裁剪溢出的内容
    scroll:类似于hidden,但会显示滚动条以便用户能够看到内容的其他部分
    auto:类似于scroll,只有在真正发生溢出的时候才显示滚动条

    7、ol为有序列表,ul为无序列表,dl为定义列表,style样式里的media参数用于指定样式表被接受的介质或媒体,缺省值是screen提交到计算机屏幕。

    8、一般用来显示数据还是使用table,也不能一味的说它不好
    <table><caption></caption><thead><tr><th></th></tr></thead>
    <tbody><tr><td></td></tr></tbody></table>

    9、包容在<li>标签里的列表项通常各占一行,若把display属性设置为none之后,那些列表项便可由纵向排列变成横向排列。

    10、<abbr>与<acronym>的区别:例如把DOM念成一个单词dom,它就是acronym(字头缩写),如果念成三个字母D-O-M,它就是abbr(缩略语)。IE不支持<abbr>,<abbr>的childNodes.length永远为0

    11、dl定义表项
    <dl>
    <dt>定义标题</dt>
    <dd>定义描述</dd>
    </dl>

    12、blockquote元素包含一个可选属性cite,它的基本用途是给出一个用来告诉人们blockquote元素内容是来自何方的URL地址。

    13、accesskey约定俗成的设置方法,参见:http://www.clagnut.com/blog/193,一般来说accesskey = “1”对应一个“返回主页”的链接,2对应一个“后退”链接,4对应“打开本站搜索”,9对应“联系方法”,0查看快速访问键清单。

    14、独享CSS样式的定义:h2.special{}、h2#special{}
     
    把多个JavaScript函数绑定到onload事件事件处理函数上

    function addLoadEvent(func){
           var oldonload = window.onload;
           if(typeof window.onload != ‘function’){
           window.onload = func;
    }else {
           window.onload = function(){
                  oldonload();
                  func();
                  }
    }
    }

    表单页面常用JS函数:
    1、label元素的for属性可以把一条文本与某个表单字段关联在一起。例如,以下函数实现效果:当用户点击某个label元素所包含的文本,与之相关的表单字段就将获得输入焦点,并等待用户输入数据。

    function focusLabels() {
      if (!document.getElementsByTagName) return false;
      var labels = document.getElementsByTagName("label");
      for (var i=0; i<labels.length; i++) {
        if (!labels[i].getAttribute("for")) continue;
        labels[i].onclick = function() {
          var id = this.getAttribute("for");
          if (!document.getElementById(id)) return false;
          var element = document.getElementById(id);
          element.focus();
        }
      }
    }


    2、resetFields()函数实现效果,当表单字段获得输入焦点时,自动删除它的默认值,当用户在未输入任何东西的情况下离开表单字段时,恢复它的默认值。

    function resetFields(whichform) {
      for (var i=0; i<whichform.elements.length; i++) {
        var element = whichform.elements[i];
        if (element.type == "submit") continue;
        if (!element.defaultValue) continue;
        element.onfocus = function() {
        if (this.value == this.defaultValue) {
          this.value = "";
         }
        }
        element.onblur = function() {
          if (this.value == "") {
            this.value = this.defaultValue;
          }
        }
      }
    }


    3、表单检查的两个函数:isFilled()和isEmail()

    function validateForm(whichform) {
      for (var i=0; i<whichform.elements.length; i++) {
        var element = whichform.elements[i];
        if (element.className.indexOf("required") != -1) {
          if (!isFilled(element)) {
            alert("Please fill in the "+element.name+" field.");
            return false;
          }
        }
        if (element.className.indexOf("email") != -1) {
          if (!isEmail(element)) {
            alert("The "+element.name+" field must be a valid email address.");
            return false;
          }
        }
      }
      return true;
    }
    
    function isFilled(field) {
      if (field.value.length < 1 || field.value == field.defaultValue) {
        return false;
      } else {
        return true;
      }
    }
    
    function isEmail(field) {
      if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
        return false;
      } else {
        return true;
      }
    }
    
    function prepareForms() {
      for (var i=0; i<document.forms.length; i++) {
        var thisform = document.forms[i];
        resetFields(thisform);
        thisform.onsubmit = function() {
          return validateForm(this);
        }
      }
    }
  • 相关阅读:
    JVM基础
    JVM基础
    python相关
    charles 的配置与使用
    大型缓存架构实战
    redis环境搭建
    多线程与并发 | 线程池
    JVM | 内存溢出和解决方案
    读书笔记 | Mysql是怎样运行的
    读书笔记 | Java并发编程实战
  • 原文地址:https://www.cnblogs.com/kaiye/p/3039074.html
Copyright © 2011-2022 走看看