本文将从以下四个方面展开介绍:

  • 选择器
  • 样式表继承
  • css3部分特性
  • BFC

css选择器优先级策略

先附上个链接:css选择器参考手册

内联>id>class=属性选择器=伪类选择器>tag=伪元素选择器

优先级的特殊情况:!important

当在一个样式声明中使用一个 !important 规则时,此声明将覆盖任何其他声明。虽然技术上 !important 与优先级无关

样式表继承

CSS的一个主要特征就是继承,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。

由于继承而发生样式冲突时,最近祖先获胜(最近原则)。

至于可以被继承的样式有哪些?那真是太多了,我就不展开了,这里附上详细链接

css3

老规矩咱先甩个链接哈哈哈我是不是太懒了→css3

然后我们挑几个来说一下:

一、flex和grid布局

关于这两个布局,阮一峰老师写的实在是太好了,我又想直接放链接了,不行不行我还是稍微简单的写一点吧

(但链接咱还是放这→flex教程   grid教程

1)flex

采用 Flex 布局的元素,称为  容器。它的所有子元素自动成为容器成员,称为 项目。

容器属性有:

flex-direction:row | row-reverse | column | column-reverse  决定项目的排列方向

flex-wrap:nowrap | wrap | wrap-reverse  决定项目是否换行以及如何换行

flex-flow:是flex-direction和flex-wrap的简写形式,默认值为row wrap

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

这里主要注意一下space-between和space-around

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

align-content:定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

项目属性有:

  • order:定义项目的排列顺序,数值越小越靠前
  • flex-grow:定义项目的放大比例,默认为0
  • flex-shrink:定义项目的缩小比例,默认为1
  • flex-basis:定义了在分配多余空间之前,项目占据的主轴空间,默认为auto
  • flex:flex-growflex-shrink 和 flex-basis的简写
  • align-self:允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性

2)grid

flex是轴线布局,是一维布局,grid是划分行和列,是二维布局

容器属性:

display:grid | inline-grid

grid-template-columns/rows:定义每一列/行的列宽

grid-row/column-gap:设置行间距/列间距

grid-auto-flow:row | column 决定排列顺序是先行后列还是先列后行

二、filter滤镜属性

这个属性可能你没用过或者没什么印象,但是它的确无处不在呢。

filter: none | blur()| brightness()| contrast()| drop-shadow()| grayscale()| hue-rotate()| invert()| opacity()| saturate()| sepia()| url();

最常见的是filter:blur( px),用于给图像设置高斯模糊,值越大越模糊

其他详细介绍请戳这里~

三、媒体查询&rem

媒体查询@media

当我们需要设计响应式页面时,媒体查询是非常有用的,@media可以针对不同的屏幕尺寸设置不同的样式。

语法:@media mediatype and | not | only (media feature)

mediatype:all / print / screen / speech

常见media feature:

max-width / min-width:设备页面最大最小可见区域宽度

orientation:portrait / landscape  竖屏还是横屏

rem

rem多用于移动端适配,首先我们先来区分一下rem和em

em相对于当前对象文本的字体尺寸,由于em会继承父元素的大小,所以页面层级越深换算就越复杂

rem相对于根元素的大小,可以做到只修改根元素就能调整所有元素大小

js设置根元素font-size:

假设我们设计稿为750px,设它的根元素font-size为100px,

<script type="text/javascript">
/*动态调整rem值,除以100*/
function setsize() {
var winW = document.documentElement.clientWidth,
winH = document.documentElement.clientHeight,
baseFontSize = 100,
baseWidth = 750,
winWidthSize = Math.min(winW, winH);
if (winWidthSize < 270) {
winWidthSize = 270;
}
var _html = document.getElementsByTagName('html')[0];
_html.style.fontSize =winWidthSize / baseWidth * baseFontSize + 'px';
}
setsize();
</script>

四、transform&animation

transform转换

css转换,可以对元素进行移动、缩放、转动、拉长或拉伸

语法:transform:转换方法

tranform-origin:更改转换元素的原点

2D转换方法:

translate(平移)、rotate(旋转)、scale(放缩)、skew(倾斜)、matrix(以上合并)

3D转换属性:

transform-style:flat | preserve-3d

perspective:设置从何处查看一个元素的角度

perspective-origin:设置一个3D元素的底部位置

backface-visibility:定义元素在不面对屏幕时是否可见

transition过渡

必须指定要添加效果的css属性和效果的持续时间,如transition:all 2s

过渡属性:

transition-property:应用过渡的css属性的名称

transition-duration:定义过渡效果花费的时间,默认为0

