笔试题整理(一)

搜狗:

1、触发BFC的方法:
1)float的值不为none。
2)overflow的值不为visible。
3)position的值不为static或releative中的任何一个。
4)display的值为table-cell、table-caption和inline-block之一。
2、css选择器
p:first-child:p标签的父元素的首个子p元素。
p~ul:选择前面有 <p> 元素的每个 <ul> 元素。
div+p:选择
紧接
在 <div> 元素之后的<p> 元素。
p:first-of-type:选择属于其父元素的首个 <p> 元素的每个 <p> 元素。
3、padding-top:50%的含义
定义基于父元素宽度百分比上内边距。
4、常见的块级元素:p标签
常见的行内元素:span标签
5、ul子元素不允许放置除除li外的任何元素
6、CSS3 box-sizing属性
content-box:默认属性,宽度和高度不包括 内边距和边框。
border-box:宽度和高度包括内边距和边框。
inherit:从父元素继承box-sizing属性。
7、promise用法
8、let命令和const命令
let命令
1)let用法类似var,用于声明变量。但是所声明的变量只在let命令所在的代码块内有效。
2)不存在变量提升,所以变量一定要在声明后使用,否则报错。
3)暂时性死区。只要块级作用域内存在let命令,它所声明的变量就“绑定”在这个区域,不再受外部的影响。比如 :

var a = 1;
if(true){
a = 2; //报错
​let a;
}​

​上面的代码中存在全局变量a,但是块级作用域中let又声明了一个局部变量a,导致后者绑定这个块级作用域,所以在let声明变量前,对a赋值会报错。
4)不允许重复声明。let不允许在相同的作用域内声明同一变量。

function​( ){
let a = 1;
var a =2;
}   //报错​

const命令​
1)const用来声明常量。一旦声明其值不能改变。这就意味着const一旦声明常量,就必须初始化,不能留到以后赋值。
2)与let命令相同,只在声明所在的块级作用域内有效。
3)const命令声明的变量也不提升,同样存在暂时性死区,只能在声明后使用。同样不可重复声明变量。
4)对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是指向的地址不变,并不保证改地址的数据不变,所以将一个地址声明为变量需要非常小心。

const foo = {};
foo.prop = 123;
foo= { }; ​// 报错

上面的代码,常量foo存储的是一个地址,指向一个对象。不可变的只是这个地址,即不能把foo指向另一个地址,但对象本身是可变的,所以依然可以为其添加属性。如果想使对象不可变,可以将对象冻结,使用object.freeze方法。
5)跨模块常量的写法。

//constants.js模块
export const A = 1;
export const B = 2;
export const C = 3;

//text1.js模块
import​ * as constants from './constants';
console.log(constants.A ); // 1​
console.log(constants.B ); // 2

//text2.js模块
import​ {A, B} from './constants';
console.log(constants.A ); // 1​
console.log(constants.B ); // 2

参考文献:ES6学习笔记--let和const命令
7、reflow和repaint
reflow:对于DOM结构中的各个元素都有自己的盒子(模型),这些都需要浏览器根据各种样式(浏览器的、开发人员定义的等)来计算并根据计算结果将元素放到它该出现的位置。
repaint:当各种盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来后,浏览器于是便把这些元素都按照各自的特性绘制了一遍,于是页面的内容出现了。
引起Repain和Reflow的一些操作:
1)增加、删除、修改 DOM 结点
2)移动 DOM 的位置,或动画
3)修改 CSS 样式
(例如:display:none 会触发 reflow,而 visibility:hidden 只会触发 repaint,因为没有发现位置变化)
4) Resize 窗口(移动端没有这个问题),或滚动窗口
5)修改网页的默认字体
Reflow 的成本比 Repaint 的成本高得多的多。DOM Tree 里的每个结点都会有 reflow 方法,一个结点的 reflow 很有可能导致子结点,甚至父点以及同级结点的 reflow。
优化方法
1)不要一条一条地修改 DOM 的样式。可以预先定义好 css 的 class,然后修改 DOM 的 className。
2)把 DOM 离线后修改。
3)不要把 DOM 节点的属性值放在一个循环里当成循环里的变量。不然这会导致大量地读写这个结点的属性。
4)尽可能的修改层级比较低的 DOM节点。当然,改变层级比较底的 DOM节点有可能会造成大面积的 reflow,但是也可能影响范围很小。
5)为动画的 HTML 元件使用 fixed 或 absoult 的 position,那么修改他们的 CSS 是会大大减小 reflow 。
6)尽量不使用 table 布局。因为可能很小的一个小改动会造成整个 table 的重新布局。

