目标:
学会布局、特效、动画轻松应对日常前端工作。
前端三大件:
head:meta、title、style、link、script、base。
body:div/section/article/aside/header/footer
p/
span/em/strong
table/thead/tbody/tr/td
ul/ol/li/dl/dt/dd
a/
form/input/select/textarea/button
按默认样式分
选择器的作用:1)用于配HTML元素,有不同的匹配规则,多个选择器是可以叠加的。2)选择器的分类和权重,3)解析方式和性能(了解就好,可能会出现在面试中,开发中没有什么用的,浏览器的解析方式是从右向左开始解析的,加快浏览器对css的解析速度),4)值得关注的选择器
>选择器{
属性:值;
属性:值;
}
元素选择器 a{}
伪元素选择器::before{}
类选择器 .link{}
属性选择器 [type=radio]{}
伪类选择器 :hover{}
ID选择器 #id{}
组合选择器[type=checkbox] +label{}
否定选择器:not(.link){}
通用选择器 *{}
ID 选择器 #id{} +100
类 属性 伪类 +10
元素 伪元素 +1
其它选择器 +0
!important 优先级最高
元素属性优先级高
相同权重 后写的生效
写在style属性中的样式的权重比id选择器的权重还要高
- 字体、字重、颜色、大小、行高
- 背景、边框
- 滚动、换行
- 粗体、斜体、下划线
- 字体族有:serif/sans-serif/monospance/cursive/fantasy(在写样式的时候字体可以加双引号,但是字体族不用加双引号)
- 行高的构成
- 行高相关的现象和方案
- 行高的调整
- 背景
自定义字体
@font-face{
font-family:'IF';/*自定义字体的名称为IF*/
src:url(路径);/*此处可能引用远程的字体,而引用远程的字体可能会出现跨域的问题*/
}
- 渐变色背景
- 多背景叠加(css3才有的)
- 背景图片和属性(雪碧图)
- base64和性能优化
- 多分辨适配
- 表示颜色可以使用hls的方法。
- 渐变颜色的写法
练习
背景图片的渐变可能会有面试题。
注意 背景颜色和背景图片的叠加是不需要加逗号的。
背景属性
background-repeat(值有norepeat即不平铺,repeat-x即延x方向平铺,repeat-y即沿y方向平铺)
background-position:背景图的位置。
background-size:背景图的大小。
(根据背景图的定位,可以使用css雪壁图,定位到不同的图标,这样就可以只请求一张图片,然后将一张图片展示不同的图标背景)。
background-size的作用,应用场景:第一种即真的需要将背景缩小。第二种场景,即适配移动端的时候。)
将图片变成base64的方式来引用。(原理同样是减少http请求)
background:url(data:image/png;base64,[base64数据])
浏览器拿到base64的数据的时候会先将其先转换成图片数据,再渲染到页面这个过程会比较慢。
边框的属性:线型 大小 颜色 (这三个值都要设置,若想显示边框的话)
线型的值有(solid 实线 dottde 点状 dashed 虚线)
边框背景图
边框衔接(三角形)
面试题:使用边框形成三角形
.c3{
height: 200px;
width: 0;
border-bottom: 30px solid red;
border-right: 20px solid transparent;
border-left:20px solid transparent;
/*加上此句会形成扇形*/
/*border-radius:20px;*/
}
- 滚动行为和滚动条
(overflow:内容超出边框外[visible]/内容隐藏[hidden]/滚动条显示[scroll]/滚动条自动显示[auto])
- overflow-wrap(word-wrap):通用换行控制(是否保留单词)
- word-break:针对多字节文字,可以设置句子为单位即(句子不换行)
- white-space:空白处是否断行 [经常使用的属性是:nowrap]
- 字重(粗体)font-weight
- 斜体 font-style:itatic
- 下划线 text-decoration (值为none去掉下划线)
- 指针 cursor(值为pointer为手形)
案例
.c4 input{
display: none;
}
.c4 input:checked + label{
background: url('./checkbox1.png') no-repeat;
background-size: 20px 20px;
padding-left: 20px;
}
.c4 input + label{
background: url('./checkbox2.png') no-repeat;
background-size:20px 20px;
padding-left: 20px;
}
CSS Hack 主要用来兼容ie6 ,ie7,ie8。Hack即不合法但生效的写法主要用于区分不同浏览器,缺点是:难理解,难维护,易失效。替代方案:特性检测。替代方案:针对性加class。
css样式(选择器)的优先级(计算权重确定/!important/内联样式)
雪碧图的作用(减少HTTP请求书 提高加载性能,有一些情况下 可以减少图片大小)
自定义字体的使用场景(宣传/平牌/banner等固定文案)
base64的使用(用于减少HTTP请求/适用于小图片/base64的体积约为原图4/3)
伪类和伪元素的区别(伪类表状态,伪元素是真的有元素,前者使用单冒号,后者使用双冒号)
如何美化checkbox(label[for]和id;隐藏原生inpu;:checked +label)
css布局是CSS体系中的重中之重,早期以table为主(简单),后来以技巧性布局为主(难),现在有flexbox/grid(偏简单),响应式布局是必备知识。常用的布局方法有:table表格布局,float浮动+margin,inline-block布局,flexbox布局。
####table布局
####盒子模型
盒子模型中的宽度和高度的问题是内容区的宽度和高度,若要计算整个盒子的宽度和高度要加上padding、margining和border
display/position
display:确定元素的显示类型;block/inline/inline-block。
position:确定元素的位置;static/relative/absolute/fixed。
**注意:**relative:是指针对元素本身应该在的位置。(不会因为偏移而改变布局的预算)
absolute:是脱离文档流的,不会对文档的布局产生影响。的position(是相对于最近的父元素(absolute或者reletive)的定位)
fixed:也是脱离文档流的,也不会对文档的布局产生影响。相对于屏幕。
z-index的属性值是position为(absolute/relative/fixed时可以设置)。
首先其被称为弹性盒子,盒子其本身本来就是并列的,我们在应用它的时候只需要指定其宽度即可。
详细了解:查看一下网址
http://www.ruanyifeng.com/blog/2018/10/flexbox-form.html
float的特性:根据其名称可以了解到,它的作用就是让其元素浮动起来,也就是脱离文档流,和absolute一样不会对其他元素的定位产生干扰,它虽然脱离了文档流,但是却不会脱离文本流。
float的应用场景主要作用于图文混排,文字环绕等这种布局的。
float元素对自身的影响
float元素对兄弟元素的影响
float元素对父级元素的影响
表现形式像文本一样block元素,没有高度塌陷,清楚浮动的问题,但是它有一个独特的问题就是需要处理间隙,其布局的限制就是做起响应式布局不如其他的布局方式。其比较适合那些定宽的布局需求。
处理间隙的方法: 方法一:父元素的字体设置为0,子元素的字体再设相应的字体号
代码如下
练习
左
右
方法二:就是改变html中的代码的编写方式让代码之间没有空格如下:
练习
左右
通俗的讲,响应式设计和布局就是页面在不同设备上都能正常显示,我们在日常生活中主要处理的是屏幕大小的问题。主要的方法:隐藏(即确定好那些内容是要在PC端展示在手机端隐藏的)+折行+自适应空间,rem/viewport/media query(媒体查询)
- 纹理、图案
- 渐变
- 雪碧图动画
动画的原理:主要是视觉暂留的作用(意思是人眼看到的东西会在人的大脑停留一部分时间)在技术方面我们则通过一些逐渐变化的画面形成动画。
动画的作用:使用户产生愉悦感,引起注意。
动画的类型:1.transition 补间动画。2.keyfram 关键帧动画。 3.逐帧动画
补间动画的实现主要通过 transition 此属性实现的。
实例:
.c2{
width:20px;
height:50px;
background: green;
transition: width .5s;
/*transition-timint-function,描述变化和时间的关系*/
transition-timing-function: ease-in;
}
.c2:hover{
width: 200px
}
关键帧动画,相当于多个补间动画,与元素状态的变化无关。定义更加灵活。此动画,可以没有触发条件。
关键帧动画的实现主要通过animation
实例:
.c3{
width:20px;
height:50px;
background: red;
animation: run 1s;
animation-iteration-count: infinite;
/*指动画的次数,infinite是指无限循环。*/
}
@keyframes run{
0%{
width: 0px;
}
100%{
width:200px;
}
}
逐帧动画实现的原理是在关键帧动画的基础上实现的。
基于css的另一种语言,通过工具编译成css,添加了很多css不具备的特性,能提升css文件的组织。
特性:
sass和less变量的区别
sass和less中mixin的使用
less代码示例:
.block(@fontsize){
font-size:@fontsize;
border:1px solid #ccc;
border-radius:4px;
}
调用:
.box{
.block(12px)
}
.box1{
@include block(12px);
color:green;
}
sass代码示例:
@mixin block($fontSize){
font-size:$fontSize;
border:1px solid #ccc;
border-radius:4px;
}
调用:
.box{
@include block(12px);
color:red;
}
.box1{
@include block(12px);
color:green;
}
生成对应的css
.box{
font-size:12px;
border:1px solid #ccc;
border-radius:4px;
color:red;
}
.box1{
font-size:12px;
border:1px solid #ccc;
border-radius:4px;
color:green;
}
less和sass中extend的使用
less代码示例:
.block{
font-size:@fontsize;
border:1px solid #ccc;
border-radius:4px;
}
使用:
.box{
&:extent(.block);
color:red;
}
.box1{
&:extent(.block);
color:red;
}
sass代码示例:
.block{
font-size:$fontsize;
border:1px solid #ccc;
border-radius:4px;
}
使用:
.box{
@extend .block;
color:red;
}
.box1{
@extend .block;
color:green;
}
生成对应的css
.block .box .box1{
font-size:$fontsize;
border:1px solid #ccc;
border-radius:4px;
}
.box{
color:red;
}
.box1{
color:green;
}
笼统的说css工程化有一下几个特点:组织、优化、构建、维护。
工具:PostCSS