css简单入门
CSS基础
简介
css:层叠样式表
可以在html中内嵌CSS代码实现格式
- 首先不建议这么做,更优方法是前后端分离
- 利用标签
<style></style>
,在标签的范围内书写CSS代码 - style标签放在head标签里面
将html与CSS分离
CSS文件同样是如上面的
<style></style>
标签中的内容- 但是在单独的文件中无需再次使用style标签
将其单独写进一个
.css
文件中然后需要将其链接到html文件中来
- 在html文件中
head
标签中引入
- 在html文件中
1
2<link rel="stylesheet" href="./koncss.css">、
<link rel="stylesheet" href="需要引入的css文件的位置">- 此时在浏览器中可以点击看到css文件
- 建议使用html和css分离的方式
css中的注释是使用
/*注释*/
CSS的优势:
- 内容和表现分离
- 网页结构表现统一,可以实现复用
- 样式十分丰富
- 建议使用独立于html的css文件
- 利于SEO,容易被搜索引擎收录
导入方式
内部样式表:css代码嵌套在html中
外部样式表:css与html分离
行内样式:在html的标签中利用style
1 |
|
多种样式生效规则:覆盖原则,外部样式表的按照link引入的位置顺序
- 从上到下按顺序执行,每次执行覆盖执行效果
扩展:外部样式的两种写法
链接式:link
导入式:(CSS2.1)
1 |
|
- 弊端:顺序是先展示结构,在渲染效果。在网络卡顿或者网站庞大的时候这种先后效果会更加明显
- 不推荐,还是建议使用链接式link
三种基本选择器
选择器的作用是选择页面上的某一个或者某一类元素。
基本选择器:
标签选择器
- 会选择到页面中所有的相应标签
- 选择器格式为
标签名(如h1)
- 选择器格式为
- 选择所有有时候也是弊端
- 会选择到页面中所有的相应标签
类选择器(class)
首先在标签中可以添加class属性,class属性可以任意命名(应该有意义)
然后通过class来选择
- 选择器格式为
.类名(.class)
- 选择器格式为
1
2
3
4
5<h1 class="ctitle">xxx</h1>
.ctitle
{
color:red;
}- 可以多个标签归类
id选择器
- 与类选择器类似,需要在标签中定义id,id也可以任意命名,然后通过id来选择
- 选择器格式为
#id
- 选择器格式为
- id必须保证全局唯一(是规范)
- 如果有相同的id,还是能够使用
- 与类选择器类似,需要在标签中定义id,id也可以任意命名,然后通过id来选择
优先级:id选择器>class选择器>标签选择器
- 多个选择器共用一个格式,就让选择器之间使用逗号
,
隔开
这些是最基本的选择器,还有更加高级的选择器。
id选择器选择到的是唯一确定的一个元素。
类选择器和标签选择器返回的是元素的列表。如果只有一个元素也将会组织成列表的形式。
层次选择器
网页的结构是天然的一种树形结构。层次选择器适应这种树形结构。
后代选择器
在某个元素的后面的所有元素(树形结构的后代关系)
使用方法:当前标签 后代标签(中间有一个空格)
eg:
body p{color:#xxxxxx}
子选择器
- 在某个元素的后一代元素
- 使用方法:当前标签>后代标签
相邻兄弟选择器(弟弟选择器,对下不对上,且只有一个)
- 这需要选中许多标签中的一个元素,应该会使用到类选择器
- 使用方法:当前元素+后代元素
通用选择器
- 通用兄弟选择器,同样是对下不对上,但是选择所有(所有弟弟选择器)
- 使用方法:当前元素~后代元素
结构伪类选择器
选择器选择到了某类元素之后,再加条件进行限定(增加条件来进行更加精准地定位)
1 |
|
当前元素:first-child
:当前元素的第一个子元素当前元素:last-child
:当前元素的最后一个子元素当前元素:nth-child(x)
:找到当前元素的父级元素,再找到父级元素的第x个子元素(无视标签类型),如果这个第x个子元素是与当前元素同标签,就选中生效。否则不生效。当前元素:nth-of-type(x)
:选择父元素中第二个类型与当前元素相同的子元素。(与上相似,找子元素的时候考虑标签类型)
理解伪类:增加的条件限定(比如找到第几个元素,或者在某些情况下生效,像鼠标悬停,选中之类的)
属性选择
功能更加强大,可以使用正则表达式进行匹配操作。
选择器格式:属性[条件表达式]{声明}
- 条件表达式中,可以使用正则表达式
- 举例说明:
[attr="val"]
:选择attr属性等于val的元素[attr]
:选择拥有attr属性的元素[attr~="val"]
:选择attr属性包含val(单词)的元素[attr$="val"]
:选择attr属性以val结尾的元素[attr^="val"]
:选择attr属性以val开头的元素[attr*="val"]
:选择attr属性任意位置包含val(字符)的元素[attr|="val"]
:选择attr属性的值开头为val(单词)或为val-(单词)的元素[attr*="val" I(或者i)]
:表示val不区分大小写(i 正则)- ...
盒子模型及边框使用
盒子模型:就是一个类似于盒子的东西
- margin:外边距
- padding:内边距
- border:边框
很多元素有默认盒子的边距,例如body,h等等
- 可以利用一系列初始化动作将其还原
1 |
|
- 盒子模型的参数可以直接指定,也可以分开上下左右来指定(上右下左)
- 边框:border
- border:粗细,边框样式,颜色
- 外边距:margin
- 外边距妙用:实现元素居中
margin:0 auto
- 居中有要求,外元素是一个有宽度的盒子
- 外边距妙用:实现元素居中
- 内边距:padding
- 盒子元素:来确定整个元素的大小
- margin+border+padding+内容宽度
display和浮动
- 块级元素:独占一行
h1~h6 p div 列表...
- 行内元素:不独占一行
span a img strong ...
行内元素可以包含在块级元素中,但是反之不可以。
- display:有很多属性,可以修改元素的块级元素或者行内元素等,可以打破上面的规则
- 重要属性值:
- block:块元素
- inline:行内元素
- inline-block:即使块元素又是行内元素(是块元素,但是可以写在一行)
- none:消失(但是在源码中是有的)
- 是一种简单的行内元素的排列方式,但是在很多情况下使用的是float
- 重要属性值:
浮动:元素浮动效果
float
- 浮动的时候会边框塌陷,改变页面大小会造成排版失败等
overflow及父级边框塌陷问题
clear
:对浮动的效果加以一些限制- right:清除右侧浮动(右侧不允许有浮动元素)
- left:清除左侧浮动
- both:两侧均不允许浮动
- none:不clear
父级边框塌陷问题解决:
- 增加父级元素的高度
1 |
|
- 在漂浮块后面增加一个空的div标签并清除浮动
1 |
|
overflow:可以完成的效果是,在块元素设定了宽高的时候,内容如何显示的问题
- 在默认情况下,会展现出所有内容,且内容可以超出边框
- 使用overflow:
- hidden:隐藏超出部分
- scroll:形成滚动条的形式
在父类中添加一个伪类:after
1 |
|
- 与增加空div标签的原理类似,只不过不用在html代码中增加空div,可以直接利用伪类完成
小结:
- 设置父元素高度
- 简单,但是父元素有了固定的高度,会被限制
- 浮动元素后面增加空div
- 简单,但是代码中加入空的div不太好
- overflow
- 简单,但是在一些下拉,内容不能清除的地方不建议使用(因为丑)
- 在父类增加伪类
- 简单,推荐使用
对比
display:方向不可控
float:方向可控,但是会增加父级边框塌陷的问题
绝对定位和固定定位
绝对定位:基于xxx定位的情况,给定上下左右
不在标准文档流中,原来的位置不会被保留
在父级元素没有定位的情况下,相对于浏览器定位
- 这种情况一般会使用后面的fixed
如果父级元素有定位(即指定了position属性),相对于父级元素定位
- 更过情况是这个
postion:absolute
需要上下左右来确定元素如何偏移
- top bottom left right
固定定位:
直接定死,定死在画面中。也并非是相对于浏览器,而相对于屏幕画面(可以这样理解)
postion:fixed
需要上下左右来确定元素如何偏移
- top bottom left right
z-index以及透明度
类似于图层概念。
z-index
来指定层级(0最小,往上递增)
- 堆叠了才有图层的概念
透明操作:
- 直接指定透明:透明度
opacity
filter
实现:filter:alpha(透明度)
- 早期版本使用,历史了不建议使用