问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

CSS面试须知,哪些需要掌握得CSS技巧

发布网友 发布时间:2022-04-23 09:49

我来回答

2个回答

热心网友 时间:2022-04-06 11:51

主要都围绕知识点的理解与css兼容性问题上,请参考下面的
2.1 link和@import都可以为页面引入CSS文件,其区别是?
将样式定义在单独的.css的文件里,link和@import都可以在html页面引入css文件。有link和@import两种方式,导入方式如下:
link方式:<link rel=”stylesheet” type=”text/css” href=”aa.css”>
@import方式:<style type=”text/css”>@import “aa.css”;</style>
link和@import两种导入css文件的区别:
祖先的差别。Link属于XHTML标签,而@import完全是CSS提供的一种方式。Link标签除了可以加载CSS外,还可以做很多其他的事情,比如定义RCC,定义rel连接属性等;@import就只能加载css了。
加载顺序的差别。当一个页面被加载的时候,link引用的CSS会同时被加载,而@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢时更为明显。
兼容性的差别。由于@import是CSS2.1提出的所有老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
使用DOM控制样式时的差别。当使用JavaScript控制DOM去改变样式的时候,只能使用link标签,因为@import不是DOM可以控制的。
@Import可以在css中再次引入其他样式表,比如可以创建一个主样式表,在主样式表中再引入其他的样式表。
2.2 如何理解CSS样式表的层叠性?
CSS使用层叠的原则来考虑继承、层叠次序和优先级等重要特征,从而判断相互冲突的规则中哪个规则应该起作用。
继承性是指,许多CSS的样式规则不但影响选择器所定义的元素,而且会被这些元素的后代继承。
层叠性是指,当一个web页面使用多个样式表,多个样式表中的样式可层叠为一个。在多个样式表之间所定义的样式没有冲突的时候,浏览器会显示所有的样式。
优先级是指,当发生样式定义冲突时,浏览器首先会按照不同样式规则的优先级来应用样式。CSS样式的优先级如下所示(其中数字3拥有最高的优先权):
1.浏览器缺省设置;
2.外部样式表(.css文件)或者内部样式表(位于<head>元素内部);
3.内联样式(作为某个元素的style属性的值)。
同等优先级下,以最后定义的样式为准,important比内联高。
2.3 哪些属性可以继承?
Css中可以继承的属性如下:
文本相关属性:font-family、font-size、font-style、font-variant、font-weight、font 、letter-spacing、line-height、text-align、 text-indent、 text-transform 、word-spacing 、color;
列表相关属性:list-style-image、list-style-position、list-style-type、list-style;
表格相关属性:border-collapse、border-spacing、caption-side、table-layoute;
其他属性:Cursor、visibility;
2.4 CSS选择器中,元素选择器和类选择器的区别是什么?
元素选择器是常见的CSS选择器,即文档的元素就是最基本的选择器。选择器通常是某个HTML元素,比如<p>、<h1>、<em>、<a>等,甚至可以是<html>元素本身。
类选择器用于将样式规则与附带class属性的元素匹配,其中该class属性的值为类选择器中指定的值。使用类选择器时,首先要定义样式类,其语法为:
.className{ };
所有能够附带class属性的元素都可以使用此样式声明。只需要将class属性的值设置为”className”,则可以将类选择器的样式与元素关联。
在实际使用时,如果需要为某种元素定义样式,则往往使用元素选择器;如果要应用样式而不考虑具体设计的元素,最常用的方法就是使用类选择器。
2.5 简要描述CSS中的定位机制
CSS中,除了默认的流定位方式以外,还有如下几种定位机制:浮动定位、相对定位、绝对定位和固定定位。
浮动定位是将元素排除在普通流之外,并且将它放置在包含框的左边或者右边,但是依旧位于包含框之内。
相对定位将元素相对于它在普通流中的位置进行定位。
绝对定位是指将元素的内容从普通流中完全移除,并且可以使用偏移属性来固定该元素的位置。
固定定位是指将元素的内容固定在页面的某个位置。
2.6 display属性和 visibility属性的区别?
可以使用display属性定义建立布局是元素生成的显示框类型。
1.如果将display属性设置为block,可以让行内元素表现得像块级元素一样;
2.如果将display属性设置为inline,可以让块级元素表现得像内联元素一样;
3.可以通过把display属性设置为none,让生成的元素根本没有框。这样的话,该框及其所有内容就不在显示,不占用文档中的空间。
在DIV设计中,室友display:none属性后,HTML元素(对象)的宽度。高度等各种
属性都将”丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。
2.7 简述对CSS的盒子模型的理解?
CSS盒子模型也叫做框模型,具备内容(content)、填充(padding)、边框(border)、边距(margin)这些属性。在CSS中,每个元素都被视为一个框,而每个框都有三个属性:
border:元素的边框(可能不可见),用于将框的边缘与其他框分开;
margin:外边距,表示框的边缘与相邻框之间的距离,也称为页边空白;
padding:内边距,表示框内容和边框之间的空间。
盒子模型的结构如图所示:

