目录
前言
一、css盒模型
1.IE盒模型:box-sizing:border-box
2.标准盒模型【box-sizing:content-box】默认
二、margin 合并
三、margin 负值
四、认识BFC
五、实现圣杯布局(一般用于PC端)
六、实现双飞翼布局(一般用于PC端)
七、FLEX 布局
八、position定位
九、水平、垂直居中
十、line-height 继承时的坑
十一、以及px、em、rem、rpx区别
十二、画三角形
十三、清除浮动方法
十五、常见的CSS3 属性
十六、css常见选择符,哪些属性可以继承,以及优先算法如何计算?
十七、超链接定义属性顺序
十八、css实现圆角div,在不同分辨率屏幕中居中显示
十九、LESS-----CSS扩展语言
二十、链接的打开方式有几种,分别是什么?
二十一、word-spacing 与单词间距?
二十二、父盒子
二十三、margin padding百分比对应父元素还是自身
如果哪里不正确欢迎指出问题,我会积极改正的。
盒模型【box-sizing】主要分为两种:IE盒模型(又称‘怪异盒模型’) 和 标准盒模型
- IE盒模型【box-sizing:border-box】:内容(content+padding+border)+ margin
- 标准盒模型【box-sizing:content-box】:content+padding+border+ margin
例子:
1.IE盒模型:box-sizing:border-box
宽度(设置的width) = 内容宽 +(左内边距+右内边距)+(左外边框+内外边框)
高度(设置的height) = 内容高 +(上内边距+下内边距)+(上外边框+下外边框)
2.标准盒模型【box-sizing:content-box】默认
宽度 = 内容宽(设置的width)+(左内边距+右内边距)+(左外边框+内外边框)
高度 = 内容高(设置的height)+(上内边距+下内边距)+(上外边框+下外边框)
1.margin合并:块级元素的上外边距与下外边距有时会合并为单个外边距。
2.注意点:
- 是两个块级元素
- 是上下不包含左右
- 只发生在当前的文档流中竖值方向上
- 行内框,浮动框或绝对定位之间的外边距不会合并。
3.出现合并的情况:
两个块元素是兄弟元素、父子元素、空元素和有内容的元素
4.造成合并原因:
- 当父子边框合并后,父类设置margin 和子类设置margin 都是相对于父类产生效果,并且取最大值的哪一个
- 当兄弟元素的时候margin-top 和margin-bottom的时候,取最大的那一个。
- 当空元素和有内容的元素合并的时候,取有内容的元素
5.例子:兄弟元素
结果:Hello World1 与 Hello World2 之间的距离 = 10px (原因:上下margin会合并,且有内容的div会合并没有内容的div)
6.解决margin合并的方法:
- 使用float float会脱离文档流,后面的元素会占据它的位置,但是它不能占据前面的元素的位置
-
使用绝对定位
上面的float:left改成position: absolute效果一样
1. margin 不同方向负值 结果
margin-top 负值 元素向上拖拽
margin-left 负值 元素向左拖拽
margin-bottom 负值 元素本身不变,下边元素上移
margin-right 负值 元素本身不变,右边元素上移
2.排列情况 举例:
- 上下排列
结果:
- 左右排列
结果:
1、BFC(Block Formatting Content)块级格式化上下文
2、作用:
- 形成独立的渲染区域
- 内部元素不会影响外界
3、形成 BFC 常见条件
- 浮动元素 float 不是none
- 绝对定位元素 position: absolute 或 fixed
- 块级元素 overflow 不是 visible
- flex 元素
- inline-block 元素
4、应用场景:
- 清除浮动
当我们不给父节点设置高度,子节点设置浮动的时候,会发生高度塌陷,这个时候我们就要清除浮动。
- 自适应两栏布局
BFC的区域不会与float box重叠,所以我们让right单独成为一个BFC
- 避免margin重叠
同一个BFC的两个相邻的Box会发生margin重叠,所以我们可以设置,两个不同的BFC,也就是我们可以让把第二个用div包起来,然后激活它使其成为一个BFC
1、目的:
- 两侧内容宽度固定,中间内容宽度自适应
- 三栏布局,中间一栏最先 加载、渲染出来(主要内容)
2、实现方法1: float + margin
3、优缺点:
- 优点:不需要添加dom节点
- 缺点:圣杯布局的缺点:正常情况下是没有问题的,但是特殊情况下就会暴露此方案的弊端,如果将浏览器无线放大时,「圣杯」将会「破碎」掉。如图:当center部分的宽小于left部分时就会发生布局混乱。(middle<left即会变形)
1、目的:(同 圣杯布局)
- 两侧内容宽度固定,中间内容宽度自适应
- 三栏布局,中间一栏最先 加载、渲染出来(主要内容)
2、实现方法1: float + margin
3、优缺点:
- 优点:不会像圣杯布局那样变形
- 缺点是:多加了一层dom节点
4、与圣杯布局区别:
圣杯布局:为了让中间div内容不被遮挡,将中间div设置了padding-left和padding-right后,将两边div用定位position: relative并配合right和left属性,以便左右板块移动后不遮挡中间板块。
双飞翼布局:为了让中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该div里用margin-left和margin-right为左右两栏div留出位置
补充--两栏布局和三栏布局的原文链接: 两栏布局和三栏布局
1、属性
父级容器相关属性:
- flex-dorection 主轴方向 水平row、垂直column方向
- justify-content 水平对齐方式 开始对齐flex-start、结束对齐flex-end、居中对齐center、两端对齐space-between
- align-items 竖直对齐方式 开始对齐flex-start、结束对齐flex-end、居中对齐center、两端对齐space-between
- flex-wrap 是否换行 wrap 换行,第一行在下方 nowrap 不换行(默认)wrap-reverse 换行,第一行在下方
子元素相关:
- align-self 子元素在交叉轴上的对齐方式 开始对齐flex-start、结束对齐flex-end、居中对齐center【可以覆盖align-items 属性】
2、实现骰子布局
3、详细参考:
原文链接:Flex 布局教程:语法篇 Flex 布局教程:实例篇
1、区别:其中absolute、static会生成块元素,不论元素本身类型
- relative 相对定位 相对于 自身 定位
- absolute 绝对定位 相对于 最近一层的父级元素 定位
- fixed 绝对固定定位 相对于浏览器窗口定位
- inherit 规定应从父元素中继承position值
- static 无定位 元素正常出现
1、水平居中:
- 行内 inline 元素:
①、父元素为块元素,在父元素上加上:text-align:center
②、父元素不是块元素,把父元素转为块元素:display:block,再在父元素上加上:text-align:center
- 块级 block 元素:
①、宽度定:给元素设置:margin:0 auto
②、宽度不定:默认子元素和父元素宽度一样,把子元素转为行内元素:display:inline ,再给其父元素设置:text-align:center
- 使用定位属性:
设置父元素相对定位,子元素绝对定位,子元素设置left:50%,margin-left:- 元素宽度/2 px 或 transform:translatex(-50%)
- flex布局实现:添加到待处理元素的父元素上
2、垂直居中
- 行内 inline 元素:
①、单行行内元素:添加行高等于盒子高度(父元素高度)
②、多行行内元素:给父元素设置:display:table-cell vertical-align:middle
- 块级 block 元素:
①、使用定位方法:
②、使用flex布局方法
3、垂直水平居中
- 定位实现:
父元素相对定位,子元素绝对定位,
法一:已知宽和高:设置子元素:top:0; right:0 ;left:0; bottom:0 ;margin:auto;
法二:已知宽和高:设置子元素: top: 50%;left: 50%; margin-left: - 宽度/2 px; margin-top: - 宽度/2 px;
法三:未知宽和高:设置子元素:top: 50%;left: 50%; transform:translate(-50%,-50%);
- 使用flex布局方法
- 具体数值 : body设置 line-height: 50px 那么: p 标签中的 line-height: 50px (继承body值)
- 比例 :body设置 line-height: 1.5 那么: p 标签中的 line-height: 24px (1.5 * 16px)
- 百分比:body设置 line-height: 200% 那么: p 标签中的 line-height: 60px (200% * 30px)
- px:绝对长度单位。(只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可)
- em: 相对长度单位,相对于父元素
- rem:相对长度单位,相对于 html 根元素【调整的时候只需调整html根元素即可】(需要适配各种移动设备,使用rem)
- rpx:是微信小程序解决自适应屏幕尺寸的尺寸单位。微信小程序规定屏幕的宽度为750rpx
设置border属性,长度宽度定义为0, 想要那个方向的三角形(上 右 下 左),就把其他方向的三角形颜色设置为 transparent
1、额外标签法:在最后一个浮动标签后,新加一个标签,给其设置clear:both
【添加无意义标签,语义化差。不推荐使用】
2、通过触发BFC方式,实现清除浮动:父元素添加overflow:hidden
【内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素。不推荐使用】
3、使用after伪元素清除浮动
【ie6-7不支持伪元素:after,使用zoom:1触发hasLayout. 推荐使用】
4、使用before和after双伪元素清除浮动
【ie6-7不支持伪元素:after,使用zoom:1触发hasLayout. 推荐使用】
- display:none是彻底消失,不在文档流中占位,浏览器也不会解析该元素;
- visibility:hidden是视觉上消失了,可以理解为透明度为0的效果,在文档流中占位,浏览器会解析该元素;
部分例子: translate( x , y )、box-sizing、box-shadow、text-shadow、border-radius、border-image、background-size
详细讲解请参考原文链接:CSS3详细讲解
1、常见的css选择符:
id选择符 #
class选择符 .
标签选择符 div p
相邻选择符 ul+div
子选择符 ul>li
后代选择符 ul li
通配符 *
属性选择符 a[href='xxx']
伪类选择符 a:after a:hover...
2、CSS中哪些属性可以继承?
(1)字体系列属性
font、font-family、font-weight、font-size、font-style、font-variant、font-stretch、font-size-adjust
(2)文本系列属性
text-indent、text-align、text-shadow、line-height、word-spacing、letter-spacing、
text-transform、direction、color
(3)表格布局属性
caption-sideborder-collapseempty-cells
(4)列表属性
list-style-type、list-style-image、list-style-position、list-style
(5)光标属性
cursor
(6)元素可见性
visibility
(7)还有一些不常用的;speak,page,设置嵌套引用的引号类型quotes等属性
注意:当一个属性不是继承属性时,可以使用inherit关键字指定一个属性应从父元素继承它的值,inherit关键字用于显式地
指定继承性,可用于任何继承性/非继承性属性。不可以继承的有:width、height、margin、padding、border、backgroud-color
3、优先级算法如何计算?
!important > 行内样式 > id> class > 元素和伪元素>通配选择器 *a:link 超链接的默认样式
a:visited 访问过的(已经看过的)链接样式
a:hover 鼠标处于鼠标悬停状态的链接样式
a:active 当鼠标左键按下时,被激活(就是鼠标按下去那一瞬间)的链接样式。
正常顺序及实例代码如下:1.border-radius:5px // 实现div为5px的圆角div
2.用css实现200*200的div在不同分辨率屏幕上下左右居中css定位的使用
- 解题思路:
不同屏幕下
1、只能使用绝对定位
2、绝对定位标签是以左上角为起点
3、中心点是高*0.5,宽*0.5
4、不要忘记写z轴的高度
1、
- 定义变量:@width: 10px
- 混合--直接引用:.bordered()
- 混合传参(@aaa:值)
- 嵌套(div{ span{}})
- 运算:@base: 2cm * 3mm; // 结果是 6cm 支持+、-、*、/
- 注释:块注释和行注释都可以使用 //、
- 导入:@import "library"; // library.less
- 映射:color: #colors[primary]
- 函数:margin: i
目录
前言
一、css盒模型
1.IE盒模型:box-sizing:border-box
2.标准盒模型【box-sizing:content-box】默认
二、margin 合并
三、margin 负值
四、认识BFC
五、实现圣杯布局(一般用于PC端)
六、实现双飞翼布局(一般用于PC端)
七、FLEX 布局
八、position定位
九、水平、垂直居中
十、line-height 继承时的坑
十一、以及px、em、rem、rpx区别
十二、画三角形
十三、清除浮动方法
十五、常见的CSS3 属性
十六、css常见选择符,哪些属性可以继承,以及优先算法如何计算?
十七、超链接定义属性顺序
十八、css实现圆角div,在不同分辨率屏幕中居中显示
十九、LESS-----CSS扩展语言
二十、链接的打开方式有几种,分别是什么?
二十一、word-spacing 与单词间距?
f((2 > 1), 0, 3px)
2、扩展
详细参考原文链:基础学习视频 、 官网详细学习
target="_self" : 在当前窗口中打开
target="_blank" : 在新窗口中打开
target="_parent" : 在父窗口中打开
target="_top" : 在顶级窗口中打开
letter-spacing作用于所有字符,但word-spacing仅作用于空格字符。换句话说,word-spacing的作用就是增加空格的间隙宽度。
问:子盒子是否会居中?子盒子长宽是否跟父盒子一样? 子盒子是否浮动?
答案:不会 不一样 会
不设置浮动的话 子盒子宽度和父盒子一样
元素的margin(水平和垂直margin)和padding(水平和垂直padding)百分比都是相对于父元素的宽度
总结
本文章仅限于我自己在面试中的总结,记录下来分享给大家,希望对大家有帮助!
以上就是本篇文章【css 常见面试题】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/quote/86491.html 栏目首页 相关文章 动态 同类文章 热门文章 网站地图 返回首页 物流园资讯移动站 http://sjzytwl.xhstdz.com/mobile/ , 查看更多