参考文献:[ JS 进阶 ] Repaint 、Reflow 的基本认识和优化 (2)
8、下图实现方法

.div{   
    width:10px;
    height:0px;
    border:10px solid red;
    border-right:10px solid yellow;
    }

<div class="div"></div>

9、移除display:inline-block水平空隙的方法
问题描述:
1)真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距;
2)使用CSS更改非inline-block水平元素为inline-block水平,也会有该问题

.space a {
    display: inline-block;
    padding: .5em 1em;
    background-color: #cad5eb;
}

<div class="space">
    <a href="##">惆怅</a>
    <a href="##">淡定</a>
    <a href="##">热血</a>
</div>

问题原因:
标签段之间存在空格或换行
解决:

1)移除标签段之间的空格

方式1:

<div class="space">
    <a href="##">
    惆怅</a><a href="##">
    淡定</a><a href="##">
    热血</a>
</div>

方式2:

<div class="space">
    <a href="##">惆怅</a
    ><a href="##">淡定</a
    ><a href="##">热血</a>
</div>

方式3:借助HTML注释。

<div class="space">
    <a href="##">惆怅</a><!--
    --><a href="##">淡定</a><!--
    --><a href="##">热血</a>
</div>
2)使用margin负值
.space a {
    display: inline-block;
    margin-right: -3px;
}
3)让闭合标签吃胶囊
<div class="space">
    <a href="##">惆怅
    <a href="##">淡定
    <a href="##">热血</a>
</div>
4)使用font-size:0
.space {
    font-size: 0;
 -webkit-text-size-adjust:none;//Chrome兼容性处理,Chrome默认有最小字体大小限制。
}
.space a {
    font-size: 12px;
}
5)使用letter-spacing(Opera下存在兼容性问题:最小间距1像素)
.space {
    letter-spacing: -3px;
}
.space a {
    letter-spacing: 0;
}
6)使用word-spacing
.space {
   display: inline-table;//解决chrome兼容性问题
    word-spacing: -6px;
}
.space a {
    word-spacing: 0;
}

参考文献:去除inline-block元素间间距的N种方法
10、左图右文排版

<div>
<div id="left">图片</div>
<div id="right">文字</div>
</div>

要求:左边固定宽,右边自适应。
参考文献:
CSS面试题(一)
11、单行、多行文本溢出省略号
单行文本溢出省略号

.div{   
border:1px solid black;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
<div class="div">如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览。</div>

text-overflow:当文本溢出包含元素时发生的事情。
text-overflow:ellipsis.显示省略号来代表被修改的文本。
white-space:这个属性声明建立布局过程中如何处理元素中的空白符。
white-space:nowrap:文本不会换行,文本会在在同一行上继续,直到遇到
标签为止。
多行文本溢出省略号

.div{   
border:1px solid black;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
<div class="div">-webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。常见结合属性:
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。</div>
Paste_Image.png

-webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。常见结合属性:
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
12、html如下面所示,编写CSS实现下面效果。

<div class="ul-container">
<ul>
<li>你好</li>
<li>同学</li>
<li>搜狐</li>
<li>公司</li>
<li>欢迎</li>
<li>你的</li>
<li>到来</li>
</ul>
</div>

每排有3个,第3个和最后一排没有右边的间隔线。

.ul-container{  
width:304px;/*这里宽度=3个li标签的宽度+2个间隔线的宽度*/
}
/*div最后要清除浮动否则父元素包不住ul和li*/
.ul-container:after{
    content:'';
    display:block;clear:both;
    }
/*清除ul和li的原始格式*/
ul,li{
    list-style-type:none;
    margin:0px;
    padding:0px;
    }
li{
    float:left;
    border-right:2px solid gray;
    width:100px;
    height:40px;
    line-height:40px;
    text-align:center;
margin-bottom:10px;
    }
li:nth-of-type(3n+3){
    border-right:0px;
    }
li:nth-last-of-type(1){
    border-right:0px;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 以下是某家金融证券类公司的Android笔试题,及自己整理的答案,如有错误请诸位看官指正,小生在此先行谢过。 基础...
    然小七阅读 12,752评论 3 28
  • 1、#import 跟#include、@class有什么区别?#import<> 跟 #import""又什么区...
    Jalynn葸阅读 375评论 0 4
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,237评论 24 450
  • 前端面试题的简单整理,都只是大概回答,具体某些问题的具体理解后续会补上。 前端页面有哪三层构成,分别是什么?作用是...
    李欢li阅读 473评论 0 2
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92