由上图可以看出,width和height指的是内容区域的宽度和高度。增加内边距、外边距和边框不会影响到内容区域的尺寸,但会增加元素框的总尺寸。
因此,如果在一个具有边框的元素中放置文本,往往需要设置一些内边距,以便文本的边缘不要接触边框,这样更便于阅读。而外边距则可以在多个元素框之间创建空白,避免这些框都挤在一起。因此,在设计页面时,经常会使用padding属性和margin属性来设置页面的布局。但是,必须注意的是,一旦用了padding属性或者margin属性设置了元素的边距以后,会增加元素在页面布局中所占的面积。
2.8 简述CSS3中的伪类选择器?
CSS3提供了大量伪类选择器,浏览器对于有些伪类选择器的支持还不太好。目前,常用的伪类选择器有:
目标伪类:即 :target,突出显示活动的HTML锚,用于选取当前活动的目标元素;
元素状态伪类:比如 :enabled、:disabled、:checked;
结构伪类: 比如 :first-child、:last-child、:empty、:only-child;
否定伪类:即 :not(selector),匹配非指定元素/选择器的每个元素。
2.9 为什么建议设置背景图像的同时还设置背景颜色?
一般建议在使用背景图片的同时提供background-color属性,并且将其设置为和图像主要颜色类似的颜色。这样,如果正在加载页面,或者因为各种原因无法显示背景图像时,页面可以使用这种颜色作为背景色。
2.10 如何居中div?如何居中一个浮动元素?
给div设置一个宽度,然后设置元素的左右外边距为auto,比如,margin:0 auto。则可以实现div居中显示。
对于浮动元素,设置其左右外边距为关键字auto是无效的。此时,如果需要设置其居中显示,可以:1.精确计算其左外边距并进行设置,实现居中显示。
2.使用一个居中显示的div元素包含次浮动元素,
代码如:<div style=”margin:0 auto;”><div style=”float:left;”></div></div>
2.11 在设置文本的字体时,为什么建议设置替换字体?
可以使用font-family属性来指定文本的字体,代码如下所示:font-family:name/inherit;
此时,name为首选字体的名称。如果字体名称有多个单词,即中间有空格,则需要将字体名称用一对单引号或者双引号包围起来。
但是,如果用户机器上并没有安装name所指定的字体,则会显示默认字体。因此,如果可以指定一种替代字体,替代字体可以和指定字体不完全相同,相似且不会影响页面的布局,就可以解决问题了。
我们可以为font-family属性指定多种字体,且多种字体之间用逗号隔开,这样可以为页面指定一个字体列表。如果用户机器没有第一种字体,则浏览器会查找字体列表中的下一种字体替代默认字体显示。如果找遍了字体列表还是没有可以使用的字体,浏览器才会使用默认字体显示页面。代码如下所示:
h1{font-family:Georgia,serif;}
此时,如果用户机器上没有安装Georgia,但安装了Times字体(serif字体系列中的一种字体),浏览器就可能对<h1>元素使用Times。尽管Times与Georgia并不完全匹配,但至少足够接近。
因此,我们建议在所有font-family规则中都提供一个通用字体系列。这样就提供了一条后路,在用户机器无法提供与规则匹配的特定字体时,就可以选择一个通用字体作为替换。
2.12 内联元素可以实现浮动吗?
在CSS中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。因此,对于内联元素,如果设置为浮动,会产生和块级框相同的效果。
2.13 什么情况下需要额外设置表格的显示规则?
默认情况下(不额外设置表格的显示规则时),表格按照自动表格布局进行显示,即浏览器在显示表之前查看每一个单元格,然后基于所有格的设置计算表单大小,而列的宽度是由列段元个中没有折行的最宽的内容设定的。此时,单元格的大小会适应内容的大小。
自动表格布局的算法在表格复杂时会比较慢,这是由于它需要在确定最终的布局之前访问表格中多有的内容。在不能提前确定每一列的大小时,这种方式会非常适用。
如果额外设置表格的显示规则,即设置table-layout属性的值为fixed,则称为固定表格布局。在固定表格布局中,水平布局仅取决于表格宽度,列宽度,表格边框宽度,单元格间距,而与单元格的内容无关。浏览器将使用某列指定的宽度来计算布局,并使用该宽度计算该列中所有其他单元格的宽度。
固定表格布局与自动表格布局相比,允许浏览器更快地对表格进行布局。因为如果指定使用固定表格布局,浏览器在接收到第一行后就可以显示表格。如果表格庞大且已经指定了大小,则会加速表的显示。
2.14 简要描述CSS中content属性的作用
content属性与:before及:after伪元素配合使用,来插入生成内容,可以在元素之前或之后放置生成的内容。可以插入文本、图像、引号,并可以结合计数器为页面元素插入编号。比如,查看如下代码:
body {counter-reset:chapter;}
h1:before { content:”第”counter(chapter)”章”;}
h1 { counter-increment:chapter;}
使用content属性,并结合:before选择器和计数器counter,可以在每个<h1>元素前插入新的内容。
2.15 CSS Sprite是什么,谈谈这个技术的优缺点
CSS Sprite是一种网页图片应用处理方式,就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的”background-image”,”background-repeat”,”background-position”的组合进行背景定位。
其优点在于:①减少网页的http请求,提高性能,这也是CSS Sprite最大的优点,
也是其被广泛传播和应用的主要原因;
②减少图片的字节,多张图片合并成1张图片的字节小于多张图片的字节总和;
③较少了命名困扰,只需对一张集合的图片命名,不需要对每一个小元素进行命名提高制作效率;
④更换风格方便。只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变,维护起来更加方便;
但是CSS Sprite也存在一些不可忽视的缺点:
①图片合成比较麻烦;
②背景设置时,需要得到每一个背景单元的精确位置;
③维护合成图片时,最好只是向下加图片,而不是更改已有图片。
2.16 对CSS3有了解吗?列举几个CSS3的新特性并简要描述
CSS3作为CSS技术的升级版本,着力于模块化发展,将规范分解为一些小的模块,如选择器、盒子模型、列表模块、背景和边框等;并加入了很多新的模块和属性,比如赋值选择器、文字阴影、边框圆角、边框阴影、渐变、过渡、多栏布局、2D/3D转换、动画等。
其中,CSS3提供了一些复杂选择器,用于实现页面复杂情况下的元素选择,如属性选择器,一些伪类和伪元素选择器;渐变用于为元素设置渐变效果的背景;转换可以实现元素的变换,比如位移、缩放、旋转等;过渡可以实现简单的动画效果;动画属性则可以实现复杂的动画,可以实现逐帧制作动画。
2.17 过渡与动画的区别是什么?
过渡属性transition可以在一定的事件内实现元素的状态过渡为最终状态,用于模拟一种过渡动画效果,但是功能有限,只能用于制作简单的动画效果;
动画属性animation可以制作类似Flash动画,通过关键帧控制动画的每一步,控制更为精确,从而可以制作更为复杂的动画。
2.18 什么是CSS reset?
CSS reset,又叫做CSS重写或者CSS重置,用于改写HTML标签的默认样式。
有些HTML标签在浏览器里有默认的样式,例如p标签有上下边距,li标签有列表标识符号等。这些默认样式在不同浏览器之间也会有差别,例如ul默认带有缩进的样式,在IE下,它的缩进是通过margin实现的,而Firefox下,它的缩进是由padding实现的。着必然会带来浏览器兼容问题。
因此,在CSS代码中,可以使用CSS代码去掉这些默认样式,即重新定义标签样式,从而覆盖浏览器的CSS默认属性,即CSS reset。
需要注意的是,在进行样式重写时,不建议使用 * 选择器进行重写,这样会降低效率,影响性能。
2.19 如何清除浮动元素所带来的影响?
浮动定位是指将元素排除在普通流之外,并且将它放置在包含框的左边或者右边,但是依旧位于包含框之内。也就是说,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以元素浮动之后,其原有位置不再保留,其他元素的位置会受到影响。
如果需要清除左侧或者右侧浮动元素带来的影响,则可以使用clear属性来设置。另外,包含框呃逆的子元素浮动后,如果包含框没有设置具体的高度,则其高度会发生变化,此时,可以使用overflow属性来清除子元素浮动后带来的影响。
2.20 谈谈你对浏览器兼容性问题的理解
浏览器的类型及版本的不同会造成CSS效果不尽相同,因此需要实现浏览器兼容,也可以针对不同的浏览器编写不同的CSS。
目前,各主流浏览器的新版本,对应W3C的标准支持很好,因此,首先保证代码符合W3C的标准,这是解决浏览器兼容问题的前提。
其次,对于某些支持受限的属性,针对不同的浏览器添加相应的前缀,比如-webkit-、-o-、-moz-。
第三,对于IE的低版本,可以编写带有特定前缀的代码,实现版本识别。比如:
.bb{
background-color:#f1ee18;/*所有识别*/
.background-color:#f1ee18\9;/*IE6 7 8识别*/
+background-color:#f1ee18;/*IE6 7识别*/
_background-color:#f1ee18;/*IE6识别*/
}
另外,对于特定的兼容性问题,特殊解决。常见的特殊问题有:
1.使用CSS reset:对于有些HTML标签,浏览器默认的margin和padding不同,可以使用CSS代码改写默认的样式效果,从而实现统一
2.IE低版本中,不能使用auto关键字实现块级元素居中显示,可以改用设置父元素的text-align;
3.子元素设置上外边距时,父元素需要设置边框或者外边距;
4.外边距合并问题。

