前端基础知识

这篇博客详细介绍了前端基础知识,包括HTML和CSS的语义化、盒子模型、BFC、JavaScript的基础语法、DOM操作、异步和单线程概念,以及前端性能优化原则。还涉及到事件循环(Event Loop)、Promise和Ajax等Web API的使用。通过实例和常见面试题,帮助读者巩固前端开发的核心概念。
摘要由CSDN通过智能技术生成

前端基础知识体系(结构化的知识范围)

css基础知识   js基础语法  JS-Web-API  开发环境  运行环境  HTTP协议

HTML  CSS

1、如何理解HTML语义化?

        答:让人更容易读懂,增加代码可读性。

        让搜索引擎更容易读懂(SEO)

2、默认情况下,哪些HTML 标签是块级元素,哪些是内联元素?

        答:display:block/table 有 div h1 h2 table ul ol p 等

        display:inline/inline-block 有 span img input button 等

3、盒子模型的宽度如何计算

        要点:offsetWidth = (内容宽度 + 内边距 + 边框),无外边框

        设置 box-sizing:border-box 之后,width 为到边框盒子模型的宽度

4、margin纵向重叠的问题

        要点:相邻元素的 margin-top 和 margin-bottom 会发生重叠

        空白内容的标签也会重叠

5、margin负值的问题

        要点:margin-top 和 margin-left 负值,元素向上、向左移动

        margin-right 负值,右侧元素左移,自身不受影响

        margin-bottom 负值,下方元素上移,自身不受影响

6、BFC理解和应用

        要点:一个独立的渲染区域,内部元素的渲染不会影响边界以外的元素

        形成BFC的条件

                1、float 不是 none

                2、position 是 absolute 或 fixed

                3、overflow 不是 visible

                4、display 是 flex inline-block

        BFC常见应用

                清除浮动

7、如何实现圣杯布局和双飞翼布局

        要点:三栏布局,中间一栏最先加载和渲染(内容最重要)

        两侧内容固定,中间内容随着宽度自适应

        一般用于 pc 网页

        技术总结:使用float 布局;两侧使用margin 负值,以便和中间内容横向重叠;防止中间内容被两侧覆盖,一个用padding 一个用 margin

// 圣杯布局
.container {
   float: left;
   padding-left: 200px;
   padding-right: 150px;
}
.content {
   width: 100%;
}
.left {
   position: relative;
   width: 200px;
   margin-left: -100%;
   right: 200px;
}
.right {
   width: 150px;
   margin-right: -150px;
}

//双飞翼布局
.container {
    float: left;
    margin: 0 150px 0 200px;
}
.left {
    width: 200px;
    margin-left: -100%;
}
.right {
    width: 150px;
    margin-left: -150px;
}

8、手写 clearfix

.clearfix:after {
    content: '';
    display: table;
    clear: both;
}

9、flex画骰子

        要点:flex-direction  justify-content  align-items  flex-wrap  align-self

.box {
   display: flex;
   justify-content: space-between;
}
.item {
   /* 背景色 大小 边框 */
}
.item:nth-child(2) {
   align-self: center;
}
.item:nth-child(3) {
   align-self: flex-end;
}

10、absolute和relative 分别依据什么定位?

        答:relative 依据自身定位;absolute 依据最近一层的定位元素定位

11、居中对齐有哪些实现方式?

        答:水平居中:inline 元素:text-align: center, block 元素:margin:auto,absolute 元素: left: 50% + margin-left 负值

        垂直居中:inline 元素:line-height 的值等于 height 值, absolute 元素:top: 50% + margin-top 负值, absolute 元素:transform(-50%,-50%),absolute 元素:top、left、bottom、right 为0 margin:auto

12、line-height的继承问题

        要点:写具体数值,如30px,则继承该值;写比例,如2或1.5,则继承该比例;写百分比,如200%,则继承计算出来的值

12、rem是什么?

        要点:px 是绝对长度单位;em 是相对长度单位,相对于父元素;rem 是相对长度单位,相对于根元素,常用于响应式布局

13、如何实现响应式?

        要点:media-query,根据不同的屏幕宽度设置根元素 font-size;rem 基于根元素的相对元素单位

js基础知识

值类型和引用类型

知识点:

  • 值类型 vs 引用类型,堆栈模型,深拷贝
  • typeof 运算符
  • 类型转换,truly 和 falsely 变量

1、typeof 能判断哪些类型

        要点:识别所有值类型,识别函数,判断是否是引用类型(不可再细分)

2、何时使用 === 何时使用 ==

        答:使用 == 会进行默认的类型转化,除了 == null 之外,其他一律用 ===

3、值类型和引用类型的区别

        答:值类型是栈存储,赋值之后直接改变原有值;引用类型是堆存储,指向内存地址,赋值之后内存地址不发生变化

4、手写深拷贝

function deepClone(target) {
    if(typeof target !== 'Object' || target == null) {
        return target
    }
    let result
    if(target insatnceof Array) {
        result = []
    } else {
        result = {}
    }
    for(let i in target) {
        if(target.hasOwnProperty(i)) {
            result[i] = deepClone(target[i])
        }
    }
    return result
}

原型和原型链

知识点:

  • class 和继承,结合手写jQuery 的示例来理解
  • instanceof
  • 原型和原型链:图示 & 执行规则

5、如何准确判断一个变量是不是数组?

        答:使用 instanceof 来进行判断

6、手写一个简易的jQuery,考虑插件和扩展性

class jQuery {
    connstructor(selector) {
        const result = document.querySelectorAll(selector)
        const length = result.length
        for(let i = 0; i < length; i++) {
            this[i] = result[i]
        }
        this.length = length
    }
    get(index) {
        return this[inde
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值