找工作第二弹——挑战CSS重难点一篇就够

前言

本篇文章是笔者在找工作前做的一些关于css复习的工作。记录了我对css相关知识的复习。

CSS知识点篇


1. 选择器

选择器作用用法
后代选择器选择后代元素.nav a
子代选择器选择亲儿子.nav>p
并集选择器选择某些相同样式的元素.nav, header
链接伪类选择器选择不同状态链接a{}和a:hover比较重要
:focus选择器获取光标的表单input:focus

2. CSS三大特性

三大特性

层叠性:相同选择器给设置相同样式,一个样式会对另一个样式产生覆盖,有效解决样式冲突问题(就近原则)。

继承性:样式的继承,子标签会继承父标签的某些样式。

优先级:当一个元素指定多个选择器就会有优先级的产生。跟权重关系也很大:

选择器权重
继承、*0
元素选择器0,0,0,1
类选择器、伪类选择器0,0,1,0
id选择器0,1,0,0
行内样式1,0,0,0
!important无穷大

需要注意的是,无论父元素权重有多高,子元素得到的权重都是0。

计算权重

复合选择器会有权重叠加。永远无进位。

ul li 权重为 0001 + 0001 = 0002
li的权重是0001 因此执行ul li规定的颜色。

需要注意的是a:hover 0,0,1,1

3. 显示模式

显示模式:元素以什么方式进行显示。

显示模式典型例子特点
块元素h、p、div、ul、li独占一行、高度可控、默认宽度为父元素100%、内部可放行内或块级元素
行内元素a、strong、b、em、i、del、span相邻行内元素在一行,一行显示多个、宽高直接设置无效、默认宽度为内容宽度、内部只能容纳文本或者其他行内元素
行内块元素img、input、td一行有多个、默认宽度为本身宽度、宽高可控

显示模式转化

行内->块  display: block;
块->行内 display: inline;
转化为行内块 display: inline-block;

4. 解决高度塌陷问题

什么是高度塌陷?