热心网友 时间:2022-04-06 13:09

CSS是前端三要素之一,通过使用CSS样式设置页面的格式,可将页面的内容与表现形式分离。对于每一个参加杭州Web前端学习的人来说,CSS是他们必须要掌握的技能之一,不仅要牢记理论知识,还要熟练应用。
1、文字居中兼容
正常处理文字上下居中的手段是让元素height和line-height相等,但是安卓环境下当字体大小<14px/0.7rem的时候会出现居中失效的情况。
解决方法:
1)判断系统环境(安卓/IOS)分别作微调;
2)font-size、height、width全部放大为2倍,利用transform进行缩放

2、图片自适应占位方式
当图片未正确加载,或加载完成前,由于图片高度为0,其容器会因为没有内容,导致容器无法撑高而塌陷,而如果加载较慢则会再图片加载完成后出现闪烁的情况。
CSS中,当padding-top/bottom值为百分比时,其值都是以其父元素的宽度为参照对象。因此对于宽高比例固定的情况,可以利用padding-top/bottom用于图片自适应占位,解决页面闪烁的问题。
如果仅设置值padding-top/bottom为百分比,会出现一个问题,就是该方法容器的max-height属性会失效,就无法*容器的最大高度了。因此,可以给容器添加一个伪元素的子元素用于撑起内容,该子元素拥有一个padding-top:100%,同时给容器一个max-height尝试*容器的高度,最后内容用绝对定位的方式添加即可。

