CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表,所以称之为层叠样式表(Cascading Stylesheet)简称CSS。在网页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
/**
表示所有元素的字体大小都为20px;*有匹配全部的意思
*/
/**
表示li标签下的元素的字体大小都为20px,
语法:标签名称{...}
*/
/**
表示input标签的type属性的值为text的元素的字体大小都为20px,颜色都是#FFFFFF
语法:标签名称[该标签的属性="属性值"]{...}
标签名称[该标签的属性*="字符串"]{...}:该标签的该属性的属性值中有该字符串,则适配样式
标签名称[该标签的属性~="单词"]{...}:该标签的该属性的属性值中有该单词,则适配样式
*/
类选择器根据类名来选择被修饰的元素,在定义类选择器时,必须以点开头,后面写类名,类名命名要注意,不允许是数字开头,不允许是标签名称。在使用类选择器时使用class引用类名。
语法:在标签里面定义class
属性并给值,这个就是类名,注意命名规范,在头部标签里面用
<html>
<head>
<meta charset="utf-8">
<title>类选择器练习title>
<style type="text/css">
.mydiv{
width=100px;
height=300px;
background-color=#777777
font-size=20px;
color=#FFFFFF
}
style>
head>
<body>
<div class="mydiv">
<p>
123,IT学习!
p>
div>
body>
html>
按理来说ID是标识元素的唯一标识符,但是html用了相同的ID标识也能正常运行,但是要注意ID是页面的唯一标识符,应该是整个页面的ID值都不应该相同的,所以说ID选择器应该具有唯一性,但是ID值相同的元素都会使用该ID定义的css样式。js在调用时,采取ID来互动,如果有多个ID属性值相同则取第一个ID。
语法: #ID值{...}
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
/* 通配选择器 */
*{
font-size: 20px;
font-style: initial;
}
/* 标签选择器 */
span{
font-weight: 100;
font-size: 15px;
color: brown;
}
/* 属性选择器 */
li[id=li3]{
font-size: 10px;
color: blue;
}
/* class类选择器 */
.mydiv1{
width: 120px;
height: 800px;
background-color: aliceblue;
float: left;
}
/* ID选择器 */
#div2{
width: 800px;
height: 800px;
background-color: aquamarine;
margin-left: 130px;
overflow: auto;
}
style>
<title>选择器练习1title>
head>
<body>
<div align="left" id="div1" class="mydiv1">
<span><strong>导航条strong>span>
<hr />
<ul>
<li id="li1"><a href="../index.html" target="main1">导航1a>li>
<li class="myli2">导航2li>
<li id="li3">导航3li>
ul>
div>
<div id="div2">
<h3 align="left"><span>主页面span>h3>
<br />
这是一个框架,这是一个框架,这是一个框架,这是一个框架,这是一个框架,这是一个框架
<iframe frameborder="0" noresize="yes" scrolling="auto" src="main.html" name="main1">
iframe>
div>
body>
html>
1.首先下面一组一般经常一起使用,来控制链接的变化【注 :按顺序来写 才能正确控制链接】:
:link
未访问链接的状态
:visited
已经访问过链接的状态
:hover
鼠标悬浮在上面时的状态
:active
激活选定(点击链接不松开鼠标时的状态)
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>伪类选择器title>
<style type="text/css">
a:link{
color: #777777;
text-decoration: none;
}
a:visited{
color: blanchedalmond;
}
a:hover{
color: coral;
text-decoration: underline;
}
a:active{
color: aqua;
}
style>
head>
<body>
<a href="css1.html"> baidu一下,更精彩!a><br />
<a href="http://www.baidu.com"> 更精彩!a>
body>
html>
2.其它的伪类:【说明:上面的伪类只有在操作链接时一般都需要放到一起按顺序来写,单独一个也可以用在别的地方】
:focus
聚焦时的变化
:checked
被选中时的变化
:disabled
不可用时的变化
:first-child
父类的第一个子元素
:last-child
最后一个子元素
:nth-child(odd)
控制奇数的状态 经常用于控制 li
标签的状态
:nth-child(even)
偶数
:nth-child(an+b)
表达式 a与b的值可以给定,可以控制,也可以直接用n来指定是第几个标签的值
:nth-of-type(n)
表示某个标签的第几个
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>伪类选择器实现导航效果title>
<link rel="stylesheet" href="../css/nav1.css" type="text/css" />
head>
<body>
<div class="nav">
导航条
<div class="nav_child">
<ul id="ul">
<li><a href="www.baidu.com">主页面a>li>
<li>查看li>
<li>编辑li>
<li>退出li>
ul>
div>
div>
body>
html>
@charset "utf-8";
.nav {
width: 100px;
height: 50px;
background-color: aliceblue;
color: #777777;
line-height: 50px;
text-align: center;
cursor: pointer;
}
.nav_child {
display: none;
width: 300px;
height: 300px;
background: #FEFEFE;
overflow: auto;
}
.nav:hover .nav_child {
display: block;
border: 1px;
}
#ul {
font-size: 0px;
color: #0000FF;
}
li {
font-size: 10px;
float: auto;
}
a:link {
color: #7E7E7E;
text-decoration: none;
}
a:visited {
color: #00FFFF;
}
a:hover {
color: #FF7F50;
text-decoration: underline;
}
a:active {
color: #F0F8FF;
}
注:最后两个伪类选择器的区别
nth-child(n)
的n从div下面的第一个元素开始数,不管是不是你所选的元素,是则会应用样式,不是则不应用,nth-of-type
则是从你所选的元素类型开始数,不包括别的类型的元素。
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#div1{
width: 400px;
height: 200px;
margin: 0 auto;
}
p:nth-child(3){
color: red;
}
p:nth-of-type(3){
color: #0000FF;
}
style>
head>
<body>
<div id="div1">
<p>这是第一个段落标签pp>
<div><p>2222这是div标签下面的div标签下面的p标签p> div>
<p>这是第二个段落标签pp>
<div><p>4444这是div标签下面的div标签下面的p标签p> div>
<p>这是第三个p标签,父元素下面的第5个块元素p>
div>
body>
html>
选择器组,统一控制,一起来设置样式并应用。把所有选择器所选元素全部应用该样式。
e.g:.div1,table,ul,#li1{...}
后代选择器也称为包含选择器,用来选择特定元素或元素组的后代,将 对 父元素的选择放在前面,对子元素的选择放在后面,中间用空格分开。对于多层祖先后代关系,可以有多个空格加以分开。
e.g:.div1 p span{...}
:class属性为div1的元素下面的p元素下面的span元素应用该样式
亲子选择器仅是指它的直接后代,通过">"进行选择。
e.g:.div1>p
选择class选择器 .div1
下面的子元素p来应用样式
1.紧邻兄弟选择器(h1+p):选择h1标签紧邻着后面的p标签应用样式,h1与p标签的父元素相同,若不存在则没效果。
2.不紧邻xd选择器(h1~p):选择h1标签后面的p标签应用样式,h1与p标签父元素相同,但不用h1标签下面就是p标签。
ul.div1{...}
表示这两个选择器都在的元素应用这个样式。
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
div{
width: 400px;
height: 200px;
margin: 0 auto;
margin-bottom: 20px;
}
/*p:nth-child(3){
color: red;
}
p:nth-of-type(3){
color: #0000FF;
}*/
.div3.div2{
font-size: 15px;
color: red;
}
style>
head>
<body>
<div id="div1">
<p>这是第一个段落标签pp>
<div class="div2 div3">
<p>2222这是div标签下面的div标签下面的p标签p>
div>
<p>这是第二个段落标签pp>
<br />
<div class="div3 div2">
<p>4444这是div标签下面的div标签下面的p标签p>
<span>我是div3下面的独立span标签span>
div>
<p>这是第三个p标签,父元素下面的第5个块元素p>
div>
body>
html>
浏览器是根据优先级来决定当多个规则有不同选择器对应相同的元素的时 候需要使⽤哪个规则。 它基本上是⼀个衡量选择器具体选择哪些区域的尺度:
⼀个元素选择器不是很具体 — 会选择⻚⾯上该类型的所有元素 — 所以 它的优先级就会低⼀些。
⼀个类选择器稍微具体点 — 它会选择该⻚⾯中有特定 class 属性值的 元素 — 所以它的优先级就要⾼⼀点。
总结:作用范围越大,优先级越高。
一个选择器的优先级可以说是由四个部分相加 (分量),可以认为是个 十百千 — 四位数的四个位数:
千位: 如果声明在 style
的属性(内联样式)则该位得一分。这样的声明没有选择器,所以它得分总是1000。
百位: 选择器中包含ID选择器则该位得一分。
十位: 选择器中包含类选择器、属性选择器或者伪类则该位得一分。
个位:选择器中包含元素、伪元素选择器则该位得一分。
注*: 通用选择器 (*
),组合符 (+
, >
, ~
, ’ '),和否定伪类 (:not
) 不会影响优先级。**
警告: 在进行计算时不允许进行进位,例如,20 个类选择器仅仅意味着 20 个十位,而不能视为 两个百位,也就是说,无论多少个类选择器的权重叠加,都不会超过一个 ID 选择器。
通⽤选择器 ( * ) 、继承 ( 0 , 0 , 0 , 0 )
类型选择器 、伪元素 ( 0 , 0 , 0 , 1 )
class选择器、属性选择器、伪类 ( 0 , 0 , 1 , 0 )
ID选择器 ( 0 , 1 , 0 , 0 )
内联样式 ( style="…" ) ( 1 , 0 , 0 , 0 )
!important ⽆穷⼤
举例一
div > ul li.even {
}
其中:
div
属于 Type Selector
,优先级为 [ 0 , 0 , 0 , 1 ]ul
属于 Type Selector
,优先级为 [ 0 , 0 , 0 , 1 ]li
属于 Type Selector
,优先级为 [ 0 , 0 , 0 , 1 ].even
属于 Class Selector
,优先级为 [ 0 , 0 , 1 , 0 ]>
不影响优先级所以最后求和为 [ 0 , 0 , 1 , 3 ]
.first > div .even {
}
其中:
.first
属于 Class Selector
,优先级为 [ 0 , 0 , 1 , 0 ]div
属于 Type Selector
,优先级为 [ 0 , 0 , 0 , 1 ].even
属于 Class Selector
,优先级为 [ 0 , 0 , 1 , 0 ]>
不影响优先级
(空格) 不影响优先级所以最后求和为 [ 0 , 0 , 2 , 1 ]
e.g:`li > a[href*="en-US"] > .inline-warning`
(标签选择器:个位1,类选择器:十位1,应该是0011)
以下选择器对优先级没有影响:
通配选择符 (universal selector) ( *
)
https://developer.mozilla.org/zh-CN/docs/Web/CSS/Universal_selectors
关系选择符(combinators)
紧邻兄弟选择器 ( +
)
亲子选择器 ( >
)
普通兄弟选择器 ( ~
)
后代选择器 ( (空格) )
列组合器 ( ||
)
否定伪类 (negation pseudo-class ) ( :not()
)
:not()
内部声明的选择器会影响优先级li > a[href*="en-US"] > .inline-warning
(标签选择器:个位1,类选择器:十位1,应该是0011)
disaplay
:属性 | 作用 | 块行标签 |
---|---|---|
none | 不会显示,不会留出空间(文档书中存在) | |
block | 显示,可控制高度和宽度,自动换行 | 块标签,可以控制宽度与高度,会自动换行 |
inline | 显示在同一行,没有高和宽,由内容撑出来 | 内联元素(行内标签) |
inline-block | 显示在同一行,可控制高度和宽度,类似于行内块元素,有自己的高和宽,可设置 | 如果在代码编写时换行会留下一个空格的间隙,代码放在同一行就不会了 |
visibility
:属性 | 作用 |
---|---|
visible | 默认显示 |
hidden | 隐藏起来,但位置会留出来 |
collapse | 合起来 |
值 | 描述 |
---|---|
font-style | 规定字体样式。参阅:font-style 中可能的值。italic(斜体) |
font-variant | 规定字体异体。参阅:font-variant 中可能的值。 |
font-weight | 规定字体粗细。参阅:font-weight 中可能的值。bold(加粗) |
font-size/line-height | 规定字体尺寸和行高。参阅:font-size 和 line-height 中可能的值。 |
font-family | 规定字体系列。参阅:font-family 中可能的值。 |
font
:综合属性,按顺序 字体样式、字体异体、字体粗细、字体尺寸/行高、字体系列。
定义小型大写字母文本:font-variant:small-caps;
参数说明:
值 | 描述 |
---|---|
normal | 默认值。浏览器会显示一个标准的字体。 |
small-caps | 浏览器会显示小型大写字母的字体。 |
inherit | 规定应该从父元素继承 font-variant 属性的值。 |
**说明:**一般line-height
会设置为 1.5em
,表示是字体大小(font-size
)的1.5倍。
em:相对的,父属性的多少倍 一般文本行高和缩进都可以用这个单位
rem:根的多少倍,也是相对的
属性 | 作用 |
---|---|
text-align | 设置文字水平对齐方式,值可以是left、center、right、 |
vertical-align | 纵向对齐方式,top、middle、bottom、 |
text-indent | 文本块中首行文本的缩进(可以使用负值) |
text-decoration | 文本下划线、上划线、删除线、没有线等(underline、overline、lline-through、none) |
color | 设置字体颜色 |
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>显示,字体,文本,尺寸title>
<style type="text/css">
html{
font-size: 15px;
}
.div1{
max-width: 1300px;
min-width: 500px;
max-height: 800px;
min-height: 300px;
background-color: #00FFFF;
}
.div2{
/* display属性说明:none(不显示,不留空间),block(块元素,自动换行),inline(行标签,内联元素,不换行,没有高宽,容器的话由内容撑开),inline-block(行内的块元素,有属于自己的高和宽) */
/* visibility:visible(默认,可见),hidden(隐藏,留出空间),collapse(合起来)等 */
display: inline;
color: #777777;
vertical-align: bottom;
}
.div3{
display: inline-block;
width: 300px;
height: 390px;
color: #7E7E7E;
vertical-align: top;
}
.p1{
font-size: 20px;
line-height: auto;
text-align: center;
vertical-align: auto;
text-indent: 2em;
}
.span1{
font-style: italic;
font-weight: blod;
/* text-decoration属性参数:underline(下划线),line-through(删除线),overline(上划线),none(空) */
text-decoration: underline;
/* em单位:...相对倍数... rem:根的几倍... text-indent(首行缩进) */
}
style>
head>
<body>
<div class="div1">
<p class="p1"> 数据库管理系统。它对数据库进行<span class="p1 span1">统一的管理和控制span>,以保证数据库的安全性和完整性。据库应用系统。面向数据管理和数据处理的复杂软件系统。由数据库系统、应用程序系统、用户组成的,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。p>
div>
<div class="div2">
<img src="../image/attributeSeleter.png" />
div>
<div class="div3"> <p class="p1">据库应用系统。面向数据管理和数据处理的复杂软件系统。由数据库系统、应用程序系统、用户组成的,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。p> div>
body>
html>
网页是从左上角为基准位置,相当于第四象限,不过y轴向上是负,向下是正,x轴右为正。
1.px:像素,是固定大小的单元,用于屏幕媒体(即在电脑屏幕上读取)。一个像素等于电脑屏幕上的一个点 (是你屏幕分辨率的最小分割)。
2.%:百分比是一个相对长度单位,相对于包含块(containing block)的高宽或字体大小。(比较抽象,后面会有具体的解释)
关于包含块(containing block)的概念,不能简单地理解成是父元素。
如果是静态定位和相对定位,包含块一般就是其父元素。
如果是绝对定位的元素,包含块应该是离它最近的 position为非static属性的祖先元素。
如果是固定定位的元素,它的包含块是视口(viewport)。
如果某个元素设置了百分比的属性,则后代元素继承的是计算后的值。例如:
p { font-size: 10px;line-height: 120%; }
/*
那么p的子元素继承到的值是 line-height: 12px,而不是 line-height: 120%。
*/
3.em是相对字体长度单位。如果用于font-size属性本身,则是相对于父元素的font-size。若用于其他属性(width,height),则是相对于本身元素的font-size。国外使用比较多;
em单位有如下特点:
em的值并不是固定的;
em会继承父级元素的字体大小。
浏览器的默认字体大小都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
4.rem:em是继承父元素的字体大小,可是当父元素字体大小改变时,又得重新计算了,这不怎么方便,还好rem解决了这个问题。相对根元素即html元素字体大小。所以我们只要在html标签上设置字体大小为标准,文档中的字体大小都会以此为参照。
html{font-size:62.5%; }
body{font-size:12px;font-size:1.2rem ;}
p{font-size:14px;font-size:1.4rem;}
注:font缩写和伪元素不支持rem单位
属性 | 作用 |
---|---|
width | 设置块元素的宽度 (10px,n%,n em【父元素的多少倍】) |
height | 设置块元素的高度 |
line-height | 行高,与height相同时,垂直居中 |
padding | 内填充值 |
margin | 外填充值 两个容器的外填充值相接处的位置取大的一个的 |
border | 边框宽度 |
属性 | 作用 | 参数值 |
---|---|---|
background-color | 设置背景色 | 颜色(16进制【e.g:#FFFFFF】、rgb(三个参数)、英文单词)同时设置背景图和背景色,图会遮住背景色 |
background-image | 设置背景图片 | url(地址) e.g:background-image:url(image/cat.jpg); |
background | 设置背景特性的综合信息 | |
background-repeat | 设置背景图片是否重复 | no-repeat(不重复),repeat-x(横向重复),repeat-y(纵向重复),repeat(默认重复) |
background-position | 设置背景图像的起始位置 | 默认在左上角,向上和向左都是负值来操作的。e.g: background-position:-40px -50px; |
background-size | 设置背景图像的高度和宽度 | contain:宽度和高度完全适应,铺满,会变形,会失比;cover:按等比最小铺满容器,不变形,会溢出;percentage:元素的百分比来设置bj图像的宽度和高度,只设置一个值,第二个会auto自动,一般都写为:e.g:background-size:100% 100%; ;length:数值设置高度和宽度。 |
background-attachment | 背景图像是否固定或随页面的其余部分滚动 | fixed(滚动页面其余部分,背景不会动),scroll(默认值,随着页面的滚动而滚动)local(图与文字一起,字动图动) |
background-clip | 绘制背景图的区域 | 默认bj图会占一些border的位置,padding-box(默认的,从padding处开始占一点border(右上角));content-box(内容区域绘制),border-box(在border处开始,占用完border(右上角)) |
颜色的说明:1.十六进制以 # 开头,六位数字或者字母组合,六个一样可以只写三个
2.rgb:e.g:rgb(255,0,0)是红色,三个参数,最大值只能是255
3.rgba():可以做透明度,e.g:rgba(a,b,c,d),d控制透明度,取值是(0~1),a、b、c都是[0-255]
4.渐变色:linear-gradient
取值有三种:(颜色1,颜色2);(角度deg,颜色1,颜色2);(角度deg,颜色1,颜色2,百分之多少位置开始变后面的颜色,颜色3)
说明:img标签插入的图片不能在图片上操作,背景图是可以的
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>背景练习title>
<style type="text/css">
div{
width: 70px;
height: 70px;
background-color: #7E7E7E;
}
li{
padding: 10px;
list-style: none;
float: left;
}
.div1{
background-image: url(../image/icon.jpg);
background-repeat: no-repeat;
background-position: -28px -55px;
}
.div_li1{
background-image: url(../image/icon.jpg);
background-repeat: no-repeat;
background-position: -135px -170px;
}
style>
head>
<body>
<div class="div1">div>
<hr />
<ul>
<li> <div class="div_li1">div> li>
<li> <div class="div_li2">div> li>
<li> <div class="div_li3">div> li>
ul>
<hr />
<img src="../image/icon.jpg" />
body>
html>
list-style
的属性:属性值 | 方式 |
---|---|
none | 没有风格 |
disc | 实心圆 |
circle | 空心圆 |
square | 实心正方形 |
1.用图片做标记项:list-style-image:url(~);
2.标记项的位置:list-style-position:none | inside | outside
(没有标记 、标记项在块里面、标记项在块外面)
3.标记项的样式:除了上面表格所列,也可以控制成有序ol的标记样式
属性值 | 标记样式 |
---|---|
decimal | 数字1,2,3… |
lower、upper-alpha | 小写和大写字母 |
lower、upper-roman | 小写和大写罗马数字 |
复合写法 :list-type:type position image;
1.ul做导航,li水平需要浮动,一般需要两个ul,左上角一个导航,右上角一个导航
2.控制ul第一个向左浮动,第二个向右浮动,
3.控制第一个ul的li左浮动,第二个ul的li左浮动(如果只设置第二个ul的li右浮动,则li是反向的)
使用css+li实现常见的单导航效果
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>css+li实现简单导航title>
<style type="text/css">
li{
float: left;
list-style: none;
margin-right: 5px;
width: 100px;
height: 50px;
font-size: 20px;
font-family: "微软雅黑";
text-align: center;
line-height: 50px;
background-color: #7FFFD4;
}
li a:link{
display: block;
text-decoration: none;
color: #000000;
}
li a:visited{
color: #0000FF;
}
li a:hover{
color: #DC143C;
}
li a:active{
color: #777777;
}
style>
head>
<body>
<div id="nav">
<ul>
<li><a href="javascript:void(0)">公司简介a>li>
<li><a href="javascript:void(0)">技术支持a>li>
<li><a href="javascript:void(0)">产品介绍a>li>
ul>
div>
body>
html>
说明:li是块级标签,用float
向左浮动,将li
变成水平的;用list-style=none;
来去除前面的圆点。文本水平居中 text-align: center;
,垂直居中 line-height: 50px;
【将这个属性和height
设一样】。正常的链接操作。
使用css+两个ul实现双导航,注意浮动的写法:
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
.nav{
width: 1140px;
height: 50px;
margin: 0 auto;
/*float: left;*/
margin-bottom: 50px;
}
ul{
width: 500px;
height: 50px;
list-style: none;
}
.nav_left{
float: left;
}
.nav_left li{
float: left;
list-style: inside;
background-color: #777777;
list-style-image: url(../image/baidu7.png);
padding: 10px;
}
.nav_right{
float: right;
}
.nav_right li{
float: left;
}
style>
head>
<body>
<div class="nav">
<ul class="nav_left">
<li>标题1li>
<li>标题2li>
<li>标题3li>
<li>标题4li>
ul>
<ul class="nav_right">
<li>标题1li>
<li>标2li>
<li>标题li>
<li>标题li>
ul>
div>
body>
html>
伪类选择器 `` 还可以控制不同的li的样式
css引入伪类和伪元素概念是为了格式化文档树以外的信息。
伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。虽然它和普通的css类相似,可以为已有的元素添加样式,但是它只有处于dom树无法描述的状态下才能为元素添加样式,所以将其称为伪类。
伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。
伪元素 | 作用 |
---|---|
::first-letter |
指定元素的第一个单词或字符做样式 |
::first-line |
指定元素的第一行作样式 |
::after |
指定元素的内容最后面做操作 |
::before |
指定元素的内容最前面做操作 |
::before
和::after
这两个伪元素下有特有的属性content
,必须有这个属性。
1、attr() 调用当前元素的属性,可以方便的比如将图片的Alt提示文字或链接的Href地址显示出来,如下:
a:after {
content: “(” attr(href) “)”;
}
2、url() / uri() 用于引入媒体文件
h1:before{
content: url(log.png);
}
3、counter() 调用计数器,可以不使用列表元素实现序号功能。
h2:before{
counter-increment: chapter;
content: “Chapter” counter(chapter) ". "
}
overflow
的属性:visible(显示),hiddlen(隐藏),scroll(加滚动条),auto(浏览器适配,哪个方位溢出自动加滚动条)
:强制换行标签
img是一个行级元素,准确来说是一个行级块元素。
border{
border-width:10px;
border-style:solid | dashed | dotted | double | groove;/* 线 虚线 圆圈组合 双线 屋檐型*/
border-color:red;
/*复合设计*/
border:1px solid red;
border-radius:5px;/*边框圆角*/
}
img{
/* 图片四角的圆角*/
border-redius:15px;
/* 图片阴影设置 第一个参数x轴 第二个参数y轴 第三个参数阴影部分朦胧感 第四个参数颜色*/
box-shadow:5px 5px 5px #7E7E7E;
}
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>盒子模型title>
<style type="text/css">
html{
margin: 0px;
}
.div1{
width: 300px;
height: 200px;
padding: 20px 50px;
margin-top: 20px;
margin-right: auto;
margin-bottom: 40px;
margin-left: 0px;
background-color: #7FFFD4;
border-top: 3px dashed #DC143C;
border-right: 6px dotted #777;
border-bottom: 2px solid #0000FF;
border-left: 20px groove antiquewhite;
}
.div1_child{
width: 300px;
height: 200px;
margin: 20px;
background-color: #FEFEFE;
}
.div2{
width: 300px;
height: 100px;
padding: 20px 100px;
margin: 15px 20px;
background-color: orangered;
border: 10px double red;
}
img{
width: 500px;
height: 200px;
border-radius: 20px;
box-shadow: 5px 5px 5px #7E7E7E;
}
style>
head>
<body>
<div class="div1">
<div class="div1_child">
div>
div>
<div class="div2">div>
<hr />
<img src="../image/psc.png" />
body>
html>
注意:th浏览器默认会加粗文本和h1~h6标题标签一样
是指外部的整个table的boder;如图:
1.display:table-cell;
2.有些浏览器默认给单元格的border是2px,有些默认没有,可以用td自己设置。
td{
border:1px solid;
}
3.是否显示空的单元格:
empty-cells:hide;
隐藏空单元格
border-collapse:collapse | separate;
合并单元格,打开单元格。图片是separate打开单元格
border-layout:15px;
固定宽度,不随内容多少而变化单元格,内容多了会溢出;不设置的话单元格大小随内容而变化
caption-side:top | bottom;
设置标题在上还是在下。
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
caption{
caption-side: bottom;
}
.mytable{
width: 500px;
height: 520px;
border: 5px solid;
text-align: center;
vertical-align: middle;
/*border-collapse: collapse;*/
border-collapse: separate;
}
th{
text-align: center;
}
td{
border: 1px solid;
}
style>
head>
<body>
<table class="mytable">
<caption>标题caption>
<th>123th>
<tr>
<td>aaatd>
<td>bbbtd>
<td>ccctd>
tr>
<tr>
<td>aaatd>
<td>bbbtd>
<td>ccctd>
tr>
<tr>
<td>aaatd>
<td>bbbtd>
<td>ccctd>
tr>
table>
body>
html>
enabled 可用的
disabled 不可用的
checked 被选中的
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
input[type="text"]:disabled{
/*background-color: #008000;*/
color: red;
}
input[type="radio"]:checked{
margin-left: 50px;
margin-right: 50px;
}
input:enabled{
background-color: #7FFF00;
}
style>
head>
<body>
<form action="bg.html" method="post" enctype="multipart/form-data">
<input type="text" value="text" placeholder="文本框"/>
<input type="text" disabled="disabled" placeholder="不可用" value="111"/>
<input type="button" value="提交" />
<input type="radio" name="sex" checked="checked" />男
<input type="radio" name="sex" />女
form>
body>
html>
a.轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
b.轮廓(outline)属性指定元素轮廓的样式、颜色和宽度。
c.outline:red solid 5px;
属性 | 说明 | 值 | CSS |
---|---|---|---|
outline | 在一个声明中设置所有的轮廓属性 | *outline-color outline-style outline-width *inherit | 2 |
outline-color | 设置轮廓的颜色 | *color-name hex-number rgb-number *invert inherit | 2 |
outline-style | 设置轮廓的样式 | none dotted dashed solid double groove ridge inset outset inherit | 2 |
outline-width | 设置轮廓的宽度 | thin medium thick *length *inherit | 2 |
1.outline是不占空间的,既不会增加额外的width或者height(这样不会导致浏览器渲染时出现reflow或是repaint)
2.outline有可能是非矩形的(火狐浏览器下)
这是一个段落标签!
常写的在头标签里面用style
标签包起来的,注释方式:/*...*/
在头部用link
标签导入CSS文件
1.从css文件导入css文件
@import url("head.css");
@import url("nav.css");
@import url("content.css");
@import url("body.css");
2.css文件
@charset "utf-8";
.head{
width: 1140px;
height:125px ;
margin: 0px auto;
}
.head h4{
text-align: center;
color:#333 ;
font-size: 32px;
padding-top: 25px;
padding-bottom: 15px;
}
.head p{
text-align: center;
color:#999 ;
font-size: 16px;
}
3.导入html页面:
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/total.css"/>
<title>title>
head>
<body>
...
body>
html>
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>盒子模型title>
<style type="text/css">
html{
margin: 0px;
}
.div1{
width: 300px;
height: 200px;
padding: 20px 50px;
margin-top: 20px;
margin-right: auto;
margin-bottom: 40px;
margin-left: 0px;
background-color: #7FFFD4;
border-top: 3px dashed #DC143C;
border-right: 6px dotted #777;
border-bottom: 2px solid #0000FF;
border-left: 20px groove antiquewhite;
}
.div1_child{
width: 300px;
height: 200px;
margin: 20px;
background-color: #FEFEFE;
}
.div2{
width: 300px;
height: 100px;
padding: 20px 100px;
margin: 15px 20px;
background-color: orangered;
border: 10px double red;
}
img{
width: 500px;
height: 200px;
border-radius: 20px;
box-shadow: 5px 5px 5px #7E7E7E;
}
style>
head>
<body>
<div class="div1">
<div class="div1_child">
div>
div>
<div class="div2">div>
<hr />
<img src="../image/psc.png" />
body>
html>
样式优先级就近原则,从低到高依次是:浏览器默认设置、外部样式表、内部样式表、行内样式表。
css2D动画可以用于元素的旋转、缩放和位置移动,也可用于控制文字变形,纯css写法可以保持网页内文字保持可选。
通过使用 CSS transform 属性,您可以利用以下 2D 转换方法:
属性 | 描述 |
---|---|
transform | 向元素应用 2D 或 3D 转换。 |
transform-origin | 允许你改变被转换元素的位置。 |
transform-style | 规定被嵌套元素如何在 3D 空间中显示。 |
perspective | 规定 3D 元素的透视效果。 |
perspective-origin | 规定 3D 元素的底部位置。 |
backface-visibility | 定义元素在不面对屏幕时是否可见。 |
函数 | 描述 |
---|---|
matrix3d(n,n,n,n,n,n, n,n,n,n,n,n,n,n,n,n) | 定义 3D 转换,使用 16 个值的 4x4 矩阵。 |
translate3d(x,y,z) | 定义 3D 转化。 |
translateX(x) | 定义 3D 转化,仅使用用于 X 轴的值。 |
translateY(y) | 定义 3D 转化,仅使用用于 Y 轴的值。 |
translateZ(z) | 定义 3D 转化,仅使用用于 Z 轴的值。 |
scale3d(x,y,z) | 定义 3D 缩放转换。 |
scaleX(x) | 定义 3D 缩放转换,通过给定一个 X 轴的值。 |
scaleY(y) | 定义 3D 缩放转换,通过给定一个 Y 轴的值。 |
scaleZ(z) | 定义 3D 缩放转换,通过给定一个 Z 轴的值。 |
rotate3d(x,y,z,angle) | 定义 3D 旋转。 |
rotateX(angle) | 定义沿 X 轴的 3D 旋转。 |
rotateY(angle) | 定义沿 Y 轴的 3D 旋转。 |
rotateZ(angle) | 定义沿 Z 轴的 3D 旋转。 |
perspective(n) | 定义 3D 转换元素的透视视图。 |
下表列出了所有 CSS 过渡属性:
属性 | 描述 |
---|---|
transition | 简写属性,用于将四个过渡属性设置为单一属性。 |
transition-delay | 规定过渡效果的延迟(以秒计)。 |
transition-duration | 规定过渡效果要持续多少秒或毫秒。 |
transition-property | 规定过渡效果所针对的 CSS 属性的名称。 |
transition-timing-function | 规定过渡效果的速度曲线。 |
1.创建过渡效果,必须明确两件事:
**注意:**如果未规定持续时间部分,则过渡不会有效果,因为默认值为 0。
transtion:位置 时间;
参数:
all t;
width t;
height t;
width t,
height t;
2.指定过渡的速度曲线
transition-timing-function 属性规定过渡效果的速度曲线。
transition-timing-function 属性可接受以下值:
transition-delay 属性规定过渡效果的延迟(以秒计)。
Animation功能与Transition功能相同,都是通过改变元素的属性值来实现动画效果的,它们的区别在于使用Transition时只能通过指定属性的开始与结束值,然后在这两个属性值之间进行平滑的过渡来实现动画效果,因此不能实现较为复杂的动画效果,而Animation则可以通过定义多个关键帧来实现更为复杂的动画效果。
属性 | 说明 | 初始值 |
---|---|---|
animation-name | 定义动画名称 | none |
animation-duration | 定义动画时间 | 0,当值为负时默认为0 |
animation-timing-function | 定义动画播放方式 | ease |
animation-delay | 定义动画延迟播放时间 | 0 |
animation-iteration-count | 定义动画播放次数 | 1、播放一次,infinte重复播放 |
animation-direction | 定义动画播放方向 | normal |
1.定义动画名称、执行时间、动作等属性描述。
2.使用 @keyframes
关键帧定义动画的执行过程,可以通过百分比来定义分多段执行。
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.anim{
width: 400px;
height: 200px;
background-color: #00FFFF;
margin: 0 auto;
border-radius: 50%;
}
.ani_img{
width: 200px;
height: 100px;
/*line-height: 100px;*/
margin: 100px auto;
background-image: url(../image/psc1.png);
animation-name: img_color;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: .25s, 100ms;
animation-iteration-count: infinite;
}
@keyframes change_color{
from{
background-color: #00FFFF;
}
to{
background-color: #0000FF;
}
}
@keyframes img_color{
0%{
transform: rotateY(0deg);
}
25%{
transform: rotateZ(360deg);
}
50%{
transform: rotateY(720deg);
}
75%{
transform: rotateZ(360deg);
}
100%{
transform: rotateY(0deg);
}
}
.anim:hover{
cursor: pointer;
/*
1.用动画名调用动画
* */
animation-name: change_color;
/*
2.定义动画时间,初始为0,负值认为0
* */
animation-duration: 2s;
/*
3.定义动画播放方式
* */
animation-timing-function: linear;
/*
4.定义动画播放时间 默认0
* */
animation-delay: .25s, 100ms;
/*
5.定义动画播放次数 1是一次 infinite重复
* */
animation-iteration-count: 1;
/*
6.定义动画播放方向
* */
animation -moz-animation-direction: reverse;
}
style>
head>
<body>
<div class="anim">
<div class="ani_img">
div>
div>
body>
html>
CSS的盒子模型是具备内容(content)、内边距(padding)、边框(border)、外边距(margin)属性的HTML元素。
说明:如果四个方向分开写要按照顺时针方向,从margin-top开始
属性 | 解释 |
---|---|
margin-top | 上外边距 |
margin-right | 右外边距 |
margin-bottom | 下外边距 |
margin-left | 左外边距 |
margin | 上 右 下 左(margin:1px 2px 3px 4px; ) |
margin | 上下 左右(margin:2px 4px; ) |
margin | 居中(margin:0 auto; ) |
border-top
:上边界
border-bottom
:下边界
border-left
:左边界
border-right
:右边界
写法和上面的类似,一个操作
border-width:边界宽度
border-style:边界样式
border-color:边界颜色
border-sytle
属性可取值:
none:定义无边框。
hidden:与 “none” 相同。不过应用于表时除外,对于表,hidden 用于解决边框冲突。
dotted:定义点状边框。在大多数浏览器中呈现为实线。
dashed:定义虚线。在大多数浏览器中呈现为实线。
solid:定义实线。
double:定义双线。双线的宽度等于 border-width 的值。
groove:定义 3D 凹槽边框。其效果取决于 border-color 的值。
ridge:定义 3D 垄状边框。其效果取决于 border-color 的值。
inset:定义 3D inset 边框。其效果取决于 border-color 的值。
outset:定义 3D outset 边框。其效果取决于 border-color 的值。
inherit:规定应该从父元素继承边框样式。
padding-top
:上部填充
padding-bottom
:下部填充
padding-left
:左部填充
padding-right
:右部填充
写法与margin相同
width和height
盒子的宽度 = width + padding-left + padding-right + border-left + border-right
盒子的高度 = height + padding-top + padding-bottom + border-top + border-bottom
高:height+border+padding+margin
宽:width+border+padding+margin
1.概念:文档流是指网页中标签在浏览器中呈现时的排列方式。块标签默认从上向下排列,行标签从左向右排列,一行排满另起一行排列,这种排列规则称为标准文档流。标准文档流是网页元素的默认布局方式。
2.标准文档流会发生的现象:
1.概念:默认情况下,盒子位于标准文档流中,但是盒子可以向左或向右浮动,浮动的盒子不在标准文档流之中。块标签独占一行,如果需要将块标签放到同一行,就需要设置浮动。
2.特点:
3.语法:float:left | right;
向左或向右浮动
4.清除浮动:打破横向排列,不允许有浮动对象
语法:clear: none | left| right | both;
不清除,清除左边,清除右边,清除两边
5.盒子的排列方式:left、right、margin:0 auto;【左 右 中】
定位position属性不可滥用,只有在一些特定的地方才用
默认定位:static 定位
HTML 元素的默认值,即没有定位,遵循正常的文档流对象。
静态定位的元素不会受到 top, bottom, left, right影响。
1.fixed固定定位:
2.relative相对定位:
3.absolute绝对定位:
4.sticky粘性定位:
理解:sticky粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。
它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。
元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。
属性:这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
特点:百度新闻上面蓝色的导航栏…
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>position定位title>
<style type="text/css">
*{
padding: 0;
margin: 0;
font-size: 14px;
}
.div1{
width: 400px;
height: 200px;
background-color: #0000FF;
}
.div2{
width: 400px;
height: 150px;
background-color: #FF4500;
position: relative;
top: 10px;
left: 20px;
}
.div3{
width: 400px;
height: 100px;
background-color: #FFEBCD;
position: absolute;
top: 30px;
left: 50px;
/*值约小 在y轴上越往下 负值就放到下面去了*/
z-index: 0;
}
.div3_child{
width: 300px;
height: 90px;
background-color: aqua;
position: absolute;
top: 20px;
left: 400px;
}
.div4{
width: 400px;
height: 100px;
background-color: #008000;
position: fixed;
top:300px;
left: 500px;
}
.div5{
height: 900px;
width: 100px;
background-color: chartreuse;
}
.div6{
width: 600px;
height: 50px;
background-color: darkorchid;
font-size: 10px;bc
position: sticky;
bottom: 400px;
}
style>
head>
<body>
<div class="div1">
默认定位static,文档流
div>
<div class="div2">
相对定位relative,不会脱离文档流,以自己之前的位置为参照进行偏移
div>
<div class="div3">
1.绝对定位absolute,脱离文档流,body下面的盒子的position设置为绝对则以body的static位置(窗口左上角)为参照物<br />
2.不设置参数则会在原位置,还是脱离文档流的,下面的元素会顶上来
<div class="div3_child">
3.如果absolute绝对定位的父容器或者祖先容器有使用relative相对、fixed固定、absolute绝对定位的一个,则参照之前这么设置的那个容器位置的基础上来做位置偏移
div>
div>
<div class="div4">
<span>fixed固定定位,固定在某个位置,会脱离文档流,以窗体左上角为参照,百度的搜索框span>
div>
<div class="div5">
占高度。。。。
div>
<div class="div6">
1.sticky黏性定位,滚动页面跟着动,达到设定位置就固定了。可以说是static(没有定位) 和 固定定位fixed 的结合<br />
2.设置 position:sticky 同时给一个 (top,bottom,right,left) 之一即可
使用条件:
父元素不能overflow:hidden或者overflow:auto属性。
必须指定top、bottom、left、right4个值之一,否则只会处于相对定位
父元素的高度不能低于sticky元素的高度
sticky元素仅在其父元素内生效
div>
body>
html>
元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素
z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)
一个元素可以有正数或负数的堆叠顺序,值越大位置越前,默认都是0
1.内部的Box会在垂直方向,一个接一个地放置。
2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。
3.每个盒子(块盒与行盒)的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
4.BFC的区域不会与float box重叠。
5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
6.计算BFC的高度时,浮动元素也参与计算。
图片和字体底部不是对齐的。
解决办法:(一般用第二个)
上面三种办法中,1和3会影响父元素内的文字状态,所以第二种办法比较好。
1.行高:每个文本行中可以看做有四条线:顶线,中线,基线和底线。类似英语作业本上的“四线三格”。
line-height 行高就是指两个文本行相同线之间的距离。同一行的顶线到底线的距离就是内容区域高度,内容区域的高度只与字体和字号有关,在有的字体(simsun等)中,字体大小等于内容区域高度。上一行的底线和下一行的顶线的距离是行间距。可以看出,行高 = 内容高度+行间距,当我们改变 line-height 的值时,内容高度是不变的,改变的只是行间距,从而改变了行高。
2.高度:一个空元素的高度默认是0,而当这个元素中有内容时,元素就会被撑开,会有高度。这个高度是由 line-height撑开的。
3.行内框盒:
所以在没有设置固定高度的元素中,高度是由这个元素中所有行框高度叠加而成的
Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为 Flex 布局。
.box{ display: flex; }
行内元素也可以使用 Flex 布局。
.box{ display: inline-flex; }
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"
容器的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。
3.容器默认存在两根轴:水平的主轴和垂直的交叉轴。主轴的开始位置(与边框的交叉点)叫做主轴start
,结束位置叫做主轴end
;交叉轴的开始位置叫做交叉轴start
,结束位置叫做交叉轴end
。
项目默认沿主轴排列。主轴和交叉轴的方向默认如图,可以用flex-direction属性改变。
属性 | 作用 | 取值 |
---|---|---|
flex-direction |
决定项目的排列方向 | flex-direction: row | row-reverse | column | column-reverse; |
flex-wrap | 默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap 属性定义,如果一条轴线排不下,如何换行。 |
flex-wrap: nowrap | wrap | wrap-reverse; |
flex-flow | flex-direction属性和 flex-wrap属性的简写形式 | 默认值为 row nowrap |
|
justify-content |
定义了项目在主轴上的对齐方式。 | justify-content: flex-start | flex-end | center | space-between | space-around; |
align-items | 定义项目在交叉轴上如何对齐 | align-items: flex-start | flex-end | center | baseline | stretch; |
align-content |
定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。 | align-content: flex-start | flex-end | center | space-between | space-around | stretch; |
1.flex-direction属性值:
row
(默认值):主轴为水平方向,起点在左端。
row-reverse
:主轴为水平方向,起点在右端。
column
:主轴为垂直方向,起点在上沿。
column-reverse
:主轴为垂直方向,起点在下沿。
2.flex-wrap属性值:
nowrap
(默认):不换行。
wrap
:换行,第一行在上方。
wrap-reverse
:换行,第一行在下方。
3.justify-content的属性值(具体对齐方式与轴的方向有关。下面假设主轴为从左到右。):
flex-start
(默认值):左对齐
flex-end
:右对齐
center
: 居中
space-between
:两端对齐,项目之间的间隔都相等。
space-around
:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
4.align-items的属性值(具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。):
flex-start
:交叉轴的起点对齐。flex-end
:交叉轴的终点对齐。center
:交叉轴的中点对齐。baseline
: 项目的第一行文字的基线对齐。stretch
(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。5.align-content的属性值(多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用)
flex-start
:与交叉轴的起点对齐。
flex-end
:与交叉轴的终点对齐。
center
:与交叉轴的中点对齐。
space-between
:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around
:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch
(默认值):轴线占满整个交叉轴。
属性 | 作用 | 值 |
---|---|---|
order |
定义项目的排列顺序。数值越小,排列越靠前,默认为0。 | order: (排前面得是负值); |
flex-grow | 定义项目的放大比例,默认为0 ,即如果存在剩余空间,也不放大。 |
flex-grow: ; /* default 0 */ |
flex-shrink | 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 | flex-shrink: ; /* default 1 */ |
flex-basic | 定义项目在主轴上的初始大小默认auto | flex-basis: | auto; /* default auto */ |
flex | 上面三个的缩写 | flex: none | [ <‘flex-grow’> <‘flex-shrink’>? || <‘flex-basis’> ] |
align-self | 允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items 属性。默认值为auto ,表示继承父元素的align-items 属性,如果没有父元素,则等同于stretch 。 |
align-self: auto | flex-start | flex-end | center | baseline | stretch; |
1.flex-grow:如果所有项目的flex-grow
属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow
属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
2.flex-shrink:如果所有项目的flex-shrink
属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink
属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
3.flex-basic:定义了在分配多余空间之前,项目占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto
,即项目的本来大小。
4.flex
属性是flex-grow
, flex-shrink
和 flex-basis
的简写,默认值为0 1 auto
。后两个属性可选。
该属性有两个快捷值:auto
(1 1 auto
) 和 none (0 0 auto
)。
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.parent{
width: 600px;
height: 500px;
background-color: azure;
display: flex;
/*flex-direction: row-reverse;*/
/*flex-direction: column;*/
/*flex-direction: column-reverse;*/
/*flex-wrap: wrap;*/
flex-wrap: nowrap;
/*flex-flow: row wrap;*/
/*justify-content: center;*/
/*justify-content: flex-end;*/
/*justify-content: space-between;*/
/*justify-content: space-around;*/
/*justify-content: space-evenly;*/
/*align-content: center;*/
/*align-content: space-around;*/
align-items: baseline;
/*align-items: flex-start;*/
/*align-items: flex-end;*/
/*align-items: center;*/
}
.parent div{
width: 80px;
height: 50px;
line-height: 20px;
}
.parent .box3{
width: 80px;
height: 100px;
line-height: 50px;
order: -2;
flex-basis: 30px;
flex-grow: 1;
flex-shrink: 0;
align-self: center;
}
.box1{
background-color: rosybrown;
}
.box2{
background-color: #00FFFF;
}
.box3{
background-color: cadetblue;
}
.box4{
background-color: rosybrown;
}
.box5{
background-color: #00FFFF;
}
.box6{
background-color: cadetblue;
}
.box7{
background-color: cadetblue;
}
.box8{
background-color: rosybrown;
}
.box9{
background-color: #00FFFF;
}
.box10{
background-color: cadetblue;
}
style>
head>
<body>
<div class="parent">
<div class="box1">box1div>
<div class="box2">box2div>
<div class="box3">box3div>
<div class="box4">box4div>
<div class="box5">box5div>
<div class="box6">box6div>
<div class="box7">box7div>
<div class="box8">box8div>
<div class="box9">box9div>
<div class="box10">box10div>
<div class="box9">box11div>
<div class="box10">box12div>
div>
body>
html>
header标签定义一个页面或一个区域的头部。
header 元素代表“网页”或“section”的页眉。 通常包含h1-h6元素或hgroup,作为整个页面或者一个内容块的标题。也可以包裹一节的目录部分,一个搜索框,一个nav,或者任何相关logo。
<header>头部header>
nav标签定义导航链接。
nav元素代表页面的导航链接区域。用于定义页面的主要导航部分。
<nav>
<ul>
<li>HTML 5li>
<li>CSS3li>
<li>jQueryli>
ul>
nav>
aside标签定义侧边栏。
aside元素被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等。
<article>
<p>内容p>
<aside>
<h1>作者简介h1>
<p>这里是一段作者的简介内容。p>
aside>
article>
<main>
<h1>Web Browsersh1>
<p>Google Chrome、Firefox 以及 Internet Explorer 是目前最流行的浏览器。p>
<article>
<h1>Google Chromeh1>
<p>Google Chrome 是由 Google 开发的一款免费的开源 web 浏览器,于 2008 年发布。p>
article>
<article>
<h1>Internet Explorerh1>
<p>Internet Explorer 由微软开发的一款免费的 web 浏览器,发布于 1995 年。p>
article>
<article>
<h1>Mozilla Firefoxh1>
<p>Firefox 是一款来自 Mozilla 的免费开源 web 浏览器,发布于 2004 年。p>
article>
main>
section标签定义一个区域。
section元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照主题的分段;“节”可以是指一个页面里的分组。
<section>section标签section>
article标签定义一篇文章。
article代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。譬如论坛的帖子,博客上的文章,一篇用户的评论,一个互动的widget小工具。
<article>
<h1>一篇文章h1>
<p>文章内容..p>
article>
footer标签页脚。
footer元素代表“网页”或“section”的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。如果footer元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似
信息。
<footer>
<p>页脚p>
footer>
<p>
<mark>11月8日下午mark>,天津召开疫情防控新闻p>
和md文档标题折叠很像
<details>
<summary>大前端开发summary>
<h2>大前端开发包括:h2>
<ul>
<li>组件化开发li>
<li>模块化开发li>
<li>自动化开发li>
<li>后台开发li>
ul>
details>
属性:value(当前值)/min(最小值)/max(最大值)/low(指定范围的最小值)/high(指定范围最大值)
<meter value="110" min="80" max="120">meter>公里/小时
属性:value(规定已经完成多少任务)/max( 规定任务一共需要多少工作。)
<p>任务已完成:p><progress value="70" max="100">progress> 70%
<dialog open>
<span>×span>
<h2>大前端开发包括:h2>
<ul>
<li>组件化开发li>
<li>模块化开发li>
<li>自动化开发li>
<li>后台开发li>
ul>
dialog>
<figure>
<h4>风起了h4>
<img src="../img/" alt="图片" />
<p>起风扬起你的裙角p>
figure>
css属性
flex弹性布局
弹性布局
行高