transition-timing-function:ease | linear |ease-in/out |cubic-bezier( ) 规定过渡效果的时间曲线

transition-delay:规定过渡效果何时开始,默认为0

animation动画

要创建 CSS3 动画,你需要了解 @keyframes 规则。

  • @keyframes 规则是创建动画,指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。
  • 当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。
  • 在@keyframes中,请用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%。
 /*把 "myfirst" 动画捆绑到 div 元素,时长:5 秒 */
div
{
animation: myfirst 5s;
} /* 当动画为 25% 及 50% 时改变背景色,然后当动画 100% 完成时再次改变 */
@keyframes myfirst
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}

五、BFC

什么是BFC?


BFC(Block Formatting Context)块级格式化上下文,是web中盒模型布局的css渲染模式,指一个独立的容器。

形成BFC的条件

  • 浮动元素,float除none以外的值
  • 定位元素,position(fixed,absolute)
  • display:inline-block,table-cell,flex,grid
  • overflow除visible以外的值

BFC的主要特性

  • 创建了BFC的元素中,子浮动元素也会参与高度的计算,即不会高度塌陷。
  • 与浮动元素相邻的,创建了BFC的元素,不能与浮动元素相互覆盖。
  • 创建了BFC的元素不会与他们的子元素发生外边距折叠。
  • 内部的Box会在垂直方向一个接一个放置。
  • BFC里面的子元素不会影响外面的元素。
 

前端校招知识体系之css的更多相关文章

  1. 前端校招知识体系之HTML5

    啥是HTML5?官方说HTML5 是下一代的 HTML... 本文主要介绍HTML5三个方面的知识,继续往下看看吧. 语义化标签 canvas&svg 响应式meta 一.语义化标签 语义化标 ...

  2. 前端知识体系之CSS及其预处理器SASS/LESS

    如果你是个前端设计师,很多时候我们都在写CSS,CSS是定义页面样式的脚本,并不是一种编程语言,只是一行行单纯的描述页面元素的样子,如果对英语熟练的话,它像说话一样简单,这里举个简单的例子: body ...

  3. web前端知识体系总结

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  4. 自己总结的web前端知识体系大全【欢迎补充】

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  5. web前端知识体系大全

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  6. web前端知识体系小结(转)

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  7. 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!

    前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. ...

  8. web前端知识体系大全【欢迎补充】

    大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的是想要颠覆人 ...

  9. web前端知识体系大全【转载】

    自己总结的web前端知识体系大全[欢迎补充]   1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在 ...

随机推荐

  1. webkit内核的浏览器常见7种分别是..

    Google Chrome Safari 遨游浏览器 3.x 搜狗浏览器 阿里云浏览器 QQ浏览器 360浏览器 ...

  2. 理解URL以及如何区分相对URL和绝对URL

    URL(Uniform Resource Locator 统一资源定位符)可以理解为网络地址. url 包含了关于文件储存位置和浏览器应该如何处理文件的信息. URL的第一个部分称为模式scheme, ...

  3. java——逻辑运算符与(&和&&)或(|和||)

    区别: 1意思不同: &&是“与”的意思,||是“或者”的意思. 2 使用上不同:a && b:a和b同时为true 才返回 true, 否则返回false:a || ...

  4. 百度小程序 配置 app.json 文件

    可以通过配置 app.json 文件,设置 SWAN 的界面.路径.多 TAB 等. app.json 配置项列表如下 属性 类型 必填 描述 pages Array.<string> 是 ...

  5. 【CF1252K】Addition Robot(线段树,矩阵乘法)

    题意: 思路:因为线段树上每一段的矩阵之积只有两种,预处理一下,翻转的时候下传tag然后把另一种可能性换上来就好 #include<bits/stdc++.h> using namespa ...

  6. django model 操作总结

    使用场景 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了).//两个表的数据一一对应 例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足 ...

  7. 在CentOS7中配置网络时常见的LSB加载失败问题

    前几天,为了给OpenNebula扩展新的主机节点,对CentOS7的网络进行了配置.本以为网络配置只需要简单修改ifcfg-eth0即可,但是在重启网络服务时却遇到了一个LSB加载失败的问题(Fai ...

  8. APK文件结构和安装过程

    APK文件结构Android应用是用Java编写的,利用Android SDK编译代码,并且把所有的数据和资源文件打包成一个APK (Android Package)文件,这是一个后缀名为.apk的压 ...

  9. BigDecimal.setScale 处理java小数点[转]

    BigDecimal.setScale()方法用于格式化小数点setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余 ...

  10. #1024-JSP结构

    JSP 结构 网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面.容器负责截获对JSP页面的请求. JSP容器与Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够 ...