Web前端笔试、面试题及答案———CSS篇(1)

1. 一个200*200的div在不同分辨率屏幕上下左右居中,用css实现

.test{
        width: 200px;
        height: 200px;
        position: absolute;
        top: 50%;
        left: 50%;
        background-color: lawngreen;
        transform: translate(-50%,-50%);
      }

2. 写一个左中右布局占满屏幕,其中左右两块是固定宽度200 ,中间自适应宽,要求先加载中间块,请写出结构及样式:

方法1、使用绝对定位

<head>
  <style>
      html,body{
        margin: 0;
        width: 100%;
        height: 100%;
       }
      .left,.right{
        width: 200px;
        height: 100%;
        background-color: lightblue;
        position: absolute;
        top:0;
      }
      .left{
        left: 0;
      }
      .right{
        right: 0;
      }
      .center{
        height: 100%;
        background-color: lightcoral;
      }
    </style>
</head>
<body>
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</body>

方法2、使用浮动

<head>
  <style>
      html,body{
        margin: 0;
        width: 100%;
        height: 100%;
      }
      .left,.right{
        width: 200px;
        height: 100%;
        background-color: lightblue;
      }
      .left{
        float: left;
      }
      .right{
        float: right;
      }
      .center{
        height: 100%;
        background-color: lightcoral;
      }
    </style>
</head>
<body>
<div class="left"></div>
<div class="right"></div>
<div class="center"></div>
</body>

方法3、绝对定位+浮动

<head>
    <style>
      html,body{
         margin: 0;
         width: 100%;
         height: 100%;
      }
      .left,.right{
        width: 200px;
        height: 100%;
        background-color: lightblue;
      }
      .left{
        float: left;
      }
      .right{
        float: right;
      }
      .center{
        height: 100%;
        position: absolute; 
        top:0;
        left: 200px;
        right: 200px;
        background-color: lightcoral;
      }
    </style>
</head>
<body>
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</body>

方法4、flex弹性布局

<head>
   <style>
      html,body{
        margin: 0;
        padding: 0;
        width: 100%;
        height: 100%;
       }
      .container{
        display: flex;
        display: -webkit-flex;
        width: 100%;
        height: 100%;
      }
      .left,.right{
        width: 200px;
        background-color: lightblue;
      }
      .center{
        flex: 1;
        background-color: lightcoral;
      }
    </style>
</head>
<body>
<div class="container">
  <div class="left"></div>
  <div class="center"></div>
  <div class="right"></div>
</div>
</body>

3、什么是浮动?为什么需要闭合浮动?闭合浮动的方式?

(1)浮动:浮动可以使得多个块级元素可以放置在同一行上,浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。
(2)浮动框不属于文档中的普通流,当一个元素浮动之后,不会影响到块级框的布局而只会影响内联框(通常是文本)的排列,文档中的普通流就会表现得和浮动框不存在一样,正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为0(高度塌陷)。在实际布局中,往往这并不是我们所希望的,所以需要闭合浮动元素,使其包含框表现出正常的高度。
(3)

  • 通过在浮动元素末尾添加一个空的标签例如 <div class=”clear”></div>,.clear{clear:both}
    优点:通俗易懂,容易掌握
    缺点:会添加无意义的空标签,有违结构与表现的分离,不利于后期维护。
  • 通过在浮动元素末尾添加一个<br clear="all">标签,br 属性 clear有all 、left 、right 、none四个 属性值。
    优点:比空标签方式语义稍强,代码量较少
    缺点:同样有违结构与表现的分离,不推荐使用
  • 通过设置父元素overflow值设置为hidden或者auto;在IE6中还需要触发hasLayout.
.clear{
  overflow:hidden;
  *zoom:1;
}

优点:不存在结构和语义化问题,代码量极少
缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素,不推荐使用.

  • 父元素设置display:table
    优点:结构语义化完全正确,代码量极少。
    缺点:盒模型属性已经改变,不推荐使用
  • 给父容器添加clearfix的class,用伪类clearfix:after;来这个样式。
    方法一、
.clearfix{
    *zoom:1;//触发IE hasLayout
}
.clear:after{
    content:'.';//生成内容作为最后一个元素,content里面是点还是其他都是可以的
    height:0;//避免生成内容破坏原有布局的高度
    clear:both;
    display:block;//使生成的元素以块级元素显示,占满剩余空间
    visibility:hidden;///使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互;
}

方法二、

.clearfix{
    *zoom:1;//触发IE hasLayout
}
.clear:after{
    content:'200B';//Unicode 字符里有一个“零宽度空格”,也就是U+200B,
    //这个字符本身是不可见的,可以省略掉 visibility:hidden了
    height:0;//避免生成内容破坏原有布局的高度
    clear:both;
    display:block;//使生成的元素以块级元素显示,占满剩余空间
}

