前端面试之css

6 篇文章 0 订阅

1.行内元素与块级元素区别

1.1.行内元素与块级函数可以相互转换,通过修改display属性值来切换块级元素和行内元素,行内元素display:inline,块级元素display:block。

1.2.行内元素和其他行内元素都会在一条水平线上排列,都是在同一行的;块级元素却总是会在新的一行开始排列,各个块级元素独占一行,垂直向下排列,若想使其水平方向排序,可使用左右浮动(float:left/right)让其水平方向排列。

1.3.行内元素不可以设置宽高,宽度高度随文本内容的变化而变化,但是可以设置行高(line-height),同时在设置外边距margin上下无效,左右有效,内填充padding上下无效,左右有效;块级元素可以设置宽高,并且宽度高度以及外边距,内填充都可随意控制。        

1.4.块级元素可以包含行内元素和块级元素,还可以容纳内联元素和其他元素;行内元素不能包含块级元素,只能容纳文本或者其他行内元素。

原文链接:https://blog.csdn.net/qq_40283423/article/details/84941832

2.flex布局 

原文链接:https://www.jianshu.com/p/4290522e1560

2.1采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。子元素,项目。父元素,容器。

容器的属性

以下6个属性设置在容器上。

flex-direction : row|row-reverse|column|column-reverse;主轴和交叉轴上的对齐方式

flex-wrap     :nowrap|wrap|wrap-reverse;   一条轴线排不下,如何换行。如果不换行,宽度不够,等比压缩内部盒子宽度。高度同理。

flex-flow     flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

justify-content   :flex-start|flex-end|center|space-between|space-around;  定义了项目在主轴上的对齐方式。

align-items   :flex-start|flex-end|center|baseline|stretch;   定义项目在交叉轴上如何对齐。

align-content:    flex-start|flex-end|center|space-between|space-around|stretch; 定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

 

项目的属性

以下6个属性设置在项目上。

order   定义项目的排列顺序。数值越小,排列越靠前,默认为0。可以是负数。

flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

flex-shrink        项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

负值对该属性无效。

flex-basis  定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

flex  是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

align-self  允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。

3.css预处理器 

内容来源:https://blog.csdn.net/ly2983068126/article/details/77737292

学过CSS的人都知道,它不是一种编程语言。你可以用它开发网页样式,但是没法用它编程。换句话说,CSS基本上是设计师的工具,不是程序员的工具。

CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。

到目前为止,在众多优秀的CSS预处理器语言中就属Sass、LESS和Stylus最优秀。

CSS 预处理器为我们带来了几项重要的能力,由浅入深排列如下:

1.文件切分

CSS 预处理器扩展了 @import 指令的能力,通过编译环节将切分后的文件重新合并为一个大文件。这一方面解决了大文件不便维护的问题,另一方面也解决了一堆小文件在加载时的性能问题。

2.模块化

3.选择符嵌套

4.变量

5.运算

6.函数

7.Mixin

4.CSS伪元素 

:before 伪元素

":before" 伪元素可以在元素的内容前面插入新内容。

:after 伪元素

":after" 伪元素可以在元素的内容之后插入新内容

5.如果相对高度设置无效,会是什么原因?

父级元素的高度是auto计算而来,不确定;所以子级元素的相对高度无效。

或者本元素就是inline,并非block。

6.css3新特性

CSS3选择器    .class    #id

边框(Borders)border-image  border-radius  box-shadow

背景  background-clip   background-origin    background-size

渐变  

线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向

径向渐变(Radial Gradients)- 由它们的中心定义

文本效果

 

hanging-punctuation规定标点字符是否位于线框之外。3
punctuation-trim规定是否对标点字符进行修剪。3
text-align-last设置如何对齐最后一行或紧挨着强制换行符之前的行。3
text-emphasis向元素的文本应用重点标记以及重点标记的前景色。3
text-justify规定当 text-align 设置为 "justify" 时所使用的对齐方法。3
text-outline规定文本的轮廓。3
text-overflow规定当文本溢出包含元素时发生的事情。3
text-shadow向文本添加阴影。3
text-wrap规定文本的换行规则。3
word-break规定非中日韩文本的换行规则。3
word-wrap允许对长的不可分割的单词进行分割并换行到下一行。

字体   自定义字体

转换和变形

transform适用于2D或3D转换的元素

过渡

transition简写属性,用于在一个属性中设置四个过渡属性。

动画

animation

7.display、float、position的关系

1,如果'display'设置为'none',用户端必须忽略掉'position'和'float'。

2.float不为none,浮起,不可能再独占一行,而且可以设置高宽,display变为inline-block,

 8.margin的计算方式问题

1.百分比是相对于谁的高度?父级元素的width

对元素的margin设置百分数时,百分数是相对于父元素的width计算,不管是margin-top/margin-bottom还是margin-left/margin-right。当然,padding的原理也是一样的。

我们认为,正常流中的大多数元素都会足够高以包含其后代元素(包括外边距),如果一个元素的上下外边距时父元素的height的百分数,就可能导致一个无限循环,父元素的height会增加,以适应后代元素上下外边距的增加,而相应的,上下外边距因为父元素height的增加也会增加,如此循环。

2.两个并列的盒子,上下都有margin时,下面元素margin开始计算的位置是哪里?上面盒子的border

  1. 上下两个div设置margin为20px,两个div的间距是多少?20px
  2. 上下两个div设置,上面元素margin为20px,下面元素margin为40px,两个div的间距是多少?40px
  3. 同级关系时,垂直方向上两个盒子之间的margin会重叠

    水平方向上两个盒子之间的margin会叠加

  4. 包含关系时,外层盒子为空时,不为空时

//html
<body>
    <div id='a'>
        <div id='b'></div>
    </div>
</body>

//css
    <style>
        body {
            height: 1000px;
        }

        div#a {
            width: 400px;
            height: 400px;
            background-color: dimgrey;
            margin: 30px;
        }

        div#b {
            width: 100px;
            height: 100px;
            background-color: grey;
            margin: 40px;
        }
    </style>

在外层盒子里加上一点内容

margin的计算方式有大坑,并列盒子,嵌套盒子,空盒子,非空盒子,水平margin,垂直margin……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值