博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端基础面试题
阅读量:7025 次
发布时间:2019-06-28

本文共 3014 字,大约阅读时间需要 10 分钟。

1.什么是web语义化,有什么好处

web语义化是指通过HTML标记表示页面包含的信息,包含了HTML标签的语义化和css命名的语义化。

HTML标签的语义化是指:通过使用包含语义的标签(如h1-h6)恰当地表示文档结构

css命名的语义化是指:为html标签添加有意义的class,id补充未表达的语义

2.为什么需要语义化:

  • 去掉样式后页面呈现清晰的结构
  • 盲人使用读屏器更好地阅读
  • 搜索引擎更好地理解页面,有利于收录
  • 便团队项目的可持续运作及维护

简述一下src与href的区别

src用于替换当前元素;href用于在当前文档和引用资源之间确立联系。

src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置

href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接

 

3.请阐述table的缺点

a. 太深的嵌套,比如table>tr>td>h3,会导致搜索引擎读取困难,而且,最直接的损失就是大大增加了冗余代码量。

b. 灵活性差,比如要将tr设置border等属性,是不行的,得通过td

c. 代码臃肿,当在table中套用table的时候,阅读代码会显得异常混乱

d. 混乱的colspan与rowspan,用来布局时,频繁使用他们会造成整个文档顺序混乱。

e. 不够语义

 

4.div+css与table布局的有何区别?

答: div+css:布局简洁明了,使用方便,相对于表格来说更容易搜索的到!优化程度高点。不易出现错误或者不可控!样式繁多,易控易修改。

Table: 表格布局不建议使用,这个算是快要被淘汰的一种布局方式。布局不容易调整和规划。容易失控。大部分都不能使用太多样式。

5.如何垂直居中一个浮动元素?
// 方法一:已知元素的高宽#div1{    background-color:#6699FF;    width:200px;    height:200px;    position: absolute;        //父元素需要相对定位    top: 50%;    left: 50%;    margin-top:-100px ;   //二分之一的height,width    margin-left: -100px;    } //方法二:未知元素的高宽   #div1{    width: 200px;    height: 200px;    background-color: #6699FF;     margin:auto;    position: absolute;        //父元素需要相对定位    left: 0;    top: 0;    right: 0;    bottom: 0;    }

6.行内元素有哪些,块级元素有哪些,空元素(单标签)有哪些,请举例说明,每种至少3个?

行内元素:<a>,<span>,<i>,<em>,<strong>,<label>,<code>,<img>,<input>,<select>,<textarea>,<button>

块级元素:<div>,<p>,<h1>...<h6>,<ol>,<ul>,<dl>,<table>,<form>

空元素(单标签):<br>,<hr>,<img>,<input>,<link>,<meta>

 

7.为什么要初始化CSS样式

因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异

8.css清除浮动的几种方式?

1、父级div定义 height 

2、结尾处加空div标签 clear:both 
3、父级div定义 伪类:after 和 zoom 
4、父级div定义 overflow:hidden 
5、父级div定义 overflow:auto 
6、父级div 也一起浮动 
7、父级div定义 display:table

9.计算一个数组arr所有元素的和

var arr1=[1,2,3,4,5,6,7,8,9];
var sum1=0;
for (var i=0;i<=arr1.length;i++) {
    if (typeof arr1[i]=="number") {
    sum1+=arr1[i];
    }
}
document.write(sum1);
//====================================
function sum2(arr){
    var all=0;    
    for (var i=0;i<arr.length;i++) {       
        if (typeof arr[i]=="number") {        
        all+=arr[i];        
        }
    }        
        return all;        
}
document.write(sum2([1,2,3,4]));

 

10.使用正则表达式验证邮箱格式

var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;var email = "example@qq.com";console.log(reg.test(email));  // true

11.写出一个方法,可以数组去重

方法一:构建一个新的数组存放结果;for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比;若结果数组中没有该元素,则存到结果数组中.

方法二:

  先将数组进行排序,排序之后重复数组会在相邻的位置,然后检查数组第一个和最后一个元素是否相同,如果不相同,就把元素放进新的数组中去。

  这种方案改变了元素本来的顺序,是排序过后的数组。

function unique(){          var arr= [1,2,3,4,3,5,6,4,3,2,3];          var result = [];//存放结果数组          arr = arr.sort();          // console.log(arr);          for(var i=0;i

 第三种方法(推荐方法)

function unique(arr){  var hash=[];  for (var i = 0; i < arr.length; i++) {    for (var j = i+1; j < arr.length; j++) {      if(arr[i]===arr[j]){        ++i;      }    }      hash.push(arr[i]);  }  return hash;}

for循环嵌套,利用splice去重

function newArr(arr){    for(var i=0;i

ES6中利用Set去重

function newArr(arr){    return Array.from(new Set(arr))} var arr = [1,1,2,9,6,9,6,3,1,4,5]; console.log(newArr(arr))

 

转载于:https://www.cnblogs.com/conlover/p/10946418.html

你可能感兴趣的文章
语音识别对比分析
查看>>
Linux命令之 wc
查看>>
在virtualbox中安装的ubuntu系统 共享数据空间分配的数据
查看>>
WinRAR4.11激活
查看>>
Oracle常用单行函数
查看>>
虚拟机客户端安装操作系统
查看>>
(fork)在局域网中部署微信服务器 (PHP)
查看>>
如何做好SEO
查看>>
Linux命令之free
查看>>
Go语言 -- Mysql数据库
查看>>
Cocos2d-x_Node详解
查看>>
基本Android应用流程
查看>>
我的友情链接
查看>>
SSH公钥免密登录其他主机
查看>>
ExtJS表单提交时,不用鼠标点击按钮提交,直接通过回车键提交
查看>>
运行浏览器的最高版本
查看>>
PHP中解决ajax请求session过期退出登录问题
查看>>
拆分功能:第一步,建立 会员管理系统
查看>>
Android判断当前网络是否可用--示例代码
查看>>
NAT转换
查看>>