美文网首页面试
前端问题记录总结

前端问题记录总结

作者: liutianou | 来源:发表于2018-10-09 15:35 被阅读37次

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关联起来。

新标签:

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



新标签兼容低版本:

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

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

<head lang=”en”> 标准的 lang 属性写法

<meta charset=’utf-8′>    声明文档使用的字符编码

<meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″/>   优先使用 IE 最新版本和 Chrome

<meta name=”description” content=”不超过150个字符”/>       页面描述

<meta name=”keywords” content=””/>      页面关键词

<meta name=”author” content=”name, email@gmail.com”/>    网页作者

<meta name=”robots” content=”index,follow”/>      搜索引擎抓取

<meta name=”viewport” content=”initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no”> 为移动设备添加 viewport

<meta name=”apple-mobile-web-app-title” content=”标题”> iOS 设备 begin

<meta name=”apple-mobile-web-app-capable” content=”yes”/>  添加到主屏后的标题(iOS 6 新增)
是否启用 WebApp 全屏模式,删除苹果默认的工具栏和菜单栏

<meta name=”apple-itunes-app” content=”app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL”>
添加智能 App 广告条 Smart App Banner(iOS 6+ Safari)

<meta name=”apple-mobile-web-app-status-bar-style” content=”black”/>
<meta name=”format-detection” content=”telphone=no, email=no”/>  设置苹果工具栏颜色

<meta name=”renderer” content=”webkit”>  启用360浏览器的极速模式(webkit)

<meta http-equiv=”X-UA-Compatible” content=”IE=edge”>     避免IE使用兼容模式

<meta http-equiv=”Cache-Control” content=”no-siteapp” />    不让百度转码

<meta name=”HandheldFriendly” content=”true”>     针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓

<meta name=”MobileOptimized” content=”320″>   微软的老式浏览器

<meta name=”screen-orientation” content=”portrait”>   uc强制竖屏

<meta name=”x5-orientation” content=”portrait”>    QQ强制竖屏

<meta name=”full-screen” content=”yes”>              UC强制全屏

<meta name=”x5-fullscreen” content=”true”>       QQ强制全屏

<meta name=”browsermode” content=”application”>   UC应用模式

<meta name=”x5-page-mode” content=”app”>    QQ应用模式

<meta name=”msapplication-tap-highlight” content=”no”>    windows phone 点击无高光

设置页面不缓存
<meta http-equiv=”pragma” content=”no-cache”>
<meta http-equiv=”cache-control” content=”no-cache”>
<meta http-equiv=”expires” content=”0″>

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
});
访问设定的路由后 会将<router-view></router-view>替换成相应的模版
 html访问方式 <router-link to="/one">One</router-link>(类似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的对象必须事先声明

相关文章

  • 前端问题记录总结

    1.Html相关 2.Css相关 3.Vue相关 Html相关 html语义化 根据内容的结构化(内容语义化),选...

  • Flutter 问题收集及解决方案 持续更新中...

    前端小弟一个,Flutter初学者,问题都是项目中遇到的,所以记录了下来。 个人前端博客. 解决方案来自于日常总结...

  • 优秀文章收集

    html css javascript 前端框架与插件 项目总结与日常记录 前端其他 gulp gulp API ...

  • 前端问题总结

    1. 浏览器跨域问题: 跨域问题是浏览器为了安全实施的同源策略导致的,同源策略限制了来自不同源的document、...

  • 前端问题总结

    前端传到controller中的参数都是string类型的需要自己进行转换想要的类型,例: 在js代码中也可以直接...

  • 总结前端问题

    前端经典面试题: 1、(前端面试题)https://zhuanlan.zhihu.com/p/84212558?f...

  • 移动端 - 收藏集 - 掘金

    腾讯 2016 公司代码报告前端开发总结 - 前端 - 掘金2016年腾讯公司代码报告已经正式发布,记录下开发过程...

  • 跨域问题汇总

    跨域问题的场景和解决方案多种多样,只要是做前端开发,总会遇到。而且面试时也是必问的问题。所以自己学习总结记录一下。...

  • 详解跨域

    跨域问题的场景和解决方案多种多样,只要是做前端开发,总会遇到。而且面试时也是必问的问题。所以自己学习总结记录一下。...

  • 前端问题总结(二)

    前端知识汇总 盒子模型 2种:IE盒子模型 W3C标准盒子模型 盒模型:内容、内边距、外边距、边框 为什么要初始化...

网友评论

    本文标题:前端问题记录总结

    本文链接:https://www.haomeiwen.com/subject/xzweaftx.html