元素的每个
元素。 p:last-of-type 选择属于其父元素的最后
元素的每个
元素。 p:only-of-type 选择属于其父元素唯一的
元素的每个
元素。 p:only-child 选择属于其父元素的唯一子元素的每个
元素。 p:nth-child(2) 选择属于其父元素的第二个子元素的每个
元素。 :enabled :disabled 控制表单控件的禁用状态。 :checked,单选框或复选框被选中。 :before在元素之前添加内容,也可以用来做清除浮动 :after在元素之后添加内容 6. 如何居中p?如何居中一个浮动元素?如何让绝对定位的p居中?如何居中一个img(position定位)水平居中p:border: 1px solid red; margin: 0 auto; height: 50px; width: 80px; 水平垂直居中一个浮动元素(position定位)第一种:未知元素宽高
我想居中显示
第二种:已知元素宽高的我想居中显示
如何垂直居中一个img(display : table-cell 或者 position定位)绝对定位的p水平垂直居中:border: 1px solid black; position: absolute; width: 200px; height: 100px; margin: auto; left: 0; right: 0; top:0; bottom:0; 7. display 有哪些值?说明他们的作用?1、display的值有:none,inline,block,list-item,inline-block,table,inline-table,table-caption,table-cell,table-row,table-row-group,table-column,table-column-group,table-footer-group,table-header-group,run-in,box,inline-box,flexbox,inline-flexbox,flex,inline-flex2、作用:none: 表示隐藏对象,与visibility属性的hidden值不同,display:none不为被隐藏的对象保留物理空间 ,然visibility:hidden就保留inline(默认值):表示指定对象为内联元素block: 指定对象为块元素。list-item: 指定对象为列表项目inline-block: 指定对象为内联块元素。(这是CSS2中的属性)table: 指定对象作为块元素级的表格。类同于html标签table(CSS2)inline-table: 指定对象作为内联元素级的表格。类同于html标签table(CSS2)table-caption: 指定对象作为表格标题。类同于html标签caption(CSS2)table-cell: 指定对象作为表格单元格。类同于html标签td(CSS2)table-row: 指定对象作为表格行。类同于html标签tr(CSS2)table-row-group: 指定对象作为表格行组。类同于html标签tbody(CSS2)table-column: 指定对象作为表格列。类同于html标签col(CSS2)table-column-group: 指定对象作为表格列组显示。类同于html标签colgroup(CSS2)table-header-group: 指定对象作为表格标题组。类同于html标签thead(CSS2)table-footer-group: 指定对象作为表格脚注组。类同于html标签tfoot(CSS2)run-in: 根据上下文决定对象是内联对象还是块级对象。(CSS3)box: 将对象作为弹性伸缩盒显示。(伸缩盒的最老版本中属性)(CSS3)inline-box: 将对象作为内联块级弹性伸缩盒显示。(伸缩盒的最老版本中属性)(CSS3)flexbox: 将对象作为弹性伸缩盒显示。(伸缩盒的最老版本中属性)(CSS3)inline-flexbox: 将对象作为内联块级弹性伸缩盒显示。(伸缩盒的最老版本中属性)(CSS3)flex: 将对象作为弹性伸缩盒显示。(伸缩盒的最老版本中属性)(CSS3)inline-flex: 将对象作为内联块级弹性伸缩盒显示。(伸缩盒的最老版本中属性)(CSS3)8. position 的值? absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。 fixed生成固定定位的元素,相对于浏览器窗口进行定位。(老IE不支持)元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。 relative生成相对定位的元素,相对于其正常位置进行定位,不脱离文档流。因此,“left:20” 会向元素的 LEFT 位置添加 20 像素。 static默认值。没有定位,元素出现在正常的文档流中(忽略 top, bottom, left, right 或者 z-index 声明)。inherit规定应该从父元素继承 position 属性的值。 css 定位还有一个新增属性,粘性定位 sticky,它主要用在对 scroll 事件的监听上;粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。例如: one { position: sticky; top: 10px; } 在 viewport 视口滚动到元素 top 距离小于 10px 之前,元素为相对定位。之后,元素将固定在与顶部距离 10px 的位置,直到 viewport 视口回滚到阈值以下。更多关于 sticky 的介绍,请点击查看 粘性定位介绍9. CSS3有哪些新特性?新增各种 CSS 选择器 :not( p) 选择每个非p的元素;p:empty 选择每个没有任何子级的p元素(包括文本节点)边框(Borders):p{ border:2px solid; border-radius:25px; //用于设置圆角 box-shadow: 10px 10px 5px #888888; //水平阴影 垂直阴影 模糊距离 阴影颜色 border-image:url(border.png) 30 30 round;// 设置所有边框图像的速记属性。 } 背景 background-clip(规定背景图的绘制区域),background-origin,background-sizep{ background:url(img_flwr.gif); background-repeat:no-repeat; background-size:100% 100%; //规定背景图的尺寸 background-origin:content-box;//规定背景图的定位区域 } // 多背景 body{ background-image:url(img_flwr.gif),url(img_tree.gif); } 线性渐变 (Linear Gradients) 向下/向上/向左/向右/对角方向background: linear-gradient(direction, color-stop1, color-stop2, ...); 文本效果 阴影text-shadow,textwrap,word-break,word-wrap;2D 转换 transform:scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg) rotate()3D转换 perspective();transform是向元素应用 2D 或者 3D 转换;过渡 transition动画多列布局 (multi-column layout)盒模型flex 布局多媒体查询 定义两套css,当浏览器的尺寸变化时会采用不同的属性10. 请解释一下 CSS3 的 flexbox(弹性盒布局模型),以及适用场景?解释:该布局模型的目的是提供一种更加高效的方式来对容器中的条目进行布局、对齐和分配空间。在传统的布局方式中,block 布局是把块在垂直方向从上到下依次排列的;而 inline 布局则是在水平方向来排列。弹性盒布局并没有这样内在的方向限制,可以由开发人员自由操作。试用场景:弹性布局适合于移动前端开发,在Android和ios上也完美支持。11. 用纯CSS创建一个三角形的原理是什么?1.采用的是均分原理盒子都是一个矩形或正方形,从形状的中心,向4个角上下左右划分4个部分首先,需要把元素的宽度、高度设为0。然后设置边框样式。width: 0; height: 0; border-top: 40px solid transparent; border-left: 40px solid transparent; border-right: 40px solid transparent; border-bottom: 40px solid #ff0000; 12. 一个满屏 品 字布局如何设计?第一种真正的品字:三块高宽是确定的上面那块用margin: 0 auto;居中;下面两块用float或者inline-block不换行;用margin调整位置使他们居中。第二种全屏的品字布局:上面的div设置成100%,下面的div分别宽50%,然后使用float或者inline使其不换行。13. 常见的兼容性问题?不同浏览器的标签默认的margin和padding不一样。解决办法是加一个全局的*{margin:0;padding:0;} 来统一;IE6双边距bug:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大。hack:display:inline; 将其转化为行内属性。渐进识别的方式,从总体中逐渐排除局部。首先,巧妙的使用“9”这一标记,将IE浏览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。 渐进识别的方式,从总体中逐渐排除局部。首先,巧妙的使用“9”这一标记,将IE浏览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。background-color:#f1ee18;/*所有识别*/ .background-color:#00deff\\9; /*IE6、7、8识别*/ +background-color:#a200ff;/*IE6、7识别*/ _background-color:#1e0bd1;/*IE6识别*/} 设置较小高度标签(一般小于10px),在IE6,IE7中高度超出自己设置高度。hack:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。超链接访问过后hover样式就不出现了,因为被点击访问过的超链接样式不再具有hover和active了。解决方法是改变CSS属性的排列顺序:L-V-H-A :a:link {} a:visited {} a:hover {} a:active {} IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,event对象有pageX,pageY属性,但是没有x,y属性。解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.14. 写出几种IE6 BUG的解决方法 双边距BUG float引起的 使用display 3像素问题 使用float引起的 使用dislpay:inline -3px 超链接hover 点击后失效 使用正确的书写顺序 link visited hover active Ie z-index问题 给父级添加position:relative Png 透明 使用js代码 改 Min-height 最小高度 !Important 解决’ select 在ie6下遮盖 使用iframe嵌套 为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px) ie 6 不支持!important 15. 为什么要初始化 CSS 样式因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。16. absolute 的 containing block(容器块)计算方式跟正常流有什么不同?无论属于哪种,都要先找到其祖先元素中最近的 position 值不为 static 的元素,然后再判断:若此元素为 inline 元素,则 containing block 为能够包含这个元素生成的第一个和最后一个 inline box 的 padding box (除 margin, border 外的区域) 的最小矩形;否则,则由这个祖先元素的 padding box 构成。如果都找不到,则为 initial containing block。补充: static(默认的)/relative:简单说就是它的父元素的内容框(即去掉padding的部分) absolute: 向上找最近的定位为absolute/relative的元素 fixed: 它的containing block一律为根元素(html/body),根元素也是initial containing block 17. CSS里的 visibility 属性有个 collapse 属性值是干吗用的?在不同浏览器下以后什么区别?用处:当一个元素的 visibility 属性被设置成 collapse 值后,对于一般的元素,它的表现跟 hidden 是一样的。但例外的是,如果这个元素是table相关的元素,例如table行,table group,table列,table column group,它的表现却跟 display: none 一样,也就是说,它们占用的空间也会释放。在谷歌浏览器里,使用 collapse 值和使用 hidden 值没有什么区别。在火狐浏览器、Opera和IE11里,使用 collapse 值的效果就如它的字面意思:table的行会消失,它的下面一行会补充它的位置。18. display:none 与 visibility:hidden 的区别是什么?display : none 隐藏对应的元素,在文档布局中不再分配空间(回流+重绘)visibility:hideen 隐藏对应的元素,在文档布局中仍保留原来的空间(重绘)使用 CSS display:none 属性后,HTML 元素(对象)的宽度、高度等各种属性值都将“丢失”;而使用 visibility:hidden 属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在。19. position 跟 display、overflow、float 这些特性相互叠加后会怎么样?display 属性规定元素应该生成的框的类型;position属性规定元素的定位类型;float属性是一种布局方式,定义元素在哪个方向浮动。类似于优先级机制:position:absolute/fixed优先级最高,有他们在时,float不起作用,display值需要调整。float 或者absolute定位的元素,只能是块元素或表格。20. 为什么会出现浮动? 什么时候需要清除浮动?清除浮动有哪些方式?优缺点是什么?你认为最好的是哪一种?为什么?出现浮动的原因:浮动元素碰到包含它的边框或者浮动元素的边框停留。在CSS规范中,浮动定位不属于正常的页面流,而是独立定位的,所以文档流的块框表现得就像浮动框不存在一样。浮动元素会漂浮在文档流的块框上。关于css的定位机制:普通流,浮动,绝对定位(position:fixed是position:absolute的一个子类)。浮动的框可以左右移动,直到它的外边缘遇到包含框或者另一个浮动框的边缘,所以才说浮动定位不属于正常的页面流。文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,就会出现包含框不会自动伸缩高度类笔盒浮动元素。所以,只含有浮动元素的父容器在显示时不需要考虑子元素的位置,就造成显示父容器像空容器一样。浮动带来的问题:父元素的高度无法被撑开,影响与父元素同级的元素与浮动元素同级的非浮动元素(内联元素)会跟随其后若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构。清除浮动的方式:父级p定义height最后一个浮动元素后加空 p 标签 并添加样式 clear:both。(理论上能清除任何标签,增加无意义的标签)包含浮动元素的父标签添加样式 overflow 为 hidden 或 auto。父级 p 定义 zoom(空标签元素清除浮动而不得不增加无意义代码的弊端,使用zoom:1用于兼容IE)用after伪元素清除浮动(用于非IE浏览器)清除浮动的方式1、父级p定义height原理:父级p手动定义height,就解决了父级p无法自动获取到高度的问题优点:简单,代码少,容易掌握缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级p不一样时,会产生问题建议:不推荐使用,只建议高度固定的布局时使用2、结尾处加空 p 标签 clear:both原理:添加一个空p,利用css提高的clear:both清除浮动,让父级p能自动获取到高度优点:简单,代码少,浏览器支持好,不容易出现怪问题缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空p,让人感觉很不爽建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法3、父级 p 定义 overflow:hidden原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度优点:简单,代码少,浏览器支持好缺点:不能和position配合使用,因为超出的尺寸的会被隐藏建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用4、父级p定义伪类 :after 和 zoom原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持建议:推荐使用,建议定义公共类,以减少CSS代码(1) 在子元素后添加一个空p p{clear:both;}(2) 在父元素中{overflow:hidden|auto;zoom:1}(3) :after伪选择符,在父容器的尾部自动创建一个子元素.clearfix:after { content: "\\0020";display: block;height: 0;clear: both; } .clearfix { zoom: 1; } "clearfix"是父容器的class名称,"content:“020”;"是在父容器的结尾处放一个空白符,"height: 0;"是让这个这个空白字符不显示出来,"display: block; clear: both;"是确保这个空白字符是非浮动的独立区块。:after选择符IE 6不支持,添加一条IE 6的独有命令"zoom:1;"就行了.21. 上下 margin 重合的问题在重合元素外包裹一层容器,并触发该容器生成一个BFC。例子:
22. 设置元素浮动后,该元素的 display 值是多少?自动变成display:block23. 移动端的布局用过媒体查询吗?通过媒体查询可以为不同大小和尺寸的媒体定义不同的css,适应相应的设备的显示。html:里边 CSS :@media only screen and (max-device-width:480px) { /css样式/} 24. 什么是CSS 预处理器 / 后处理器?大家为什么要使用他们? 预处理器例如:LESS、Sass、Stylus,用来预编译Sass或less,增强了css代码的复用性,还有层级、mixin、变量、循环、函数等,具有很方便的UI组件模块化开发能力,极大的提高工作效率。 后处理器例如:PostCSS,通常被视为在完成的样式表中根据CSS规范处理CSS,让其更有效;目前最常做的是给CSS属性添加浏览器私有前缀,实现跨浏览器兼容性的问题。 CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题”,例如你可以在 CSS 中使用变量、简单的逻辑程序、函数(如右侧代码编辑器中就使用了变量$color)等等在编程语言中的一些基本特性,可以让你的 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。 其它 CSS 预处理器语言:Sass(SCSS)LESSStylusTurbineSwithch CSSCSS CacheerDT CSS 为什么要使用它们?25. CSS优化、提高性能的方法有哪些?优化主要还是朝网络传输方面和减少不必要的渲染考虑1.发布前压缩CSS,减少数据传输量。2.合并属性,如margine-left:5px;margine-top:10px 这个就可以合并成一条的。3.合理设计CSS 布局,注意复用样式,减少渲染上花的时间。class和ID的选择,少用*这种全局匹配,合理设置基本样式(如设置table{})提高复用。4.减少低效代码的使用,如滤镜,express表达式,!import引入。5.其它技术,如CSS SPRITE等。ps:CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。26. 浏览器是怎样解析CSS选择器的?CSS选择器的解析是从右向左解析的,为了避免对所有元素进行遍历。若从左向右的匹配,发现不符合规则,需要进行回溯,会损失很多性能。若从右向左匹配,先找到所有的最右节点,对于每一个节点,向上寻找其父节点直到找到根元素或满足条件的匹配规则,则结束这个分支的遍历。两种匹配规则的性能差别很大,是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶子节点),而从左向右的匹配规则的性能都浪费在了失败的查找上面。而在 CSS 解析完毕后,需要将解析的结果与 DOM Tree 的内容一起进行分析建立一棵 Render Tree,最终用来进行绘图。在建立 Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 Render Tree。27. 在网页中的应该使用奇数还是偶数的字体?为什么呢?使用偶数字体。偶数字号相对更容易和 web 设计的其他部分构成比例关系。Windows 自带的点阵宋体(中易宋体)从 Vista 开始只提供 12、14、16 px 这三个大小的点阵,而 13、15、17 px时用的是小一号的点。(即每个字占的空间大了 1 px,但点阵没变),于是略显稀疏。28. margin 和 padding 分别适合什么场景使用?何时应当使用margin需要在border外侧添加空白时。空白处不需要背景(色)时。上下相连的两个盒子之间的空白,需要相互抵消时。如15px+20px的margin,将得到20px的空白。何时应当时用padding需要在border内测添加空白时。空白处需要背景(色)时。上下相连的两个盒子之间的空白,希望等于两者之和时。如15px+20px的padding,将得到35px的空白。浏览器兼容性问题在IE5.x、IE6中,为float的盒子指定margin时,左侧margin可能会变成两倍的宽度。通过改用padding或指定盒子为display:inline可以解决。29. 元素竖向的百分比设定是相对于容器的高度吗?当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,但是,对于一些表示竖向距离的属性,例如 padding-top , padding-bottom , margin-top , margin-bottom 等,当按百分比设定它们时,依据的也是父容器的宽度,而不是高度。30. 全屏滚动的原理是什么?用到了CSS的哪些属性?原理:有点类似于轮播,整体的元素一直排列下去,假设有5个需要展示的全屏页面,那么高度是500%,只是展示100%,剩下的可以通过transform进行y轴定位,也可以通过margin-top实现overflow:hidden;transition:all 1000ms ease;31. 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE? 响应式网站设计(Responsive Web design)是一个网站能够兼容多个终端,而不是为每一个终端做一个特定的版本。 基本原理是通过媒体查询检测不同的设备屏幕尺寸做处理。 页面头部必须有meta声明的viewport。 32. 视差滚动效果?视差滚动(Parallax Scrolling)通过在网页向下滚动的时候,控制背景的移动速度比前景的移动速度慢来创建出令人惊叹的3D效果。CSS3实现优点:开发时间短、性能和开发效率比较好,缺点是不能兼容到低版本的浏览器jQuery实现通过控制不同层滚动速度,计算每一层的时间,控制滚动效果。优点:能兼容到各个版本的,效果可控性好缺点:开发起来对制作者要求高插件实现方式例如:parallax-scrolling,兼容性十分好33. ::before 和 :after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。 ::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素。并不存在于dom之中,只存在在页面之中。 :before 和 :after 这两个伪元素,是在CSS2.1里新出现的。起初,伪元素的前缀使用的是单冒号语法,但随着Web的进化,在CSS3的规范里,伪元素的语法被修改成使用双冒号,成为::before ::after 注意:对于IE6/7/8仅支持单冒号表示法,而现代浏览器同时支持这两种表示法。另外,在CSS3中单冒号和双冒号的区域主要是用来区分伪类和伪元素的。 34. 你对line-height是如何理解的?行高是指一行文字的高度,具体说是两行文字间基线的距离。CSS中起高度作用的是height和line-height,没有定义height属性,最终其表现作用一定是line-height。单行文本垂直居中:把line-height值设置为height一样大小的值可以实现单行文字的垂直居中,其实也可以把height删除。多行文本垂直居中:需要设置display属性为inline-block。35. 怎么让Chrome支持小于12px 的文字?p{ font-size:10px; -webkit-transform:scale(0.8);//0.8是缩放比例 } 36. 让页面里的字体变清晰,变细用CSS怎么做?-webkit-font-smoothing 在 window 系统下没有起作用,但是在 IOS 设备上起作用-webkit-font-smoothing:antialiased 是最佳的,灰度平滑。37. position:fixed; 在 android 下无效怎么处理 ?复制代码38. 如果需要手动写动画,你认为最小时间间隔是多久,为什么?多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7ms。39. li 与 li 之间有看不见的空白间隔是什么原因引起的?有什么解决办法?原因:行框的排列会受到中间空白(回车空格)等的影响,因为空格也属于字符,这些空白也会被应用样式,占据空间,所以会有间隔,把字符大小设为0,就没有空格了。解决方法:解决:可以将
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。