)
inherit: 规定应该从父元素继承 display 属性的值。
display:inline-block 什么时候会显示间隙?(携程)
移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacing
4、介绍一下 CSS 的盒子模型?
1)有两种,IE 盒子模型、标准 W3C 盒子模型; IE 的 width包含了content,border 和 padding;
2)盒模型:内容(content)、填充(padding)、边界(margin)、边框(border)。
5、CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3 新增伪类有哪些?
1)id 选择器(#myid)
2)类选择器(.myclassname)
3)标签选择器(div,h1,p)
4)相邻选择器(h1 + p)
5)子选择器(ul > li)
6)后代选择器(li a)
7)通配符选择器
8)属性选择器( a[rel = "external"])
9)伪类选择器(a: hover, li: nth - child)
可继承的样式: font-size font-family color, UL LI DL DD DT text-indent(一些font类和text类都可以继承)
不可继承的样式:border padding margin width height
优先级就近原则,同权重情况下样式定义最近者为准 载入样式以最后载入的定位为准;
载入样式以最后载入的定位为准;
优先级为: !important > id > class=伪类 > tag ; important 比内联优先级高,内联比id优先级高
继承得到的样式的优先级最低。
6、CSS3新特性以及新增伪类举例:
新增各种CSS选择器 (: not(.input):所有 class 不是“input”的节点)
圆角 (border-radius:8px)
多列布局 (multi-column layout)
阴影和反射 (box-ShadowReflect)
文字特效 (text-shadow、)
文字渲染 (Text-decoration)
线性渐变 (gradient)
旋转 (transform)
transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg) Animation rgba;//旋转,缩放,定位,倾斜,动画 多背景 增加了更多的 css 选择器
p:first-of-type 选择该p元素是其父元素的首个
元素;
p:last-of-type 选择该p元素是其父元素的最后
元素;
p:only-of-type 选择该p元素是其父元素唯一的
元素,还是可以有其他的元素,只要p元素只有一个;
p:only-child 选择该p元素是其父元素的唯一子元素;
p:nth-child(n) 选择属于其父元素的第n个p子元素(排序的时候是和其他子元素一起的排序中选取第几个元素,不是单独p元素排序);p:nth-child(odd) 匹配所以奇数行;p:nth-child(even) 匹配所有偶数行,元素的第一个子元素索引为“1”。p:nth-child(3n+1)三层循环中的第一行,可以是数字,关键词或公式:使用公式 (an + b)。描述:表示周期的长度,n 是计数器(从 0 开始),b 是偏移值。
:after 在元素之后添加内容,也可以用来做清除浮动。
:before 在元素之前添加内容
:enabled
:disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中。
7、position的值relative和absolute定位原点是?
absolute
生成绝对定位的元素,相对于值不为 static的第一个父元素进行定位。
fixed (老IE不支持)
生成绝对定位的元素,相对于浏览器窗口进行定位。
relative
生成相对定位的元素,相对于其正常位置进行定位。
static
默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。
inherit
规定从父元素继承 position 属性的值。
8、position的absolute与fixed共同点与不同点
A:共同点:
1).改变行内元素的呈现方式,display被置为block;
2).让元素脱离普通流,不占据空间;
3).默认会覆盖到非定位元素上;
B:不同点:
absolute的”根元素“是可以设置的,而fixed的”根元素“固定为浏览器窗口。当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。
9、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
一个用于页面布局的全新CSS3功能,Flexbox可以把列表放在同一个方向(从上到下排列,从左到右),并让列表能延伸到占用可用的空间。
该布局模型的目的是提供一种更加高效的方式来对容器中的条目进行布局、对齐和分配空间。在传统的布局方式中,block 布局是把块在垂直方向从上到下依次排列的;而inline 布局则是在水平方向来排列。弹性盒布局并没有这样内在的方向限制,可以由开发人员自由操作。
试用场景:弹性布局适合于移动前端开发,在Android和ios上也完美支持
10、用纯CSS创建一个三角形的原理是什么?
把上、左、右三条边隐藏掉(颜色设为 transparent)
div#demo {width: 0;height: 0;border-width: 20px;border-style: solid;border-color: transparent transparent red transparent;}
注:IE6下将边框设置为transparent并不会透明,会产生阴影,可设置为border-style:dashed dashed solid dashed;
用CSS3 transfrom旋转45度实现
-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);-ms-transform: rotate(45deg);-o-transform: rotate(45deg);transform: rotate(45deg);
11、常用的css hack的技巧 ?
条件HACK:
属性级HACK:
_:选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线更为合适。*选择IE7及以下。诸如:(+)与(#)之类的均可使用,不过业界对(*)的认知度更高9:选择IE6+:选择IE8+和Opera15以下的浏览器e.g..bb{background-color:#f1ee18;/*所有识别*/.background-color:#00deff9; /*IE6、7、8识别*/*background-color:#a200ff;/*IE6、7识别*/(+和#也可)_background-color:#1e0bd1;/*IE6识别*/}
选择符级HACK:
在选择符前面加*,+构成选择符级HACK。
12、li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
行框的排列会受到中间空白(回车空格)等的影响,因为空格也属于字符,这些空白也会被应用样式,占据空间,所以会有间隔,把字符大小设为0,就没有空格了。
解决方法:
(1)浮动li中float:left;
(2)在ul中用font-size:0(谷歌不支持);可以使用letter-space:-3px;
13、CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
当一个元素的visibility属性被设置成collapse值后,对于一般的元素,它的表现跟hidden是一样的。
(1)谷歌浏览器中,使用collapse值和使用hidden没有区别。
(2)火狐,opera和IE,使用collapse值和使用display:none没有什么区别。
14、position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
display属性规定元素应该生成的框的类型;
position属性规定元素的定位类型;
float属性是一种布局方式,定义元素在哪个方向浮动。
类似于优先级机制:position:absolute/fixed优先级最高,有他们在时,float浮动不起作用,display值需要调整。
注:浮动或者absolute定位的元素,只能是块元素或表格。
15、对BFC规范(块级格式化上下文:block formatting context)的理解?
BFC,块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个BFC中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的margin会发生折叠。
(W3C CSS 2.1 规范中的一个概念,它是一个独立容器,决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。)
一个页面是由很多个 Box 组成的,元素的类型和 display 属性,决定了这个 Box 的类型。
不同类型的 Box,会参与不同的 Formatting Context(决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染,也就是说BFC内部的元素和外部的元素不会互相影响。
定位方案:
(1)普通流(normal flow)按照html中的先后位置至上而下布局,行内元素水平排列 ,当前行被占满后换行,块级元素会被渲染为完整的新行。
(2)浮动(floats)。
元素首先按照普通流位置出现,然后根据浮动的方向尽可能的向左向右偏移,与印刷的文本环绕相似。
(3)绝对定位(absolute position)。
绝对定位中,元素会整体脱离普通流BFC正是属于普通流,因此对兄弟元素也不会造成什么影响。具有 BFC 的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并 且 BFC 具有普通容器没有的一些特性。浮动元素,绝对定位元素,display,overflow会触发BFC。
特性:
(1)会阻止外边距折叠。
(2)会包含浮动元素。
(3)阻止元素被浮动元素覆盖。
16、css定义的权重
以下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,以下例子是演示各种定义的权重值:
/*权重为10+1=11*/.class1 div{}/*权重为10+10+1=21*/.class1 .class2 div{}
如果权重相同,则最后定义的样式会起作用,但是应该避免这种情况出现
17、设置元素浮动后,该元素的display值是多少?请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式
设置元素浮动后,display:block。
IE出现双边框的原因:浮动元素的浮动方向与margin的方向一致会出现双边框。
解决bug:(1)给浮动元素添加一个display:inline(2)给IE6写一个hack,其值为正常值的一半。
浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。
为什么会出现浮动:
出现浮动之后,我们可以很好的进行页面布局。
浮动元素引起的问题:
(1)在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或 right)的元素,在这种情况下,容器的高度不能自动伸长撑开以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。
(2)与浮动元素同级的非浮动元素会跟随其后。
(3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构。
清除浮动的方式:
1)使用空标签清除浮动。
这种方法是在所有浮动标签后面添加一个空标签
(缺点:不过这个办法会增加无意义标签使HTML结构看起来不够简洁。)
2)使用overflow。
给包含浮动元素的父标签添加css属性 overflow:auto; zoom:1; zoom:1用于兼容IE6。|| overflow:hidden。
3)使用after伪对象清除浮动。
该方法只适用于非IE浏览器。具体写法可参照以下示例。使用中需注意以下几点。该方法中必须为需要清除浮动元素的伪对象中设置 height:0,否则该元素会比实际高出若干像素;
清除浮动是为了清除使用浮动元素产生的影响。浮动的元素,高度会塌陷,而高度的塌陷使我们页面后面的布局不能正常显示。
4)、父级div定义height;
5)、父级div 也一起浮动;
6)、父级div 定义display:table;
7)、常规的使用一个class;
.clearfix:before, .clearfix:after {content: ".";display: table;}.clearfix:after {clear: both;}.clearfix {*zoom: 1;}
8)、SASS编译的时候,在浮动元素的父级div定义伪类:after
&:after,&:before{content: ".";visibility: hidden;display: block;height: 0;clear: both;}
解析原理:
1)display:block 使生成的元素以块级元素显示,占满剩余空间。
2)height:0 避免生成内容破坏原有布局的高度。
3)visibility:hidden 使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互。
4)通过 content:"."生成内容作为最后一个元素,至于content里面是点还是其他都是可以的,例如oocss里面就有经典的 content:".",有些版本可能content 里面内容为空,是不推荐这样做的,firefox直到7.0 content:”" 仍然会产生额外的空隙。
5)zoom:1 触发IE hasLayout。
通过分析发现,除了clear:both用来闭合浮动的,其他代码无非都是为了隐藏掉content生成的内容,这也就是其他版本的闭合浮动为什么会有font-size:0,line-height:0。
zoom:1的清楚浮动原理?
清除浮动,触发hasLayout。Zoom属性是IE浏览器的专有属性,它可以设置或检索对象的缩放比例。解决ie下比较奇葩的bug。譬如外边距(margin)的重叠,浮动清除,触发ie的haslayout属性等。
来龙去脉大概如下:
当设置了zoom的值之后,所设置的元素就会就会扩大或者缩小,高度宽度就会重新计算了,这里一旦改变zoom值时其实也会发生重新渲染,运用这个原理,也就解决了ie下子元素浮动时候父元素不随着自动扩大的问题。
Zoom属是IE浏览器的专有属性,火狐和老版本的webkit核心的浏览器都不支持这个属性。然而,zoom现在已经被逐步标准化,出现在 CSS 3.0 规范草案中。
目前非ie由于不支持这个属性,它们又是通过什么属性来实现元素的缩放呢?
可以通过css3里面的动画属性scale进行缩放。
18、使用 CSS 预处理器吗?喜欢那个?
预处理器:less,sass等等(给css像其他程序语言一样,加入一些编程元素,让css能像其他程序语言一样做一些预定的处理,然后就有了css预处理器)喜欢Sass,less,stylus。Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言
$color:red.test{color:$color;}/*执行结果:*/.test{color:red;}
(1)Sass 语法
$font-stack: Helvetica, sans-serif //定义变量
$primary-color: #333 //定义变量
body
font: 100% $font-stack
color: $primary-color
(2)CSS 语法
$font-stack: Helvetica, sans-serif;$primary-color: #333;body {font: 100% $font-stack;color: $primary-color;}/*编译出来的 CSS*/body {font: 100% Helvetica, sans-serif;color: #333;}
19、CSS优化、提高性能的方法有哪些?
关键选择器(key selector)。选择器的最后面的部分为关键选择器(即用来匹配目标元素的部分);
如果规定拥有 ID 选择器作为其关键选择器,则不要为规则增加标签。过滤掉无关的规则(这样样式系统就不会浪费时间去匹配它们了);
提取项目的通用公有样式,增强可复用性,按模块编写组件;增强项目的协同开发性、可维护性和可扩展性;
使用预处理工具或构建工具(gulp对css进行语法检查、自动补前缀、打包压缩、自动优雅降级);
(1)避免过度约束
/*糟糕*/
ul#nav{..}
/*好的*/
#nav{..}
(2)后代选择符不好
html div tr td {..}
(3)避免链式选择符
/*糟糕*/
.menu.left.icon {..}
/*好的*/
.menu-left-icon {..}
(4)使用复合(紧凑)语法
/*糟糕*/
.someclass {padding-top: 20px;padding-bottom: 20px;padding-left: 10px;padding-right: 10px;background: #000;background-image: url(../imgs/carrot.png);background-position: bottom;background-repeat: repeat-x;}/*好的*/.someclass {padding: 20px 10px 20px 10px;background: #000 url(../imgs/carrot.png) repeat-x bottom;}
(5)避免不必要的命名空间
/*糟糕*/
.someclass table tr.otherclass td.somerule {..}
/*好的*/
.someclass .otherclass td.somerule {..}
(6)避免不必要的重复
.someclass {color: red;background: blue;font-size: 15px;}.otherclass {color: red;background: blue;font-size: 15px;}/*好的*/.someclass, .otherclass {color: red;background: blue;font-size: 15px;}
(7)最好使用表示语义的名字。一个好的类名应该是描述他是什么而不是像什么。
(8)避免!important,可以选择其他选择器。
(9)尽可能的精简规则,你可以合并不同类里的重复规则。
19、浏览器是怎样解析CSS选择器的?
样式系统从关键选择器开始匹配,然后左移查找规则选择器的祖先元素。
只要选择器的子树一直在工作,样式系统就会持续左移,直到和规则匹配,或者是因为不匹配而放弃该规则。
而在 CSS 解析完毕后,需要将解析的结果与 DOM Tree 的内容一起进行分析建立一棵 Render Tree,最终用来进行绘图。在建立 Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 renderer。
20、在网页中的应该使用奇数还是偶数的字体?为什么呢?
使用的是偶数字体。偶数字号相对更容易和 web 设计的其他部分构成比例关系。Windows 自带的点阵宋体(中易宋体)从 Vista 开始只提供 12、14、16 px 这三个大小的点阵,而 13、15、17 px时用的是小一号的点阵(即每个字占的空间大了 1 px,但点阵没变),于是略显稀疏。
21、margin和padding分别适合什么场景使用?
margin是用来隔开元素与元素的间距;padding是用来隔开元素与内容的间隔。
何时使用margin:
(1)需要在border外侧添加空白。
(2)空白处不需要背景色。
(3)上下相连的两个盒子之间的空白,需要相互抵消时。
何时使用padding:
(1)需要在border内侧添加空白。
(2)空白处需要背景颜色。
(3)上下相连的两个盒子的空白,希望为两者之和。
兼容性的问题:在IE5 IE6中,为float的盒子指定margin时,左侧的margin可能会变成两倍的宽度。通过改变padding或者指定盒子的display:inline解决。
22、元素竖向的百分比设定是相对于容器的高度吗?
PS:当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的。
竖向距离的属性,如padding-top,padding-bottom,margin-top,margin-bottom等,当按百分比设定它们时,依据的也是父容器的宽度,而不是高度。
23、全屏滚动的原理是什么?用到了CSS的那些属性?
(1)原理:方法一是整体的元素一直排列下去,假设有5个需要展示的全屏页面,那么高度是500%,只是展示100%,剩下的可以通过transform进行y轴定位,也可以通过margin-top实现。
(2)overflow:hidden;transition:all 1000ms ease;
24、什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
(1)响应式网站设计(Responsive Web design)的理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相对应的布局。
(2)基本原理: 媒体查询 @media。
(3)兼容IE可以使用JS辅助一下来解决。
25、视差滚动效果,如何给每页做不同的动画?(回到顶部,向下滑动要再次出现,和只出现一次分别怎么做?)
视差滚动(Parallax Scrolling)就是这样的效果之一。这种技术通过在网页向下滚动的时候,控制背景的移动速度比前景的移动速度慢来创建出令人惊叹的3D效果。
原理:
(1)CSS3实现
优点:开发时间短、性能和开发效率比较好,缺点是不能兼容到低版本的浏览器。
(2)jquery实现
通过控制不同层滚动速度,计算每一层的时间,控制滚动效果。
优点:能兼容到各个版本的,效果可控性好。
缺点:开发起来对制作者要求高。
(3)插件实现方式
例如:parallax-scrolling,兼容性十分好。
26、::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。(伪元素由双冒号和伪元素名称组成)双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存在的伪元素写法。比如:first-line、:first-letter、:before、:after等。
在css2之前用的是单冒号,之后css3使用时双冒号。目前除了IE外不兼容双冒号,其他的浏览器兼容双冒号,建议还是使用单冒号。
::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素。并不存在与dom之中,只存在在页面之中。同理,after是在主体内容之后显示的。想让插入的内容出现在其它内容前,使用::before,之后使用::after;在代码顺序上,::after生成的内容也比::before生成的内容靠后。如果按堆栈视角,::after生成的内容会在::before生成的内容之上
27、如何修改chrome记住密码后自动填充表单的黄色背景 ?
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {background-color: rgb(250, 255, 189); /* #FAFFBD; */background-image: none;color: rgb(0, 0, 0);}
这黄色背景是chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性。
input:-webkit-autofill{background-color : #FAFFBD ;background-image : none ;color : #000}
第一种情况:input文本框是纯色背景的
可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的黄色背景。
input:-webkit-autofill{-webkit-box-shadow:0 0 0px 1000px white inset;border:1px solid #ccc !important;}
除了chrome默认定义的background-color,background-image,color不能用!important提升其优先级 ,所以只能用覆盖了。其他的属性均可使用!important提升其优先级。
第二种情况:input文本框使用背景图片
1)、图片不复杂可以使用第一种情况解决,纯色内阴影覆盖。
2)、使用js实现;存在一个问题是使用js方法会导致提交表单的时候无法将value值传过去。
3)、使用form标签上的关闭自动填充功能:autocomplete="off"。
28、让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing: antialiased;)
-webkit-font-smoothing在window系统下没有起作用,但是在IOS设备上起作用
-webkit-font-smoothing:antialiased是最佳的,灰度平滑。
29、你对line-height是如何理解的?
行高是指一行文字的高度,具体说是两行文字间基线的距离。css中起高度作用的因该是height和line-height,一个没有定义height属性,最终其表现作用一定是 line-height。
单行文本垂直居中:把line-height值设置为height一样大小的值可以实现单行文字的垂直居中,其实也可以把height删除。
多行文本垂直居中:需要设置display属性为inline-block。
30、怎么让Chrome支持小于12px 的文字?
用图片:如果是内容固定不变情况下,使用将小于12px文字内容切出做图片,这样不影响兼容也不影响美观。
方法一:首先取消浏览器自动调整功能。
.classstyle{-webkit-text-size-adjust:none; font-size:9px;}
方法二:现在可以使用css3里的一个属性:transform:scale()
p{font-size:10px;-webkit-transform:scale(0.8);}//0.8是缩放比例
31、font-style属性可以让它赋值为“oblique” oblique是什么意思?
在css规范中这么描述的,让一种字体表示为斜体(oblique),如果没有这样样式,就可以使用italic。oblique是一种倾斜的文字,不是斜体。
32、position:fixed;在android下无效怎么处理?
fixed的元素是相对整个页面固定位置的,你在屏幕上滑动只是在移动这个所谓的viewport,原来的网页还好好的在那,fixed的内容也没有变过位置,所以说并不是iOS不支持fixed,只是fixed的元素不是相对手机屏幕固定的。
33、如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7ms。
34、overflow: scroll时不能平滑滚动的问题怎么处理?
(1)高度尺寸不确定的时候,使用:overflow-y:scroll;
(2)高度尺寸确定的,要么没有滚动条,要么直接出现,不会出现跳动。
(3)css3计算calc和vw单位巧妙实现滚动条出现页面不跳动。
.wrap-outer {margin-left: calc(100vw - 100%);}
或
.wrap-outer {padding-left: calc(100vw - 100%);}
首先,wrap-outer指的是居中定宽主体的父级,如果没有,创建一个,然后,calc是css3的计算。
100vw是浏览器的内部宽度,而100%是可用宽度,不含滚动条。
calc(100vw-100%)是浏览器的滚动条的宽度。
35、有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度。
.box {width:200px; height: 100%;background:red;position:relative;}.el1 {height:100px;background:green;}.el2 {background:blue;width:100%;position:absolute;top:100px;bottom:0;}
外层position: relative;
百分百自适应元素直接position: absolute; top: 100px; width:100%;bottom: 0; left: 0
36、png、jpg、gif 这些图片格式解释一下,分别什么时候用。有没有了解过webp?
(1)png是便携式网络图片(Portable Network Graphics)是一种无损数据压缩位图文件格式。
优点是:压缩比高,色彩好。 大多数地方都可以用。
(2)jpg是一种针对相片使用的一种失真压缩方法,是一种破坏性的压缩,在色调及颜色平滑变化做的。在www上,被用来储存和传输照片的格式。
(3)gif是一种位图文件格式,以8位色重现真色彩的图像。可以实现动画效果时候。
(4)webp格式
是谷歌在2010年推出的图片格式,压缩率只有jpg的2/3,大小比png小了45%,缺点是压缩的时间更久了。兼容性不好,目前谷歌和opera支持。
37、什么是Cookie 隔离?(或者说:请求资源的时候不要让它带cookie怎么做)
如果静态文件都放在主域名下,那静态文件请求的时候都带有的cookie的数据提交给server的,非常浪费流量,所以不如隔离开。
因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。同时这种方式不会将cookie传入Web Server,也减少了Web Server对cookie的处理分析环节,提高了webserver的http请求的解析速度。
Cookie隔离问题,同一个网页,多个RemoteWebDriver会共享同一个Cookie。比如想要并行登陆并执行操作,这样是不行的。
38、style标签写在body后与body前有什么区别?
页面加载自上而下 当然是先加载样式。
39、什么是CSS 预处理器 / 后处理器?
预处理器例如:LESS、Sass、Stylus,用来预编译Sass或less,增强了css代码的复用性,还有层级、mixin、变量、循环、函数等,具有很方便的UI组件模块化开发能力,极大的提高工作效率。
后处理器例如:PostCSS,通常被视为在完成的样式表中根据CSS规范处理CSS,让其更有效;目前最常做的是给CSS属性添加浏览器私有前缀,实现跨浏览器兼容性的问题。
40、像素渲染流水线
1)下载HTML文档
2)解析HTML文档,生成DOM
3)下载文档中引用的CSS、JS
4)解析CSS样式表,生成CSSOM
5)将JS代码交给JS引擎执行
6)合并DOM和CSSOM,生成Render Tree
7)根据Render Tree进行布局layout(为每个元素计算尺寸和位置信息)
8)绘制(Paint)每个层中的元素(绘制每个瓦片,瓦片这个词与GIS中的瓦片含义相同)
9)执行图层合并(Composite Layers)
41、重构、回流
浏览器的重构指的是改变每个元素外观时所触发的浏览器行为,比如颜色,背景等样式发生了改变而进行的重新构造新外观的过程。重构不会引发页面的重新布局,不一定伴随着回流。
回流指的是浏览器为了重新渲染页面的需要而进行的重新计算元素的几何大小和位置的,他的开销是非常大的,回流可以理解为渲染树需要重新进行计算,一般最好触发元素的重构,避免元素的回流;比如通过通过添加类来添加css样式,而不是直接在DOM上设置,当需要操作某一块元素时候,最好使其脱离文档流,这样就不会引起回流了,比如设置position:absolute或者fixed,或者display:none,等操作结束后再显示。
42、为什么要初始化 CSS 样式
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对 CSS 初始化往往会出现浏览器之间的页面显示差异。
当然,初始化样式会对 SEO 有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
最简单的初始化方法是:*{padding:0;margin:0} (不建议)
淘宝的样式初始化:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
body, button, input, select, textarea { font:12px/1.5tahoma, arial, b8bf53; }
h1, h2, h3, h4, h5, h6{ font-size:100%; }
address, cite, dfn, em, var { font-style:normal; }
code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
small{ font-size:12px; }
ul, ol { list-style:none; }
a { text-decoration:none; }
a:hover { text-decoration:underline; }
sup { vertical-align:text-top; }
ub{ vertical-align:text-bottom; }
legend { color:#000; }
fieldset, img { border:0; }
button, input, select, textarea { font-size:100%; } table { border-collapse:collapse; border-spacing:0; }
43、简述一下src与href的区别
href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。
44、px和em的区别
px和em都是长度单位,区别是,px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。
浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em
45、css属性overflow属性定义溢出元素内容区的内容会如何处理
参数是scroll时候,必会出现滚动条。
参数是auto时候,子元素内容大于父元素时出现滚动条。
参数是visible时候,溢出的内容出现在父元素之外。
参数是hidden时候,溢出隐藏。
46、flash和js通过什么类如何交互?
Flash提供了ExternalInterface接口与JavaScript通信,ExternalInterface有两个方法,call和addCallback,call的作用是让Flash调用js里的方法,addCallback是用来注册flash函数让js调用。
47、元素的alt和title有什么异同?
这两个属性是有些重复了。在不同浏览器里面表现有些不同。在alt和title同时设置的时候,alt作为 图片的替代文字出现,title是图片的解释文字。
48、有效的javascript变量定义规则
第一个字符必须是一个字母、下划线或一个美元符号($);其他字符可以是字母、下划线、美元符号或数字。
javascript系统方法
parseFloat方法:该方法将一个字符串转换成对应的小数
escape方法: 该方法返回对一个字符串编码后的结果字符串
eval方法:该方法将某个参数字符串作为一个JavaScript执行
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用来表示一个本来要返回数值的操作数未 返回数值的情况(这样就不会抛出错误了)。isNaN()函数,而任何不能被转换为数值的值都会导致这个函数返回true。
49、JavaScript中 call和apply的描述
call()方法和apply()方法的作用相同,他们的区别在于接收参数的方式不同。在使用call()方 法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组。
function add(c, d){return this.a + this.b + c + d;}var o = {a:1, b:3};add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
57、阐述一下CSS sprities?
它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。
利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置。利用CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这也是CSS Sprites最大 的优点,也是其被广泛传播和应用的主要原因;
CSS Sprites能减少图片的字节,曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。
解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名,从而提高了网页的制作效率。
更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。维护起来更加方便。
原文https://www.toutiao.com/a6616106018017378823/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1×tamp=1540440749&app=news_article&utm_source=weixin&iid=44140957902&utm_medium=toutiao_ios&group_id=6616106018017378823
你可能感兴趣的:(【前端面试点滴知识,】)
- HQL之投影查询
归来朝歌
HQLHibernate查询语句投影查询
在HQL查询中,常常面临这样一个场景,对于多表查询,是要将一个表的对象查出来还是要只需要每个表中的几个字段,最后放在一起显示?
针对上面的场景,如果需要将一个对象查出来:
HQL语句写“from 对象”即可
Session session = HibernateUtil.openSession();
- Spring整合redis
bylijinnan
redis
pom.xml
<dependencies>
<!-- Spring Data - Redis Library -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redi
- org.hibernate.NonUniqueResultException: query did not return a unique result: 2
0624chenhong
Hibernate
参考:http://blog.csdn.net/qingfeilee/article/details/7052736
org.hibernate.NonUniqueResultException: query did not return a unique result: 2
在项目中出现了org.hiber
- android动画效果
不懂事的小屁孩
android动画
前几天弄alertdialog和popupwindow的时候,用到了android的动画效果,今天专门研究了一下关于android的动画效果,列出来,方便以后使用。
Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。
第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。
- js delete 删除机理以及它的内存泄露问题的解决方案
换个号韩国红果果
JavaScript
delete删除属性时只是解除了属性与对象的绑定,故当属性值为一个对象时,删除时会造成内存泄露 (其实还未删除)
举例:
var person={name:{firstname:'bob'}}
var p=person.name
delete person.name
p.firstname -->'bob'
// 依然可以访问p.firstname,存在内存泄露
- Oracle将零干预分析加入网络即服务计划
蓝儿唯美
oracle
由Oracle通信技术部门主导的演示项目并没有在本月较早前法国南斯举行的行业集团TM论坛大会中获得嘉奖。但是,Oracle通信官员解雇致力于打造一个支持零干预分配和编制功能的网络即服务(NaaS)平台,帮助企业以更灵活和更适合云的方式实现通信服务提供商(CSP)的连接产品。这个Oracle主导的项目属于TM Forum Live!活动上展示的Catalyst计划的19个项目之一。Catalyst计
- spring学习——springmvc(二)
a-john
springMVC
Spring MVC提供了非常方便的文件上传功能。
1,配置Spring支持文件上传:
DispatcherServlet本身并不知道如何处理multipart的表单数据,需要一个multipart解析器把POST请求的multipart数据中抽取出来,这样DispatcherServlet就能将其传递给我们的控制器了。为了在Spring中注册multipart解析器,需要声明一个实现了Mul
- POJ-2828-Buy Tickets
aijuans
ACM_POJ
POJ-2828-Buy Tickets
http://poj.org/problem?id=2828
线段树,逆序插入
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;#define N 200010struct
- Java Ant build.xml详解
asia007
build.xml
1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为ant是使用java实现的,所以它跨平台使用简单--与ant的兄弟make比起来语法清晰--同样是和make相比功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有
- android按钮监听器的四种技术
百合不是茶
androidxml配置监听器实现接口
android开发中经常会用到各种各样的监听器,android监听器的写法与java又有不同的地方;
1,activity中使用内部类实现接口 ,创建内部类实例 使用add方法 与java类似
创建监听器的实例
myLis lis = new myLis();
使用add方法给按钮添加监听器
- 软件架构师不等同于资深程序员
bijian1013
程序员架构师架构设计
本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho等。
如今很多的公司
- TeamForge Wiki Syntax & CollabNet User Information Center
sunjing
TeamForgeHow doAttachementAnchorWiki Syntax
the CollabNet user information center http://help.collab.net/
How do I create a new Wiki page?
A CollabNet TeamForge project can have any number of Wiki pages. All Wiki pages are linked, and
- 【Redis四】Redis数据类型
bit1129
redis
概述
Redis是一个高性能的数据结构服务器,称之为数据结构服务器的原因是,它提供了丰富的数据类型以满足不同的应用场景,本文对Redis的数据类型以及对这些类型可能的操作进行总结。
Redis常用的数据类型包括string、set、list、hash以及sorted set.Redis本身是K/V系统,这里的数据类型指的是value的类型,而不是key的类型,key的类型只有一种即string
- SSH2整合-附源码
白糖_
eclipsespringtomcatHibernateGoogle
今天用eclipse终于整合出了struts2+hibernate+spring框架。
我创建的是tomcat项目,需要有tomcat插件。导入项目以后,鼠标右键选择属性,然后再找到“tomcat”项,勾选一下“Is a tomcat project”即可。具体方法见源码里的jsp图片,sql也在源码里。
补充1:项目中部分jar包不是最新版的,可能导
- [转]开源项目代码的学习方法
braveCS
学习方法
转自:
http://blog.sina.com.cn/s/blog_693458530100lk5m.html
http://www.cnblogs.com/west-link/archive/2011/06/07/2074466.html
1)阅读features。以此来搞清楚该项目有哪些特性2)思考。想想如果自己来做有这些features的项目该如何构架3)下载并安装d
- 编程之美-子数组的最大和(二维)
bylijinnan
编程之美
package beautyOfCoding;
import java.util.Arrays;
import java.util.Random;
public class MaxSubArraySum2 {
/**
* 编程之美 子数组之和的最大值(二维)
*/
private static final int ROW = 5;
private stat
- 读书笔记-3
chengxuyuancsdn
jquery笔记resultMap配置ibatis一对多配置
1、resultMap配置
2、ibatis一对多配置
3、jquery笔记
1、resultMap配置
当<select resultMap="topic_data">
<resultMap id="topic_data">必须一一对应。
(1)<resultMap class="tblTopic&q
- [物理与天文]物理学新进展
comsci
如果我们必须获得某种地球上没有的矿石,才能够进行某些能量输出装置的设计和建造,而要获得这种矿石,又必须首先进行深空探测,而要进行深空探测,又必须获得这种能量输出装置,这个矛盾的循环,会导致地球联盟在与宇宙文明建立关系的时候,陷入困境
怎么办呢?
 
- Oracle 11g新特性:Automatic Diagnostic Repository
daizj
oracleADR
Oracle Database 11g的FDI(Fault Diagnosability Infrastructure)是自动化诊断方面的又一增强。
FDI的一个关键组件是自动诊断库(Automatic Diagnostic Repository-ADR)。
在oracle 11g中,alert文件的信息是以xml的文件格式存在的,另外提供了普通文本格式的alert文件。
这两份log文
- 简单排序:选择排序
dieslrae
选择排序
public void selectSort(int[] array){
int select;
for(int i=0;i<array.length;i++){
select = i;
for(int k=i+1;k<array.leng
- C语言学习六指针的经典程序,互换两个数字
dcj3sjt126com
c
示例程序,swap_1和swap_2都是错误的,推理从1开始推到2,2没完成,推到3就完成了
# include <stdio.h>
void swap_1(int, int);
void swap_2(int *, int *);
void swap_3(int *, int *);
int main(void)
{
int a = 3;
int b =
- php 5.4中php-fpm 的重启、终止操作命令
dcj3sjt126com
PHP
php 5.4中php-fpm 的重启、终止操作命令:
查看php运行目录命令:which php/usr/bin/php
查看php-fpm进程数:ps aux | grep -c php-fpm
查看运行内存/usr/bin/php -i|grep mem
重启php-fpm/etc/init.d/php-fpm restart
在phpinfo()输出内容可以看到php
- 线程同步工具类
shuizhaosi888
同步工具类
同步工具类包括信号量(Semaphore)、栅栏(barrier)、闭锁(CountDownLatch)
闭锁(CountDownLatch)
public class RunMain {
public long timeTasks(int nThreads, final Runnable task) throws InterruptedException {
fin
- bleeding edge是什么意思
haojinghua
DI
不止一次,看到很多讲技术的文章里面出现过这个词语。今天终于弄懂了——通过朋友给的浏览软件,上了wiki。
我再一次感到,没有辞典能像WiKi一样,给出这样体贴人心、一清二楚的解释了。为了表达我对WiKi的喜爱,只好在此一一中英对照,给大家上次课。
In computer science, bleeding edge is a term that
- c中实现utf8和gbk的互转
jimmee
ciconvutf8&gbk编码
#include <iconv.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/stat.h>
int code_c
- 大型分布式网站架构设计与实践
lilin530
应用服务器搜索引擎
1.大型网站软件系统的特点?
a.高并发,大流量。
b.高可用。
c.海量数据。
d.用户分布广泛,网络情况复杂。
e.安全环境恶劣。
f.需求快速变更,发布频繁。
g.渐进式发展。
2.大型网站架构演化发展历程?
a.初始阶段的网站架构。
应用程序,数据库,文件等所有的资源都在一台服务器上。
b.应用服务器和数据服务器分离。
c.使用缓存改善网站性能。
d.使用应用
- 在代码中获取Android theme中的attr属性值
OliveExcel
androidtheme
Android的Theme是由各种attr组合而成, 每个attr对应了这个属性的一个引用, 这个引用又可以是各种东西.
在某些情况下, 我们需要获取非自定义的主题下某个属性的内容 (比如拿到系统默认的配色colorAccent), 操作方式举例一则:
int defaultColor = 0xFF000000;
int[] attrsArray = { andorid.r.
- 基于Zookeeper的分布式共享锁
roadrunners
zookeeper分布式共享锁
首先,说说我们的场景,订单服务是做成集群的,当两个以上结点同时收到一个相同订单的创建指令,这时并发就产生了,系统就会重复创建订单。等等......场景。这时,分布式共享锁就闪亮登场了。
共享锁在同一个进程中是很容易实现的,但在跨进程或者在不同Server之间就不好实现了。Zookeeper就很容易实现。具体的实现原理官网和其它网站也有翻译,这里就不在赘述了。
官
- 两个容易被忽略的MySQL知识
tomcat_oracle
mysql
1、varchar(5)可以存储多少个汉字,多少个字母数字? 相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有可能对上面的问题做出错误的回答。 这个问题我查了好多资料,有的人说是可以存储5个字符,2.5个汉字(每个汉字占用两个字节的话),有的人说这个要区分版本,5.0
- zoj 3827 Information Entropy(水题)
阿尔萨斯
format
题目链接:zoj 3827 Information Entropy
题目大意:三种底,计算和。
解题思路:调用库函数就可以直接算了,不过要注意Pi = 0的时候,不过它题目里居然也讲了。。。limp→0+plogb(p)=0,因为p是logp的高阶。
#include <cstdio>
#include <cstring>
#include <cmath&