CSS:必须要掌握的重要基础知识点
1. 盒子
每个元素都是一个盒子,该盒子由内容、内边距、边框、外边距组成
盒子宽高的计算有两种方式,用box-sizing
属性来设置:
content-box
:这是标准的计算方式,盒子宽高仅仅由内容决定border-box
:盒子宽高由内容、内边距、边框一起决定,IE用的就是这种
2. 常用选择器
- 选择全部元素:
* {}
- 选择 h1 元素:
h1 {}
- 选择类名为 tag 的元素:
.tag {}
- 选择 id 为 title 的元素:
#title {}
- 选择 li 元素内所有的 a 元素:`li a {}
- 选择与 h1 元素处于同一个父元素内的 p 元素:
h1 ~ p {}
- 选择与 h1 元素处于同一个父元素内且在 h1 后面的 p 元素:
h1 + p {}
- 元素属性选择器(attribute selector):
- 选择具有 class 属性的 p 元素:
p[class] {}
- 选择 class 属性值为 dog 的 p 元素:
p[class="dog"] {}
- 选择具有 class 属性的 p 元素:
3. 优先级
同一个元素可以使用多个规则来指定它的某个样式属性(比如同一个CSS文件内可能会有两条规则来设置元素A的字体颜色),每条规则都有自己的选择器,显然最终只有一个规则会起作用(不可能字体颜色既是红色又是绿色)。
就以设置元素A的字体色为例,假如设置了两条规则,那么影响到底哪条规则起作用的因素有以下这些,请以单一变量原则理解每一个因素,即考虑某个因素时要假定其他因素都是一样的:
规则出现的顺序:越后面的CSS规则优先级越高
选择器的具体程度:越具体的优先级越高
*
<p
<h1~ p
<h1 + p
<h1 + p.my-class
<#intro
规则出现的位置:
!important
> 行内样式 > 不带!important
的外联样式 ><style>
元素内的样式
理解优先级的好处是可以使用先写全局样式,再通过具体样式覆盖全局样式的策略来实现简洁、清晰、整齐的样式表。
4. CSS继承
有些样式属性,如果你不给它设定一个值,它就会从父元素那里获得一个值,这样的属性就被称为继承属性(inherited property),比如font-size
、text-indent
等。你不用记住具体哪些属性是继承属性,因为浏览器会告诉你:
如果一个属性是继承属性,那么它必定有一个可选值是 inherit
。
可以强制一个属性去从父元素继承一个值(color: inherit
)
5. 伪元素(pseudo-element)和伪类(pseudo-class)
伪类和伪元素是用来给不在DOM上的内容添加样式的,伪元素用来在DOM上创建一个元素并添加样式,而伪类用来给处于某个状态的元素添加样式。
最常用的伪类和伪元素:
::first-letter
、::first-child
、::last-child
、::before
、::after
:link
、:visited
、:hover
、:active
、:focus
6. CSS:元素定位机制(positioning schemes)
CSS通过position
属性来设置元素的定位机制,默认值是static
正常流(normal flow):默认,行内元素一个接一个,块级元素一行接一行。
相对定位(relative):元素仍在正常流内,可以进行一定的偏移,不影响周围元素
h1 { position: relative; top: 20px; left: 36px; }
绝对定位(absolute):脱离正常流,相对于position值不为static的父元素或body元素进行偏移,任何一个元素进行了决对定位,就变成了块级元素。
固定定位(fixed):脱离正常流,相对于浏览器窗口进行偏移,页面滚动时该元素不动
浮动(float):脱离正常流,并总是定位在父元素的最左边或者最右边
一个元素如果脱离了正常流,那么它就有可能和别的元素重叠起来,此时需要使用CSS z-index
属性来调整哪个元素应该在上面。
7. 清除浮动
容器高度不固定且内部元素有浮动时,浮动元素跑出容器外、该容器高度变为0的现象称为浮动溢出,通过清除浮动可以解决该问题:
方法一:在浮动元素后面放置一个设置了clear的空元素——
<div style="clear: both;"></div>
方法二:如果浮动元素后面有未浮动的元素,为其设置
clear: both;
也一样。方法三:给容器设置伪元素
::after
,从而在内部末尾生成一个看不见的元素,然后再设置clear: both;
//假设容器有类名为:clearfix .clearfix::after { clear: both; }
方法四:给容器设置overflow——
overflow: auto
8. BFC
BFC是每个元素都可以具有的一个特性,一个元素一旦被触发BFC,那么它将仍在正常流但是具有了普通盒子不具备的一些特点,它已经变成了一个独立的区块,不受外面元素的影响。
以下元素具有BFC特性(如何触发BFC):
<body
元素- float值不为none的元素
- position值为absolute或fixed的元素
- display值为inline-block、table-cells、flex的元素
- overflow值为hidden、auto、scroll的元素
BFC的应用:
清除浮动的第四种方法(利用了BFC可以包裹浮动元素的特性)
实现两列自适应布局,(利用了BFC可以防止浮动元素覆盖其他元素的特性):
左侧固定宽度且浮动,右侧宽度自适应、不浮动、设置overflow以触发BFC
9. 单行文字溢出用省略号表示
p {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
10. 多行文字溢出用省略号表示
.summary p {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
11. 盒子水平居中
方法1:margin法
/* 块级、定宽、左右外边距为auto,这三个缺一不可 */ .box { display: block; width: 100px; margin: 0 auto; }
方法2:定位法
/* 绝对定位、定宽、定位50%,往回偏移盒子宽度的一半,这三个缺一不可 */ .box { position: absolute; width: 100px; left: 50%; margin-left: -50px; }
方法3:不定宽定位法
.box { position: absolute; left: 50%; transform: translate(-50%, 0) }
方法4:flex布局(见后文)
12. 盒子垂直居中
方法1:定位法,思路、要求都和水平居中的定位法一样
方法2:不定宽定位法
.box { position: absolute; top: 50%; transform: translate(0, -50%); }
方法3:flex布局(见后卫)
13. 盒子变换:transform
transform属性可以对元素进行旋转(rotate)、缩放(scale)、平移(translate)、扭曲(skew)等操作,这些操作可以同时进行,之间用空格隔开,比如:
transform: translate(20px, 0) rotate(30deg)
- 旋转:
transform: rotate(30deg)
- 缩放:
transform: scale(2, 3)
,X方向放大2倍,Y方向放大3倍 - 平移:
transform: translate(20px, 50px)
,X方向移动20px,Y方向移动50px - 扭曲:
transform: skew(30deg, -30deg)
,X方向扭曲30度,Y方向扭曲负30度
14. 让变化飞一会儿:过渡(transition)
人们通常会在元素上出现鼠标hover等事件时对样式进行修改,比如,在hover时修改元素宽度:
.box {
width: 50px;
}
.box:hover {
width: 100px;
}
但是这样的变化太生硬了,可以通过将width属性设置为过渡属性,来让变化的过程肉眼可见:
.box {
width: 50px;
transition: width 500ms linear;
}
.box:hover {
width: 100px;
}
过渡可以让某个属性的变化看起来更平滑,通常人们会对尺寸、颜色、透明度、位置、角度等进行过渡。
语法:transition: [属性] [时间] [速度曲线]
可选速度曲线:linear、ease、ease-in、ease-out、ease-in-out
15. 弹性布局:flex
flex布局由 flex-container
和 flex-item
两部分组成。一个盒子的display属性一旦被设置为flex
或inline-flex
,它就变成了一个flex container,它的内部元素就自动变成了flex item。要完成弹性布局就得分别对这两部分进行属性设置。
学习的最佳方式就是做一个父元素包着子元素的例子,照着文档实际尝试一番,不用记住每一条,当然也记不住,除非敲的够多了。
下面列一些基本属性:
flex-container的设置
flex-directon
:指定flex-item应该如何排列,有横竖(row、column)两个方向,这两个方向也称为main-axis
。可选值:
row
、row-reverse
、column
、column-reverse
flex-wrap
:当flex-container的宽度不足时,指定flex-item应不应该换行显示,可选值:no-wrap
:此时flex-item会尽量调窄宽度wrap
:flex-item不会调窄宽度,而是换行显示(这里的“行”和flex-direction有关)wrap-reverse
:先换行,再颠倒
flex-flow
:flex-direction和flex-wrap的简写:flex-flow: row wrap;
justify-content
:调整flex-item的对齐方式以及剩余空间的分配方式,常用值:center
、flex-start
、flex-end
、space-around
、space-between
、space-evenly
align-items
:当flex-item都在一行时,该属性决定它们在竖直方向如何对齐align-content
:当flex-item不止一行且竖直方向有剩余空间时,该属性可以调整flex-item和剩余空间的分配方式
flex-item的设置
order
:每个flex-item都有一个默认的排序值:0,如果单独修改某个flex-item的order值,那么它的出现顺序就会发生变化flex-grow
:值为数字,默认为0。当一行中还有剩余空间时,设置了该属性就会让flex-item的尺寸放大一定比例。flex-shrink
:值为数字,默认为0。当一行中空间不足时,设置该属性就会让flex-item的尺寸缩小一定比例。align-self
:该属性允许某个flex-item设置与其他flex-item不一样的对齐方式。
16. 设置滚动条样式
/* 设置滚动条的样式 */
::-webkit-scrollbar {
width:5px;
background-color: white;
}
/* 滚动槽 */
::-webkit-scrollbar-track {
border-radius:10px;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius:10px;
background: #096dd9;
}
CSS:必须要掌握的重要基础知识点的更多相关文章
- CSS 基础知识点 样式 选择器 伪类
CSS 基础知识点汇集 版权声明:这篇博客是别人写的,大神博客地址 : https://www.cnblogs.com/Mtime/p/5184685.html 1.CSS 简介 CSS 指层叠样式表 ...
- HTML&&CSS基础知识点整理
HTML&&CSS基础知识点整理 一.WEB标准:一系列标准的集合 1. 结构(Structure):html 语言:XHTML[可扩展超文本标识语言]和XML[可扩展标记语言] 2. ...
- .NET基础知识点
.NET基础知识点 l .Net平台 .Net FrameWork框架 l .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转 l 两种交 ...
- TypeScript 基础知识点整理
一.TypeScript的特点 1.支持ES6规范 2.强大的IDE支持(集成开发环境) 允许为变量指定类型,减少你在开发阶段犯错误的几率. 语法提示,在IDE编写代码时,它会根据你所处的上下文把你能 ...
- 小程序基础知识点讲解-WXML + WXSS + JS,生命周期
小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...
- jQuery基础知识点(下)
在实际开发中,jQuery的实践性非常强大.上一篇本人已经整理出了一部分基础知识点,该文即是对以上的补充和扩展. 1.表单值的操作 //获取文本框的值 //txt.value var val = $( ...
- .NET 基础 一步步 一幕幕 [.NET基础知识点]
.NET基础知识点 l .Net平台 .Net FrameWork框架 l .Net FrameWork框架提供了一个稳定的运行环境,:来保障我们.Net平台正常的运转 l 两种交 ...
- 8.1 HTML基础知识点
8.1 HTML基础知识点 一.HTML是什么? Hyper Text Markup Language 超文本标记语言 的缩写 开发一个html文件,可以有很多方式 :比如Dreamweaver,HB ...
- Python爬虫入门有哪些基础知识点
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...
- fastclick 源码注解及一些基础知识点
在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...
随机推荐
- linq深入
一.匿名类:[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思,我匿了 在开发中,我们有时会像下面的代码一样声明一个匿名类:可以看出,在匿名类的语法中并没有为其命名,而是直接的一个ne ...
- PHP反序列化漏洞总结(二)
写在前边 之前介绍了什么是序列化和反序列化,顺便演示了一个简单的反序列化漏洞,现在结合实战,开始填坑 前篇:https://www.cnblogs.com/Lee-404/p/12771032.htm ...
- windows下部署.netcore+docker系列四 (部署程序,重点就要来了)
前面的都是为这章做准备,加油把骚年们 PS:C# 项目可以按照流程一步步来,java 偶然其他的可以找下其他的网上资源 1.在 VS2019中 添加docker 支持 (其实也就是追加一个Docker ...
- 随笔之——伪类选择器:nth-child(n) 与 nth-of-type(n)的区别!!!
话不多说!直接正题!!! 一.E:nth-child(n)///选中父元素中第(n)个元素.若第n个元素为E则选中:若第n个不为E则不选中.n可以为2n(偶数).2n+1(奇数).等... 二.E:n ...
- ES6的 Iterator 遍历器到底是什么?
这节课要讲的是ES6中的Iterator. for...of为啥不遍历Object对象 第十三节我们讲了简单又实用的for...of,我们可以使用它来遍历数组,字符串,Set和Map结构,但是有没有发 ...
- Hbase详细架构图解
@ 目录 主要组件 数据模型 注意:Hbase是依赖zookeeper和hdfs的,需要启动zk和hdfs. 主要组件 Zookeeper: HBase 通过 Zookeeper 来做 Master ...
- MySQL 入门(1):查询和更新的内部实现
摘要 在MySQL中,简单的CURD是很容易上手的. 但是,理解CURD的背后发生了什么,却是一件特别困难的事情. 在这一篇的内容中,我将简单介绍一下MySQL的架构是什么样的,分别有什么样的功能.然 ...
- vue2.x学习笔记(三十二)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12684060.html. 深入响应式原理 vue最独特的特性之一,是其非侵入式(耦合度低)的响应式系统:数据模型仅 ...
- 我的Android进阶之旅------> Android为TextView组件中显示的文本加入背景色
通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...
- Codeforces Round #618 (Div. 2)-B. Assigning to Classes
Reminder: the median of the array [a1,a2,-,a2k+1] of odd number of elements is defined as follows: l ...