CSS常见面试题

html-css026

CSS常见面试题,第1张

1.position:absolute+transform:translate(-50%,-50%)

2.position:absolute+margin-top:-100px+margin-left:-100px(需要直到div的宽高)

3.flex

4.绝对定位的top,left,bottom,right都设置为0,然后通过margin:auto实现水平垂直居中

5.display:table-cellvertical-align:middletext-align:center

6.calc函数计算实现

1. DOM结构 :元素不会渲染

2. 事件监听 :不能监听DOM事件

3. 继承 :子元素不会继承

4. 性能 :改变此属性会重排,性能较差

1. DOM结构 :元素会渲染

2. 事件监听 :能监听DOM事件

3. 继承 :子元素会继承,可以通过visibility:visible来取消继承

4. 性能 :改变此属性会重绘,性能较好

1. DOM结构 :元素会渲染

2. 事件监听 :能监听DOM事件

3. 继承 :子元素会继承,而且不能通过opcity:1来取消隐藏

4. 性能 :改变此属性会重绘,性能较好

window.divicePixelRatio=2(默认)

意思是:我们css中1px相当于实际移动端设备2px

1.border-width:0.5px

2.box-shadow内阴影模拟边框,

box-shadow:inset 0px -1px 1px 1px red

3.通过viewport设置rem的基准值,就可以直接写rem了,较好的解决方案

4.伪类+transform

通过:after或:before设置border,结合定位

两侧宽度固定,中间宽度自适应

所以我们要尽量少使用以上属性和方法

1.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>无标题文档</title>

<link href="style/index.css" rel="stylesheet" type="text/css" />

</head>

<body>

</body>

</html>

css文件里写入

@charset "utf-8"

body {

background:red

}

2.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>无标题文档</title>

<link href="style/index.css" rel="stylesheet" type="text/css" />

<style type="text/css">

p{

height:100px

width:100px

background:#00F

}

</style>

</head>

<body>

<div style="margin-bottom:10pxheight:100pxwidth:100pxbackground:green"></div>

<p></p>

</body>

</html>

css文件里写入

@charset "utf-8"

body {

background:red

}

3.

第三个问题是要你自己动手了

你直接就把上面的属性高宽值改变然后刷新下就成了

4.

在css文件中写入下面的代码

a{

text-decoration:none

}

BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

dom结构发生改变就会触发重排;重排一定会触发重绘;改变背景颜色会触发重绘

1.单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。

2.::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素。并不存在于dom之中,只存在在页面之中。

:before 和 :after 这两个伪元素,是在CSS2.1里新出现的。起初,伪元素的前缀使用的是单冒号语法,但随着Web的进化,在CSS3的规范里,伪元素的语法被修改成使用双冒号,成为::before ::after

思路:统一向左浮动,中间的放在最前面浮动顺序中间->左边->右边,浮动后因为中间的宽度为100%;所有中间的占据一行;

左边的和右边的按顺序排列在下面;如果中间的不为100%的话,三者应该在同一条线上,向让左边的移动到中间的左边上面去可以给左边的加margin-left: 负中间的宽度的值;因为左边已经移动到中间的左边了,所以中间的右边紧挨着右边的;然后右边的在中间的右边的话只需要给右边margin-left:负右边自己的宽度的值;这样就把左边和右边分别放在了中间的左边和右边的位置;会遮挡中间部分内容;这是给外层container加padding: 0 右边宽度 0 左边宽度;这时中间左右会有空白,接下来我们只需要给左右 position: relative定位,然后左边left:自己的宽度;右边right: 自己的宽度就可以了