前端问题记录总结

1.Html相关

2.Css相关

3.Vue相关


Html相关


  • html语义化

       根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。

需要注意的是

1 尽可能少的使用无语义的标签div和span;

2 在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,对兼容特殊终端有利;

3 不要使用纯样式标签,如:b、font、u等,改用css设置;

4 需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i);

5 使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;

6 表单域要用fieldset标签包起来,并用legend标签说明表单的用途;

7 每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在lable标签中设置for=someld来让说明文本和相对应的input关联起来。

新标签:

标签 描述
定义文档内的文章
定义页面内容之外的内容
定义与其他不同的文本方向
定义用户可查看或隐藏的额外细节
定义对话框或窗口
定义自包含内容,比如图片、图表、照片、代码清单等等
定义
元素的标题
定义文档或页的页眉
定义文档或页的页脚
定义文档的主内容
定义重要或强调的内容
定义用户能够从弹出菜单调用的命令/菜单项目
定义已知范围(尺度)内的标量测量
定义文档内的导航链接
定义任务进度
定义日期/时间



新标签兼容低版本:

  • ie9之前版本通过createElement创建html5新标签
  • 引入html5shiv.js

  • meta viewport相关
  H5标准声明,使用 HTML5 doctype,不区分大小写

 标准的 lang 属性写法

    声明文档使用的字符编码

   优先使用 IE 最新版本和 Chrome

       页面描述

      页面关键词

    网页作者

      搜索引擎抓取

 为移动设备添加 viewport

 iOS 设备 begin

  添加到主屏后的标题(iOS 6 新增)
是否启用 WebApp 全屏模式,删除苹果默认的工具栏和菜单栏


添加智能 App 广告条 Smart App Banner(iOS 6+ Safari)


  设置苹果工具栏颜色

  启用360浏览器的极速模式(webkit)

     避免IE使用兼容模式

    不让百度转码

     针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓

   微软的老式浏览器

   uc强制竖屏

    QQ强制竖屏

              UC强制全屏

       QQ强制全屏

   UC应用模式

    QQ应用模式

    windows phone 点击无高光

设置页面不缓存




Css相关


  • 盒模型
    1、ie盒模型算上border、padding及自身(不算margin),标准的只算上自身窗体的大小 css设置方法如下:

          /* 标准模型 */
          box-sizing:content-box;
          /*IE模型*/
          box-sizing:border-box;
    

2、margin、border、padding、content由外到里 3.几种获得宽高的方式

dom.style.width/height   //这种方式只能取到dom元素内联样式所设置的宽高,也就是说如果该节点的样式是在style标签中或外联的CSS文件中设置的话,通过这种方法是获取不到dom的宽高的。
dom.currentStyle.width/height   //这种方式获取的是在页面渲染完成后的结果,就是说不管是哪种方式设置的样式,都能获取到。但这种方式只有IE浏览器支持。
window.getComputedStyle(dom).width/height   //这种方式的原理和2是一样的,这个可以兼容更多的浏览器,通用性好一些。
dom.getBoundingClientRect().width/height   //这种方式是根据元素在视窗中的绝对位置来获取宽高的
dom.offsetWidth/offsetHeight   //这个就没什么好说的了,最常用的,也是兼容最好的。

3、各种获得宽高的方式

/*获取屏幕的高度和宽度(屏幕分辨率):*/ window.screen.height/width
/*获取屏幕工作区域的高度和宽度(去掉状态栏):*/ window.screen.availHeight/availWidth
/*网页全文的高度和宽度:*/ document.body.scrollHeight/Width
/*滚动条卷上去的高度和向右卷的宽度:*/ document.body.scrollTop/scrollLeft
/*网页可见区域的高度和宽度(不加边线):*/ document.body.clientHeight/clientWidth
/*网页可见区域的高度和宽度(加边线):*/ document.body.offsetHeight/offsetWidth


Vue相关

生命周期顺序

组件通信:
父传子用props,父用子用ref 子调父用$emit,无关系用Bus

  • VueRouter
定义
var routes = [
    {
        path:"/one",

        component:导入的组件1
    },
    {
        path:"/two",
        component:导入的组件2
    },
];
// 定义路由组件
var router = new VueRouter({
    routes
});
// 定义路由
new Vue({
    el:"#box",
    router
});
访问设定的路由后 会将替换成相应的模版
 html访问方式 One(类似a标签)
 js访问方式 this.$router.push('/one'); 
 replace方式 替换当前页面
 携带的参数 可以通过this.$route.query.xxxx来获取
  • Vue双向绑定

原理:利用了Object.defineProperty()这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现的。 缺点:双向数据流是自动管理状态的, 但是在实际应用中会有很多不得不手动处理状态变化的逻辑, 使得程序复杂度上升, 难以调试。

  • computed watch methods
用法: 区别:
1、前两者自动追踪数据,执行相关函数,最后一个手动调用;
2、computed是计算属性,用法与data一致
3、watch像事件监听,对象发生变化时,执行相关操作
4、methods与js中执行方法类似
5、computed通常只有get属性
6、数据变化的同时进行异步操作或者是比较大的开销,那么watch为最佳选择
7、watch的对象必须事先声明

你可能感兴趣的:(前端问题记录总结)