3、使用currentColor来简化CSS
设置border-color、background-color等颜色的时候,可以使用currentColor[与当前元素的字体颜色相同]来简化CSS。
.div{
color: rgba(0,0,0,.85);
font-weight: 500;
text-align: left;
padding: 20px;
border: solid 1px currentColor;
}

4、曲线阴影的实现
多个阴影重叠,就是正常阴影+曲线阴影。
正常情况下,有个矩形有正常的阴影,作为主投影,这时候再定义一个有一定弧度圆角的圆角矩形,然后放在正常矩形的下面,并露出一点点底部有弧度的阴影,这样的话就可以形成曲线投影的效果。

5、翘边阴影的实现
利用:before和:after,加上绝对定位的性质,可以形成一个矩形,这个时候结合CSS3的倾斜属性skew和旋转属性rote。就可以形成一个有旋转角度的平行四边形,这个时候再和原来的矩形重叠,则可产生翘边效果。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...辞职后住房公积金怎么办啊,现在人不在外地,钱能取出来吗?还是可以转... 公积金辞职了能否取出来 拼多多一单拍两个地址(拼多多一单两个地址,如何处理) 冷却塔噪音隔音 监理工程师培训班哪家好 大立教育和学天教育二消培训哪个好 ...有的话分数线大概多少?如果是考进去的话大概需要多少分。 2011武职空务乘员单招已过,录取通知书何时下来 石家庄育才路168号到火车站打的多少钱 dell电脑散热是按哪个键 小米9,华为nova4跟红米k20pro哪款值得入手?挺纠结的 如何快速提高日语水平? 新浪微博可以发送私信给没有关注你的人吗? 面试UI设计师,一定要有上线的产品吗 小米9SE和红米k20pro哪个更值得买? 新浪微博我没关注的人或对方关注我,我发消息会不会看见我发的信息? Iphone6自动关机,然后就开不了机了,请问怎么办 小米redmik20Pro好还是小米9好 redmi是红米的意思吗 小米和红米什么关系... APP是什麽?是苹果专用的吗? 微博能给未关主的人发录的视频吗 微博上对方没有关注你.发信息去对方会收到吗? 懂手机的人为何宁买贵的小米9,也不选便宜的红米K20Pro? 红米K20 Pro和小米9那个比较好?性价比更高一点? 小米九和刚出的k20por哪个更好? 小米9好还是红米k20pro好(平时不拍照) 红米k20pro和米9比,哪个更好? 现在在网商银行存钱安全吗?,前段时间听说阿里被约谈了?所以有点担心存... 支付宝上银行存款安全吗? 工行网上存定期存款好吗 支付宝的网商银行存款安全吗? 微博里有未关注人的消息那是针对发给我的吗 天龙八部手游高玩教你如何快速成为大神 请问小米9,红米k20pro尊享,小米cc9pro尊享哪个值得买? 问什么新买的坚果G3Pro投影机,连接上WIFI后网速特别慢?信号没有问题手机上用着挺快的! 在微博 我没有关注任何人 也没有任何人关注我 那我发的微博有人能看到吗?是不是只有我自己才能看得到? 金色之弦游戏(PC)的问题. 微博里,如果我设置了不接受未关注人信息,那么未关注人给我发消息会 小米9和刚出的redmiK20Pro哪个值得入手? 小米CC9PRO和红米K20比怎么样?哪个性价比更高? 微博未关注的人发过来消息手机通知栏上会有通知么? 我家壁挂炉水温40度时,水压显示0.6bar,60度时1.1bar,正常吗,还是膨胀水箱缺气? 为什么我的微博首页看不到未关注人发的微博?但我发的微博的阅读数为什么是能超过我的粉丝数的呢? 简历呀? 为什么我在新浪微博不可以给没有关注我的人发私信?我朋友都可以 如何通过QuickTime Player把iPhone显示在mac笔记本上 微博我关注了一个人,他没有关注我,我发好友圈微博,他能看到吗? 怎样学日语最快 为什么我在新浪微博给未关注的人,他也没有关注的人发了条私信却在旁边有条灰色的小叹号? 微博我关注了某人,他没关注我,我给他发聊天内容他好友能看见吗,不是私信啊,是聊天? 快递还没收到,不小心点了确认收货,请问这货还能拿到吗?