请看下面代码演示:

    <style>
        .father {
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        .son {
            margin-top: 50px;
            width: 200px;
            height: 200px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
</html>

效果演示:
在这里插入图片描述
父元素和子元素一起掉下来了。原因:外边距塌陷。

解决方法一:给父元素一个边框:

 border: 1px solid transparent;

解决方式二:给父元素一个padding(这种如果是还原设计稿就需要简单计算了):

padding: 1px;

解决方式三:给父元素加一个overflow:hidden。隐藏溢出。

5. 浮动

浮动介绍

创建浮动框,在浮动框内左浮或者右浮。

特点:
脱离标准流,不再保留原先的位置;
一行内显示并且顶端对齐排列;
具有行内块元素的性质。

约束浮动:
先用标准流上下排列,之后子元素用浮动排列左右位置。

浮动需注意:
1.和标准流父盒子搭配;
2.一浮全浮。浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。

为什么要清除浮动-解决高度塌陷问题

原因:父盒子内容不定,不方便给高,希望子盒子撑开父盒子。(也叫高度塌陷)

需解决的问题:浮动元素不占位,脱标。

解决方法:清除浮动。

清除浮动本质:清除浮动元素造成的影响。如果父盒子本身有高度,则不需要清除浮动;清除浮动之后,父级就会根据浮动的盒子自动检测高度。就不会影响标准流了。

清除浮动的策略是:闭合浮动。只在父盒子内部影响,不影响父盒子外面的其他盒子。

清除浮动

选择器{clear: 属性值;}

属性值可以是left、right、both;一般用到的都是clear: both。

额外标签法(W3C推荐做法)

额外标签法会在浮动末尾添加一个空的块级元素标签,例如:

<div style="clear: both"></div>

或者其他标签等。

<style>
.clear {
	clear: both;
}
</style>
<div class="box">
	<div>1</div>
	<div>2</div>
	<div class="clear">3</div>
</div>

给父亲添加overflow

溢出隐藏,无法显示溢出部分。

<style>
.box {
	overflow: hidden;
}
</style>
<div class="box">
	<div>1</div>
	<div>2</div>
	<div>3</div>
</div>

伪元素法

给父元素添加一个伪元素。

<style>
.clearfix:after {
	content: "",
	display: block;
	height: 0;
	clear: box;
	visibility: hidden;
}
//兼容性,IE6,7专有
.clearfix {
	*zoom: 1;
}
</style>

<div class="box clearfix">
	<div>1</div>
	<div>2</div>
	<div>3</div>
</div>

优点:不占内存,结构更清晰。结构最重要。

双伪元素

也是给父元素添加。在父元素前,后都插一个伪元素:

<style>
	.clearfix:before .clearfix:after {
		content: "",
		display: table;
	}
	.clearfix:after {
		clear: both;
	}
	.clearfix {
		*zoom: 1;
	}
</style>

6. BFC

BFC - Block Formatting Context 块级格式化上下文 BFC的定义,在官方文档到中是这么介绍的:一个BFC区域包含创建该上下文元素的所有子元素,但是不包括创建了新的BFC的子元素的内部元素,BFC是一块块独立的渲染区域,可以将BFC看成是元素的一种属性,拥有了这种属性的元素就会使他的子元素与世隔绝,不会影响到外部其他元素。

BFC我在之前的笔试种也遇到过,前面说的清除浮动,和解决外边距塌陷其实都跟它有很大关系。BFC的奥义是:独立区域,互不影响。

所以我们在遇到清除浮动,解决外边距塌陷实际上都是在让它们所在区域是BFC区域。

那么重要的问题来了,如何让一块区域变成BFC区域?

1、根元素
2、float属性不为none
3、position为absolute或fixed
4、 display为inline-block, table-cell, table-caption, flex, inline-flex
5、 overflow不为visible

7. 定位

子绝父相的原理

子绝父相的含义是,子级是绝对定位的话,父级要用相对定位。

子级绝对定位,不会占有位置,但是如果父级没有设置相对定位的话,子级就以浏览器为父盒子进行绝对定位了,所以一定要给父亲一个相对定位。

8. 元素的显示与隐藏

display 显示隐藏
visbility 显示隐藏
overflow 溢出隐藏

display

none:隐藏对象(不再占有原来的位置);
block:转化为块级元素/显示元素。

visibility

inherit:继承上一个父对象的可见性;
visible:对象可视;
== hidden==:对象隐藏;(继续占有原来的位置)
collapse:隐藏表格的行或者列。

overflow

对溢出的元素进行显示或者隐藏。
hidden:不显示溢出内容;
scroll:显示滚动条(溢出不溢出都显示);
auto:在需要的时候添加滚动条,按需而来。

9. vertical-align属性应用

用于设置图片或者表单和文字的垂直对齐。

vertical-align: baseline | top | middle | bootom

baseline:默认。元素放置在父元素的基线上;
top:把元素的顶端与行中最高元素的顶端对齐;
middle:把此元素放置在父元素的中部;
bottom:把元素顶端与行中最低元素的顶端对齐。

应用:取消图片的底部空隙。

10. 溢出文字省略号

单行文本溢出省略号:

//文本强制一行内显示
white-space: nowrap
//超出部分隐藏
overflow: hidden
//文字用省略号代替超出部分
text-overflow: ellipsis;

CSS3知识点篇

11. 新增选择器

属性选择器

//利用属性选择器,选择某个大类中具有value属性的元素
input[value]{}

//还可以根据属性值来看
input[type=text]{}

//以icon开头
div[class^=icon]{}

//以data结尾
div[class$=data]{}

类选择器、伪类选择器、属性选择器权重均为10。

结构伪类选择器

//第一个子元素
div:nth:first-child{}

//最后一个子元素
div:nth:last-child{}

//任意元素,n从1开始
div:nth-child(n){}

12. CSS3盒子模型border-box

box-sizing有两种属性值:
content-box:盒子大小为width + padding + border
border-box:盒子大小为盒子的实际大小width

13. calc()

作用:计算盒子的宽度

width: calc(100% - 80px)

可以通过+、-、*、/ 进行计算。

14. 过渡

过渡transition是CSS3中具有颠覆性的特征之一。我们可以不使用Flash或者JS的情况下让元素从一种样式过渡到另一种。

经常和:hover一起使用。

语法:

transition: 要过渡的属性 花费时间 运动曲线 从什么时候开始

要过渡的属性:要变化的属性,如果想所有属性都变化,写一个all就可以;

花费时间:单位是秒,必须写单位;

运动曲线:默认是ease;

何时开始:单位是s,可以设置延迟触发时间。


移动端

1.视口

浏览器显示页面的屏幕区域。

视口有三个:布局视口、视觉视口、理想视口。

理想视口:手动写meta视口标签通知浏览器操作。设备有多扣款,我们布局的视口就有多宽。

2.meta

meta视口标签的属性和解释说明:

属性解释说明
width设置viewport的宽度,可以设置device-width特殊值
initial-scale初始缩放比,大于0的数字
maximum-scale最大缩放比,大于0的数字
minimum-scale最小缩放比,大于0的数字
user-scalable用户是否可以缩放,yes或no(1或0)

标准viewport设置:

eta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maxmum-scale=1.0,minmum-scale=1.0">

3.物理像素&物理像素比

物理像素是指屏幕能显示的最小颗粒,也是我们说的分辨率,是物理真实存在的。

在PC端页面中,1px等于1个物理像素,但是移动端就不一样了。

比如iphone8,物理像素是750,1px开发像素= 2个物理像素。

4. 移动端开发方案

两种,一种是单独制作移动端页面;另一种是响应式页面。

单独制作移动端页面,就类似于京东,有自己的一套PC端,也有自己的移动端网页;响应式页面,可以根据屏幕宽度来调整页面的布局,从而也能达到移动端的效果。

单独制作移动端页面目前是主流,可以用到流式布局(百分比)、flex弹性布局、less+rem+媒体查询布局、混合布局;

响应式页面兼容移动端,用到媒体查询、bootstrap。

5. 布局方法

百分比布局

这里需注意的是,百分比布局,内容不能无限拉伸,所以为了保护盒子在合理范围内,要设置最大宽度于最小宽度。

能用到的属性是max-width与min-width。

flex布局

1.主轴和侧轴,flex-direction是必须要写

flex-direction: 属性值
row: 主轴x轴,默认从左到右(默认)
row-reverse: x轴,从右到左
column: 主轴为y轴,从上到下
column-reserve: y轴,从下到上

2.主轴和侧轴元素排列方式:

主轴:

justify-content: 属性值

侧轴:

align-itmems: 属性值

属性:

flex-start: 从左到右排列
flex-end:从尾部开始排列
center:在主轴居中对齐
space-around:平分剩余空间
space-between:先平分两边,再平分剩余空间

3.设置子元素是否换行:

//不换行
flex-wrap: nowrap;
//换行
flex-wrap: wrap;

4.flex属性值:
在flex中,子项占有分数,可以分配剩余空间。flex后面可以跟着数字,也可以跟着百分比。大量用于布局以及自适应。
flex的值也可以是百分比。比如一共有十个盒子,要排成两行,一行五个。可是如果我设置flex等于1,则十个盒子压缩排成了一行。那么只需要给每个盒子的flex设置为20%即可达到换行效果。

rem适配布局

rem: 一种单位。类似于em,em是父元素字体大小。

不同的是rem的基准是基于html的字体大小。比如根元素(html)设置font-sie为12px,非根元素设置width:2rem,则换算成px就是24px。

优点:整体控制,根据修改html里面的文字大小来改变页面种的元素大小。

媒体查询

使用@media查询,可以针对不同的媒体类型定义不同的样式

@media mediatype and|not|only (media feature){}
@media:以media开头
mediatype:媒体类型,all(所有设备)、print(打印机或者打印预览)、screen(电脑屏幕)
and not only:关键字,and(一个或多个媒体特性连在一起)、not(排除某个媒体类型)、only(指定某个特殊的媒体类型)
media feature:媒体特性,必须有小括号包含,width(区域宽度)、min-width(最小宽度)、max-width(最大宽度)。

媒体查询也可也动态引入资源:

    <!-- 当我们屏幕大于等于640以上,div一行显示两个,当屏幕小于640,让div一行显示一个  -->
    <link rel="stylesheet" href="style320.css" media="screen and (min-width: 320px)">
    <link rel="stylesheet" href="style640.css" media="screen and (min-width: 640px)">

less

css的弊端:非程序式语言,没有变量、函数、SCOPE(作用域)等概念。

Less是一门CSS扩展语言,也成为CSS预处理器。

常见的CSS预处理器:Sass、Less、Stylus。

语法:

@变量名:值;

less编译:可以根据less文件,编译生成css文件,这样html才能使用。需要插件:Easy Less。

less嵌套:需要注意的是,伪类选择器,&:hover;

less运算:+、-、*、/。

跟运算相关的一些规则:

1.运算符左右两侧必须敲一个空格隔开;
2.两个数参与运算,如果只有一个数有单位,则最后的结果以这个单位为准;
3.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习CSS3是非常重要的,因为它是网页设计中不可或缺的一部分。CSS3是CSS的最新版本,引入了许多新的特性和功能,使得我们可以更加灵活地设计和样式化网页。 首先,学习CSS3可以帮助我们实现更多样化的网页设计。它提供了丰富的选择器和样式属性,可以创建出各种不同风格的页面布局和样式。比如,我们可以使用CSS3中的渐变背景、阴影效果和过渡动画等功能,使得网页更加生动、吸引人。 其次,学习CSS3还可以提高网页的响应式设计能力。CSS3引入了媒体查询功能,可以根据用户设备的不同来调整网页的样式和布局。这样,我们可以为不同的设备(如手机、平板电脑和桌面电脑)设计出最优的用户体验,提高网页的可用性和易用性。 此外,学习CSS3还可以提高网页的性能和加载速度。CSS3中引入了一些优化技术,如CSS精灵、动画效果硬件加速和过渡效果缓存等,可以减少浏览器对网页的解析时间,提升网页的加载速度和性能。 最后,学习CSS3有助于提升我们的职业竞争力。作为一门常用的前端技术,熟练掌握CSS3可以为我们在网页设计和开发领域到更多的就业机会。无论是企业招聘要求还是个人项目需求,对CSS3的掌握都是非常重要的。 综上所述,学习CSS3是非常必要的。不仅可以帮助我们实现更多样化的网页设计,提高网页的响应式设计能力,还可以提升网页的性能和加载速度,提升我们的职业竞争力。因此,我强烈建议大家将重点放在学习CSS3上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值