方法三、

.cf{
  *zoom:1;//触发IE hasLayout
}
.cf:before,.cf:after{
  content:" ";
  display:table;
}
.cf:after{
  clear:both;
}

:before伪元素,其实它是用来处理margin边距重叠的,由于内部元素float创建了BFC,导致内部元素的margin-top和上一个盒子的margin-bottom 发生叠加。

4、什么是盒子模型?

CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。网页设计中常听的属性名:内容(content)、内边距(padding)、边框(border)、外边距(margin), CSS盒子模型都具备这些属性。这些属性我们可以用日常生活中的常见事物——盒子作一个比喻来理解,所以叫它盒子模型。
标准的css的盒子模型与低版本IE的盒子模型的不同:

  • 标准(W3C)盒子模型:内容content+填充padding+边框border+边界margin宽高指的是 content 的宽高
  • 低版本IE盒子模型:内容(content+padding+border)+ 边界margin,宽高指的是 content+padding+border 部分的宽高


5、什么是块级格式化上下文(BFC)? 什么样的元素会生成BFC? BFC的布局规则是怎样的?

(1)是一个独立的渲染区域,与这个区域外部毫不相干。功能上可以将其看作是隔离了的独立容器,容器里面的元素布局不会影响到外面的元素(如浮动、首元素的margin-top加到了父元素上等),并且BFC容器具有普通容器没有的一些特点,如包含浮动元素解决内容塌陷等。
(2)
a、根元素(html、body)
b、float不为none(left、right)
c、position属性值为absolute、fixed
d、display设置为inline-block、table-cell、table-caption、flex、inline-flex
e、overflow不为visible可看见的(hidden、scroll、auto)
(3)
a、内部的Box会在垂直方向,一个接一个地放置。
b、Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
c、每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如 此。
d、BFC的区域不会与float box重叠。
e、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
f、计算BFC的高度时,浮动元素也参与计算。

6、 position属性有几个值?分别相对谁定位?哪些值会脱离文档流?

  • absolute :相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>
  • fixed: 生成绝对的元素,相对于浏览器窗口进行定位。
  • relative :生成相对定位的元素,相对于其正常位置进行定位。
  • static :默认值,即没有定位,遵循正常的文档流对象。
  • inherit:规定应该从父元素继承 position 属性的值。
  • sticky: 基于用户的滚动位置来定位。(Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix (查看以下实例)。
    其中fixe、absolute、sticky会脱离文档流。

7、什么是伪类,什么是伪元素,他们的区别?

  • 伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。
  • 伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文档中,所以叫伪元素。
    区别:
    1、伪类的受体是文档树中已有的元素,而伪元素则创建了一个DOM外的元素
    2、伪类用于添加元素的特殊效果,而伪元素则是添加元素的内容
    3、伪类使用的一个冒号,伪元素使用两个冒号
    4、伪类更常用一些简单的动画或者交互的样式,例如滑入滑出,而为伪元素更常用语字体图标,清除浮动等。

8、CSS选择器有哪些?优先级如何?

下列是一份优先级逐级增加的选择器列表:

  • 通用选择器(*)
  • 元素(类型)选择器(div,h1,p):权值 1
  • 类选择器(.myclassName):权值10
  • 属性选择器(a[rel="external"])
  • 伪类(a:hover,li:nth-child)
  • id选择器(#myid):权值 100
  • 内联样式:权值最高 1000

9、position 跟 display、overflow、float 这些特性相互叠加后会怎么样?

display 属性规定元素应该生成的框的类型;
position属性规定元素的定位类型;
float属性是一种布局方式,定义元素在哪个方向浮动。
三者之间的关系:



首先判断display的属性值是否为"none",若是此时元素不产生框,position和float属性不起作用;若不为"none"值,再判断position的属性值是否为"fixed"和"absolute",若是float的属性值将设置为"none",display的属性值也会被重新设置;若position的属性值不是为"fixed"和"absolute",判断float的属性值是否为"none",若是display的属性值会被重新设置,若不是判断元素是否是根元素,最后指定display的值。

10、什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?

响应式网站设计(Responsive Web design)的理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及 使用的设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相对应的布局,无论用户正在使用笔记本还是iPad,我们 的页面都应该能够自动切换分辨率、图片尺寸及相关脚本功能等,以适应不同设备。
响应式设计的基本原理是通过媒体查询(@media)检测不同的设备屏幕尺寸做处理。页面头部必须有meta声明viewport:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no”>

兼容IE可以使用JS辅助一下来解决

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