10个关于css高频面试题(第二篇)

1. 用纯CSS创建一个三角形的原理是什么


1. 写一个我们最熟悉的 border应用 [更多资料加V:2417268862(免费)]

之前写三角形, 都是直接记住代码,没有探究原因,我也是直到有一次面试时,面试大哥让我说说css创建三角形的原理,我就......回来就赶紧翻资料.接下来我就将当时我理解的过程列举出来:


.box{

        width:100px;

        height:100px;

        border:3px solid;

        border-color:#1b93fb #1bfb24 #efad48 #ef4848;

}


效果如下:


2. 接下来,我们将border值增大

.box{

        width:100px;

        height:100px;

        border:50px solid;

        border-color:#1b93fb #1bfb24 #efad48 #ef4848;

}

效果如下:

很容易发现, border渲染并不是正方形, 而是梯形的.


3. 在增大border的基础下, 此时我们将盒子宽高变成0,会产生什么效果呢!

.box{

        width:0px;

        height:0px;

        border:50px solid;

        border-color:#1b93fb #1bfb24 #efad48 #ef4848;

}

效果如下:


四个三角形拼合成的矩形呈现在我们眼前,那如如果我们只想要一个三角形, 我们是不是可以设想将其他三个设为不可见;


4. 设置透明, 隐藏其中三个三角形(时间紧迫,有些符号没加上,见谅)

.box{

        width:0px;

        height:0px;

        border:50px solid;

        border-color:transparent transparent transparent #ef4848;

}


三角形这样就出来, 有木有很简单, 当然我们也可以采用逆向思维来写这个效果, 就是先将所有边框设为透明, 然后需要哪边再对其设置颜色, 效果是一样的

.box{

        width:0px;

        height:0px;

        border:50px solid transparent;

        border-left:50px solid #ef4848;

}

这样给面试你的人讲,讲明白应该不是问题., 重点就是要理解border的应用



2. 实现三栏布局有哪些方法, 分别描述一下

三栏布局,顾名思义就是两边固定,中间自适应。三栏布局在开发十分常见,那么什么是三栏布局?即左右模块固定宽度,中间模块随浏览器变化自适应,想要完成的最终效果如下图所示:


下面列出四种实现方式, 在开发中可以根据实际需求选择适合自己的方法进行编码:

Flex 布局



.container{

          display:flex;

          justify-content: center;

          height:200px;

          background: #eee;

}

.left {

        width:200px;

        background-color: red;

        height:100%;

}

.main {

            background-color: yellow;

            flex:1;

}

.right {

               width:200px;

               background-color: green;

}

</style>

<div class=container>

<div class=left></div>

<div class=main></div>

<div class=right></div>

</div>

简单实用,现在比较流行的方案,但是需要考虑浏览器的兼容性。



绝对定位布局


<style>

.container {

          position: relative;

          background:#eee;

        height:200px;

}

.main {

        height:200px;

        margin:0120px;

        background-color: yellow;

}

.left {

          position: absolute;

            width:100px;

            height:200px;

            left:0;

            top:0;

          background-color: red;

}

.right {

          position: absolute;

        width:100px;

            height:200px;

          background-color: green;

        right:0;

        top:0;

}

</style>

<div class=container>

<div class=left></div>
<div class=main></div>
<div class=right></div>

</div>

这种方案也简单实用, 并且可以将 <div class="main"></div>元素放到第一位,使得主要内容优先加载!


双飞翼布局


<style>

.content {

          float: left;

        width:100%;

}

.main {

            height:200px;

            margin-left:110px;

            margin-right:220px;

          background-color: yellow;

}

.left {

              float: left;

             height:200px;

             width:100px;

             margin-left:-100%;

             background-color: red;

}

.right {

        width:200px;

        height:200px;

          float: right;

        margin-left:-200px;

          background-color: green;

}

</style>

<div class=container>

<div class=left></div>

<div class=main></div>

<div class=right></div>

</div>

圣杯布局

<style>

.container {

        margin-left:120px;

        margin-right:220px;

}

.main {

          float: left;

        width:100%;

        height:300px;

          background-color: yellow;

}

.left {

          float: left;

        width:100px;

        height:300px;

        margin-left:-100%;

          position: relative;

left:-120px;

      background-color: blue;

}

.right {

          float: left;

        width:200px;

        height:300px;

        margin-left:-200px;

          position: relative;

        right:-220px;

          background-color: green;

}

</style>

<div class=container>

<div class=left></div>

<div class=main></div>

<div class=right></div>

</div>

圣杯布局和双飞翼布局解决问题的方案在前一半是相同的,也就是三栏全部float浮动,但左右两栏加上负margin让其跟中间栏div并排,以形成三栏布局。

3. css3实现0.5px的细线

<style>

.line {

        position: relative;

}

.line:after {

        content:"";

        position: absolute;

        left:0;

        top:0;

        width:100%;

        height:1px;

        background-color: #000000;

        -webkit-transform: scaleY(.5);

        transform: scaleY(.5);

}

</style>

<div class=line></div>

4. 开发中为什么要初始化css样式

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

5. CSS优化、提高性能的方法有哪些

尽量将样式写在单独的css文件里面,在head元素中引用 将代码写成单独的css文件有几点好处:

1.     内容和样式分离,易于管理和维护

2.    减少页面体积

3.     css文件可以被缓存、重用,维护成本降低

不使用@import

避免使用复杂的选择器,层级越少越好 建议选择器的嵌套最好不要超过三层,比如:

精简页面的样式文件,去掉不用的样式

利用CSS继承减少代码量

避免!important,可以选择其他选择器

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容