搜索

查看: 3156|回复: 11

[CSS/HTML] 前端面试学习中几个常见有用的知识点

[复制链接]
发表于 2023-5-4 16:49:23 | 显示全部楼层 |阅读模式
Editor 2023-5-4 16:49:23 3156 11 看全部
svg和canvas 的区别?
svg 输出的图形都有独立的dom 是一个矢量图形 放大缩小不会 canvas 输出的是一整块 是一个画布 放大 缩小会失真
src 和 href 的区别?
src 是引入资源的 href 是跳转url的
前端有哪三层构成,分别是什么?
结构层 html dom结构表示层 css 渲染行为层 js操作
cookie、session、localstroage、sessionStorage 的区别?优缺点?
session存在于服务端不在客户端,cookie 是用于和服务端通信,其他两个则不会。
cookie 有大小限制相对于其他两个,单个不超过4kb,个数不超过150个,超过4kb不会被设置,超过150个视各浏览器不同,删旧留新
localStorage 数据永远存储,除非你主动删除 如果超过5mb会报错 sessionStorage 数据在浏览器关闭之前一直存在
viewport
viewport有视窗、视区等含义,是专门为手机移动设备设计的,当在手机移动设备打开网页时,就会检测网页meta标签是否设置了viewport,如果设置了,就会按照设置viewport的要求在手机移动设备中显示网页。

  • width: 设置viewport宽度,为一个正整数,或字符串 device-width
  • device-width: 设备宽度
  • height: 设置viewport高度,一般设置了宽度,会自动解析出高度,可以不用设置
  • initial-scale: 默认缩放比例(初始缩放比例),为一个数字,可以带小数
  • minimum-scale: 允许用户最小缩放比例,为一个数字,可以带小数
  • maximum-scale: 允许用户最大缩放比例,为一个数字,可以带小数
  • user-scalable: 是否允许手动缩放
    let var const
  • let: 允许你声明一个作用域被限制在块级中的变量、语句或者表达式 let 绑定不受变量提升的约束,这意味着let声明不会被提升到当前,该变量处于从块开始到初始化处理的"暂存死区"。
  • var: 声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的, 由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。
  • const 声明创建一个值的只读引用 (即指针),这里就要介绍下 JS 常用类型: String、Number、Boolean、Array、Object、Null、Undefined。其中基本类型有 Undefined、Null、Boolean、Number、String,保存在栈中;复合类型 有 Array、Object ,保存在堆中; 基本数据当值发生改变时,那么其对应的指针也将发生改变,故造成 const申明基本数据类型时,再将其值改变时,将会造成报错, 例如 const a = 3 ; a = 5 时 将会报错;但是如果是复合类型时,如果只改变复合类型的其中某个Value项时, 将还是正常使用;

    快速的让一个数组乱序
    var arr = [1,2,3,4,5,6,7,8,9,10];
    arr.sort(function(){
        return Math.random() - 0.5;
    })
    console.log(arr);
    首先,当 return 的值:
  • 小于 0 ,那么 a 会被排列到 b 之前;
  • 等于 0 , a 和 b 的相对位置不变;
  • 大于 0 , b 会被排列到 a 之前;
    这里你会发现起始的时候数组是正序排列,每当进行一次排列的时候, 都会先随机一个随机数(注意这里的每一次排列 指 每一个红框指一次排列, 共9次排列 , 一次排列中可能存在多次比较);
    当一次排列的随机数大于 0.5 时 将会进行第二次比较, 当第二次随机数 仍然大于 0.5 时 ,将会再进行一次比较, 直到 随机数大于 0.5 或者排列到第一位;
    当一次排列的随机数 小于 0.5 时 当前比较的两项索引将不会改变 ,继续下一次的排列;
    字体font-family
    @ 宋体      SimSun
    @ 黑体      SimHei
    @ 微软雅黑   Microsoft Yahei
    @ 微软正黑体 Microsoft JhengHei
    @ 新宋体    NSimSun
    @ 新细明体  MingLiU
    @ 细明体    MingLiU
    @ 标楷体    DFKai-SB
    @ 仿宋     FangSong
    @ 楷体     KaiTi
    @ 仿宋_GB2312  FangSong_GB2312
    @ 楷体_GB2312  KaiTi_GB2312  
    @
    @ 说明:中文字体多数使用宋体、雅黑,英文用Helvetica
    body { font-family: Microsoft Yahei,SimSun,Helvetica; }
    meta标签















    JS 判断设备来源
    // 判断移动端设备
    function deviceType(){
        var ua = navigator.userAgent;
        var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];   
        for(var i=0; i0){         
                break;
            }
        }
    }
    deviceType();
    window.addEventListener('resize', function(){
        deviceType();
    })

    // 判断微信浏览器
    function isWeixin(){
        var ua = navigator.userAgent.toLowerCase();
        if(ua.match(/MicroMessenger/i)=='micromessenger'){
            return true;
        }else{
            return false;
        }
    }
    audio元素和video元素在ios和andriod中无法自动播放
    原因:因为各大浏览器都为了节省流量,做出了优化,在用户没有行为动作时(交互)不予许自动播放;
    //音频,写法一
    你的浏览器还不支持哦
    //音频,写法二

       
       
        优先播放音乐bg.ogg,不支持在播放bg.mp3

    //JS绑定自动播放(操作window时,播放音乐)
    $(window).one('touchstart', function(){
        music.play();
    })
    //微信下兼容处理
    document.addEventListener("WeixinJSBridgeReady", function () {
        music.play();
    }, false);
    //小结
    //1.audio元素的autoplay属性在IOS及Android上无法使用,在PC端正常;
    //2.audio元素没有设置controls时,在IOS及Android会占据空间大小,而在PC端Chrome是不会占据任何空间;
    //3.注意不要遗漏微信的兼容处理需要引用微信JS;
    css强制单行文本溢出有省略号 ...
    overflow: hidden;
    text-overflow:ellipsis;
    white-space: nowrap;
    css强制实现2行文本溢出省略号...
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    css让移动端图文不可复制
    -webkit-user-select: none;
    -ms-user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    user-select: none;
    垂直水平居中布局
  • 1、定位 盒子宽高已知, position: absolute; left: 50%; top: 50%; margin-left:-自身一半宽度; margin-top: -自身一半高度;
  • 2、table-cell布局 父级 display: table-cell; vertical-align: middle; 子级 margin: 0 auto;
  • 3、定位 + transform ; 适用于 子盒子 宽高不定时; (这里是本人常用方法)
    position: relative / absolute;
    /*top和left偏移各为50%*/
       top: 50%;
       left: 50%;
    /*translate(-50%,-50%) 偏移自身的宽和高的-50%*/
    transform: translate(-50%, -50%); 注意这里启动了3D硬件加速哦 会增加耗电量的 (至于何是3D加速 请看浏览器进程与线程篇)
  • 4、flex 布局
    父级:
    /*flex 布局*/
    display: flex;
    /*实现垂直居中*/
    align-items: center;
    /*实现水平居中*/
    justify-content: center;

    再加一种水平方向上居中 :margin-left : 50% ; transform: translateX(-50%);
    placeholder 的字体颜色大小(PC 端)
    input::-webkit-input-placeholder {
        /* WebKit browsers */
        font-size:14px;
        color: #333;
    }
    input::-moz-placeholder {
        /* Mozilla Firefox 19+ */
        font-size:14px;
        color: #333;
    }
    input:-ms-input-placeholder {
        /* Internet Explorer 10+ */
        font-size:14px;
        color: #333;
    }
    数组去重写法
    [...new Set([2,"12",2,12,1,2,1,6,12,13,6])]
    // [2, "12", 12, 1, 6, 13]
    快捷的数组求最大值
    var arr = [ 1,5,1,7,5,9];
    Math.max(...arr)  // 9
  • 发表于 2023-6-28 18:19:16 | 显示全部楼层
    123456868 2023-6-28 18:19:16 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    发表于 2023-6-28 22:13:10 | 显示全部楼层
    123456833 2023-6-28 22:13:10 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    发表于 2023-6-29 03:31:20 | 显示全部楼层
    永远爱你冰塘 2023-6-29 03:31:20 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    发表于 2023-6-29 14:31:30 | 显示全部楼层
    老橡树1 2023-6-29 14:31:30 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    发表于 2023-6-30 02:47:57 | 显示全部楼层
    永远就三年疗 2023-6-30 02:47:57 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    发表于 2023-6-30 03:35:42 | 显示全部楼层
    我的苦恼冉 2023-6-30 03:35:42 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    发表于 2023-7-3 09:09:04 | 显示全部楼层
    戏做顿 2023-7-3 09:09:04 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    发表于 2023-7-3 11:24:32 | 显示全部楼层
    音乐之家1 2023-7-3 11:24:32 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-7-3 22:20:55 | 显示全部楼层
    123456825 2023-7-3 22:20:55 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    • 您可能感兴趣
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| 小黑屋| 知鸟论坛 |网站地图
    本站资源来自互联网用户收集发布,如有侵权请邮件联系处理。 联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表